一,机器指令
-
机器指令是计算机系统执行的基本命令,是中央处理器执行的
基本单位 -
指令由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码
-
指令完成各种算术逻辑运算、数据传输、控制流跳转征码
1.1 指令执行过程
-
CPU 根据 PC(程序计数器) 取出指令,放入 IR(指令暂存器),并对指令译码,然后发出各种控制命令,执行一系列的微操作,从而完成一条指令的执行
-
一种指令执行步骤如下:
-
取指: 根据 PC,从存储器或高速缓冲存储器中取出指令,放到 IR 中
-
解码:由译码器来解译 IR 当中的指令,以决定其执行的行为
-
执行:连接到 CPU 的各个部件,执行运算,产生结果并写回。同时在 CC 位中设置运算结论标志。
-
跳转指令会重新操作 PC
-
其他指令则递增 PC 值
-
-
1.2 指令执行周期与指令流水线
-
指令执行周期
-
指令流水线
-
在解码一指令的时候,取指二指令就开始了
-
在执行一指令的时候,解码二指令和取指三指令就开始了
-
极大地提高了 CPU 的处理效率
-
1.3 特权指令和非特权指令
-
用户程序并非能够使用全部机器指令,那些与计算机核心资源相关的特殊指令会被保护
-
如:启动 I/O 指令、置 PC 指令等等
-
核心资源相关的指令只能被操作系统程序使用
-
-
特权指令:只能被操作系统内核使用的指令
-
非特权指令:可以被所有程序使用的指令
二,处理器模式
操作系统如何实现特权指令和非特权指令在执行上的界分呢?
-
计算机通过设置
处理器模式位,来实现特权指令管理 -
计算机一般设置 0、1、2、3 等四种运行模式,分别对应:
-
0 操作系统内核
-
1 系统调用
-
2 共享库程序
-
3 用户程序等保护级别
-
-
0 模式可以执行全部指令,3 模式只能执行非特权指令;其他每种模式可以规定执行的指令子集
-
一般来说,现代操作系统
只使用了 0 和 3 两种模式,对应内核模式和用户模式
2.1 处理器模式的切换
-
简称模式切换,包括
“用户模式 => 内核模式”和“内核模式 => 用户模式”的转换 -
中断、异常或系统异常等事件导致用户程序向 OS 内核切换,触发:用户模式 => 内核模式-
程序运行时发生并响应中断
-
程序运行时发生异常
-
程序请求操作系统服务
-
-
OS 内核处理完成后,调用
中断返回指令(如 intel 的 iret)触发:内核模式 => 用户模式