一、内核态、用户态 的切换:
CPU 上会运行两种程序,一种是操作系统内核程程序,一种是应用程序。
内核态→用户态:执行一条特权指令--修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。
二、中断的分类:
依据中断信号是来自cpu内部还是cpu外部分为内中断和外中断。
内中断(异常):陷入,故障,终止。
陷入:在执行应用程序的时候执行陷入指令(访管指令),主动向操作系统让出cpu的主动权。
故障:由错误条件引起,可能被内核程序修复。内核程序修复故障后会将cpu的主动权让给应用程序。如:缺页故障。
终止:由致命错误引起,不能被内核程序修复。因此一般不将cpu的主动权还给应用程序。如:整数除0,非法使用特权指令。
外中断:时钟中断,IO中断请求
三、中断机制的基本原理:
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。中断是让cpu从用户态转为内核态的唯一方式。
四、什么时候要进行系统调用?
应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服0务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。