应用程序只能使用“非特权指令”,如: 加法指令、减法指令等
操作系统内核作为 “管理者”,有时会让CPU执行一些 “特权指令”,如:内存清零指令。这些指令影响重大, 只允许“管理者”——即操作系统内核来使用
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU 执行一条指令前就能判断出其类型
CPU 有两种状态,“内核态”和“用户态”
别名:内核态=核心态=管态;用户态=目态
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
内核态→用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统 将主动让出CPU使用权
用户态→内核态:由**“中断”**引发,硬件自动完成状态转换过程,触发中断信号意味着操作系统将强行夺 回CPU的使用权
除了非法使用特权指令之外,还有很多事件 会触发中断信号。一个共性是,但凡需要操作系统介入的地方,都会触发中断信号
来看这个情境
刚开机时,CPU 为“内核态”,操作系统内核程序先上CPU运行
开机完成后,用户可以启动某个应用程序
操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上CPU运行
操作系统内核在让出 CPU之前,会用一条特权指令把 PSW 的标志位设置为“用户态”
应用程序运行在“用户态”
此时,一位猥琐黑客在应用程序中植入了一条特权指令,企图破坏系统…
CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”
这个非法事件会引发一个中断信号
CPU检测到中断信号后,会立即变为“核心态”,并停止运 行当前的应用程序,转而运行处理中断信号的内核程序
“中断”使操作系统再次夺回CPU的控制权
操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序
在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序(第二章进程管理相关内容)
“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU 的控制权
没有中断机制的后果
CPU两种状态的转换
与当前执行的指令有关,中断信号来源于CPU内部
若当前执行的指令是非法的,则会引发一个中断信号
有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指 令会引发一个内部中断信号,该指令会引发一个内部中断信号
与当前执行的指令无关,中断信号俩源于CPU外部
每一条指令执行结束时,CPU都会例行检查 是否有外中断信号
例1 时钟中断——由时钟部件发来的中断信号
例2 I/O中断——由输入/输出设备发来的中断信号
传递系统调用参数→执行陷入指令(用户态)→ 执行相应的内请求核程序处理系统调用(核心态) → 返回应用程序
注意:
上一篇:下沉市场投资热度提升 7天酒店打造酒店投资“极致性价比”
下一篇: 观看音乐之声观后感范文