1、中断
由于外设等原因导致的中断,系统将设置中断标记,将内部和外部事件设置中断标记,中断事件将会有相应的ID标记;软件方面将会保存当前处理状态,然后CPU将会根据中断ID跳到相应的中断服务程序处理,处理完将清楚中断标记,恢复之前保存的处理状态。
中断是对应用程序透明的。
负责中断请求的是连接外围设备的I/O控制器,负责实施中断处理程序的是CPU,为了进行,为了进行区分,外围设备的中断请求会使用不同于I/O端口的其他编号,该编号称为中断编号。
中断设备.png
在I/O控制器和CPU中有中断控制器的IC进行缓冲,可把从多个外围设备发出的中断请求有序地传递给CPU
CPU接收到来自中断控制器的中断请求后,会把当前正在运行的主程序中断,并切换到中断处理程序。中断处理程序首先会将CPU所有寄存器中的数组保存到内存中的栈中,在中断处理程序完成外围设备的输入输出后,把栈中保存的数值还原到CPU寄存器中,再进行主程序的处理。
中断请求处理顺序.png由于大部分的外围设备,都会频繁地发出中断请求,使用中断可以实时处理从外围设备输入的数据。例如实现键盘输入的文字实时显示在显示器,而对于打印机等输出用的外围设备中,可使用中断来通知外围设备接收数据的状态
2、异常
异常同样也会保存异常编号,保存现场,异常处理-将会杀死异常的程序,或者重新执行异常指令,处理完会恢复现场
3、系统调用
应用程序主要是通过高层次的API接口而不是直接进行系统调用,Win32 API用于Windows, POSIX API用于POSIX-based systems, 这些API定义了能提供哪些系统调用,完成哪些功能。应用程序通过访问API库进行系统调用,操作系统完成从用户态到内核态的转换,控制权从应用程序转换为操作系统,注意这里有堆栈的转换,开销较大。
网友评论