目录
声明:来源b站操作系统视频课程,如果需要请留言,仅供学习参考,如有错误欢迎指出。
一.中断和异常处理机制
·中断是外设的事件
·异常是内部cpu的时间
·中断和异常迫使cpu访问一些被中断和异常服务访问的功能。
1.硬件
·设置中断标记(CPU初始化)
·将内部、外部时间设置中断标记
· 中断事件的ID
-- 中断事件的ID指程序访问的中断向量地址
2.软件
·保存当前处理状态
·中断服务程序处理
·清除中断标记
·恢复之前保存的处理状态
二.异常:异常编号
·保存现场
·异常处理
·杀死产生了异常的程序
·重新执行异常指令
·恢复现场
三.系统调用
·程序访问主要是通过高层次的API接口而不是直接进行系统调用
·Win32 API 用于 Windows
·POSIX API 用于 POSIX-based systems(包括UNIX,LINUX,MAC PS X的所有版本)
·Java API 用于 JAVA虚拟机(JVM)不是系统调用,不是一个层次
1.系统调用具体实现
应用程序通过Library Code来访问系统调用的接口,会触发从用户态到内核态的转换,从而使得控制权从应用程序交到操作系统,操作系统可以对应用程序发出的系统调用参数(系统调用ID号)做出标识,识别系统调用参数,完成具体服务。
用户态:应用程序在运行中,cpu特权级低,不能访问特殊的机器指令,不能直接访问I/O
内核态:操作系统在运行中,操作系统能执行cpu提供的任何指令,安全性得到保障
2.系统调用和传统的函数调用区别
1.当应用程序发出函数调用是在一个栈空间完成函数的传递和参数的返回。但是在系统调用过程中,应用程序和操作系统拥有各自的堆栈,也就意味着当应用程序发出系统调用后,切换到内核时候,需要切换堆栈,同时需要完成特权级的转换。同时会产生开销,也就意味着进行系统调用的时候,开销会比函数调用大的多,开销带来的回报就是安全和可靠。
3.跨越操作系统边界的开销
1.为了操作系统正常处理异常、中断、系统调用,需要在操作系统正常工作前就需要完成映射表,负责处理中断号,系统调用号由哪个中断历程,系统调用历程完成。
2.堆栈保存和恢复。
3.操作系统会对应用程序发出的系统调用进行参数检查
4.操作系统有可能在处理完某些数据会从内核态导出到用户态(拷贝)。
5.cpu的的刷新
声明:来源b站操作系统视频课程,如果需要请留言,仅供学习参考,如有错误欢迎指出。