Skip to content

1.3 操作系统运行环境

字数
841 字
阅读时间
4 分钟

配合课本笔记共同使用

CPU的两种状态:“**内核态**”和“**用户态**”

处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

一、内核态、用户态的切换

CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位(标志位)用于表示CPU目前的状态
PSW的标志位为0时表示CPU处于内核态,为1时处于用户态
当然,也有些CPU是反着来的,但是这无关紧要,因为我们学习的是对应状态的转化以及对应状态的作用

内核态 用户态:执行一条特权指令 ---- 修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态 内核态:由“中断”引发,硬件自动完成变态过程(CPU状态切换),触发中断信号意味着操作系统将强行夺回CPU的使用权 除了非法使用特权指令(如黑客入侵,使用特权指令破坏电脑)外,还有很多事件会触发中断信号。一个共性是:但凡需要操作系统介入的地方,都会触发中断信号

二、中断机制的基本原理

CPU会先检测中断信号,随后再通过中断向量表找到对应的中断处理程序

中断向量表最适合使用数组来实现

如何检测中断信号? 内中断:CPU在执行指令时会检查是否有异常发生 外中断:每个指令周期末尾,CPU都会检查是否有外中断信号需要处理

三、系统调用

1. 系统调用与库函数的区别

2. 系统调用的过程

牢记

  1. 陷入指令 :用户态执行
  2. 发出系统调用请求:用户态;处理系统调用:核心态
  3. 系统调用主要处理两件事情:切换状态、跳转到对应的内核程序(可以说系统调用是在用户态下实现的)

四、中断处理的全过程

需要多熟悉,有些题目会考察对该过程的了解情况,例如询问保存断点、更改CPU为内核态等是否为操作系统完成,此时要清楚其到底是操作系统完成还是硬件完成,这要求考生对中断处理过程有所了解

上部分为硬件完成,下部分为操作系统完成

将CPU模式改为内核态是在关中断之前,所以是由硬件完成的;而变为用户态则是在开中断之后实现的,即由操作系统完成

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写