第二讲 启动、中断、异常和系统调用

启动、中断、异常和系统调用 \orange{\huge{启动、中断、异常和系统调用}} 启动、中断、异常和系统调用

启动

D I S K DISK DISK:存放 O S OS OS

B I O S BIOS BIOS:基本 I / O I/O I/O处理系统.

B o o t l o a d e r Bootloader Bootloader:加载 O S OS OS 将 O S 从硬盘加载到内存使得 C P U 可以执行 O S \red{将OS从硬盘加载到内存使得CPU可以执行OS} OS从硬盘加载到内存使得CPU可以执行OS。一般存放在硬盘的第一个主引导扇区,使得 O S OS OS非常方便的寻找。 O S OS OS B o o t l o a d e r Bootloader Bootloader加载到内存中之后, C P U CPU CPU的控制权就交给了 B o o t l o a d e r Bootloader Bootloader B o o t l o a d e r Bootloader Bootloader将很多关于 O S OS OS本身的数据加载到内存中,大大增加 O S OS OS的加载速度。

在这里插入图片描述 P O S T POST POST:加电自检。

操作系统与设备和程序交互

外设 \red{外设} 外设:异常、中断
软件 \red{软件} 软件:系统调用

系统调用: \blue{系统调用:} 系统调用:
应用程序 主动 \red{主动} 主动向操作系统发出服务请求。

异常: \blue{异常:} 异常:
非法指令或者其他的坏的处理状态。

中断: ( 多指设备 ) \blue{中断:}(\red{多指设备}) 中断:(多指设备)
来自不同硬件设备的计时器和网络的中断。

为什么上层软件不能够直接调用底层硬件?

计算机的 O S OS OS是内核,相对来讲上层的软件是比较边缘的,上层的软件是“不值得信任的”,而内核 O S OS OS是可以获得信任权的。只有内核才能够执行特权的指令。并且通过 O S OS OS调用底层硬件更加快捷方便。

中断、异常、系统调用辨析

产生根源: \red{产生根源:} 产生根源:

  1. 中断:外设有了问题。
  2. 异常:应用程序意向不到的行为。
  3. 系统调用:应用程序请求操作提供服务。 主动要求 \color{olive}{主动要求} 主动要求

处理时间: \red{处理时间:} 处理时间:

  1. 中断:异步
  2. 异常:同步
  3. 系统调用:异步( 返回时间 \color{olive}{返回时间} 返回时间)或者同步

响应: \red{响应:} 响应:

  1. 中断:持续,对用户应用程序是透明的。
  2. 异常:杀死或者重新执行意向不到的应用程序。
  3. 系统调用:等待和持续。

中断和异常的处理机制

硬件: \red{硬件:} 硬件:

设置中断标记( C P U CPU CPU初始化)

  1. 将内部、外部事件设置中断标记。
  2. 中断事件的 I D ID ID

整体流程: \blue{整体流程:} 整体流程:硬件中设定好中断标记后,如果出现了中断,会产生一个中断标记号( I D ID ID), C P U CPU CPU将中断标记号发送给 O S OS OS O S OS OS就可以通过中断标记号分析出哪里出现了中断。

软件: \red{软件:} 软件:

中断

  1. 现场保护:保存当前处理状态。
  2. 中断服务程序处理。
  3. 清楚中断标记。
  4. 恢复之前保护的处理现场。

异常:异常编号

  1. 保存现场
  2. 异常处理:杀死产生异常的程序,重新执行异常指令等操作
  3. 恢复现场

系统调用

程序访问主要是通过高层次的 A P I 接口而不是直接进行系统调用。 \red{程序访问主要是通过高层次的API接口而不是直接进行系统调用。} 程序访问主要是通过高层次的API接口而不是直接进行系统调用。

用户态: \red{用户态:} 用户态: O S OS OS的状态之一,在这个状态下有很多涉及高等权限的指令是无法被执行的。

内核态: \red{内核态:} 内核态: O S OS OS状态之一,在这个状态下 所有 \color{olive}{所有} 所有的指令 O S OS OS都能够执行,权限非常的大。

完整流程: \blue{完整流程:} 完整流程:
当软件进行系统调用的时候会发生 用户态 → 内核态 用户态→内核态 用户态内核态两态之间的转换。两态转换后将操作权限由软件转移给 O S OS OS,再由 O S OS OS完成后续的操作。

函数调用和系统调用

函数调用: \red{函数调用:} 函数调用:软件进行函数调用的时候,使用的是 同一个堆栈 \color{olive}同一个堆栈 同一个堆栈,只需要在这一个堆栈进行传参和返回参数即可。 速度很快 \blue{\huge{速度很快}} 速度很快

系统调用: \red{系统调用:} 系统调用:系统调用的时候, 与软件相关的堆栈和处于内核态的 O S 使用的堆栈不是一个堆栈 \color{olive}与软件相关的堆栈和处于内核态的OS使用的堆栈不是一个堆栈 与软件相关的堆栈和处于内核态的OS使用的堆栈不是一个堆栈,这就使得系统调用的时候也需要多个堆栈之间的数据传输。 非常安全 \blue{\huge{非常安全}} 非常安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值