# 内容:OS的中断、异常、系统调用
# 日期:2020 2 14 ~
OS 无非就是一个系统软件,直接与硬件底层打交道,比如显示器 键盘 鼠标,这些硬件设备连接到主板上,OS立刻就知道是什么设备,能不能用有没有什么问题。其中---> 中断处理就是很重要的处理手段,根据不同硬件发送的不同中断请求,CPU会把中断的事件告知OS,然后OS进行相应处理。
中断:
- 设置中断标记(CPU硬件初始化)
- 将内部、外部事件设置中断标记
- 中断事件的ID
PS :不同设备发送的中断具有不同的标记,CPU知道是什么标记之后就移交中断ID信息给OS(软件)处理
- 软件处理中断(OS)
- 保持当前处理状态
- 中断服务程序处理
- 清除中断标记
- 处理完成,恢复之前的状态
PS: OS 软件方面接受到CPU发来的中断信息后进行中断服务处理,完成设备需要的服务,服务完成后将恢复到之前的状态(数据、寄存器地址这些)
异常:
- CPU发现异常,发送异常编号之后
- 软件方面保存现场
- 异常处理
- 杀死发生异常的程序
- 重新执行异常指令
- 恢复现场
PS:举一个经常遇到的事情,比如你鼠标型号不对,偶然情况下怀了, 电脑是不是弹出异常警告,这就是异常处理的过程,在此期间,OS可能会放弃这个发生异常的设备,或者进行服务升级来纠正或者适应这个异常。
系统调用:
OS与应用程序之间的连接,比如API接口,OS底层集成了API以便于应用程序调用,比如一个C语言程序,print() 函数在执行它的时候,会产生系统调用,系统会调用Write()API进行处理显示什么的,操作系统的主要功能是为管理硬件资源和为应用函数开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。
API:
- win32 API 用于window
- POSIX API 用于 POSIX-bassed systems (包括 UNIX LINUX Mac OS的所有版本)