2.2 指令与处理器模式

143 阅读3分钟

一,机器指令

  • 机器指令是计算机系统执行的基本命令,是中央处理器执行的基本单位

  • 指令由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码

  • 指令完成各种算术逻辑运算、数据传输、控制流跳转征码

1.1 指令执行过程

  • CPU 根据 PC(程序计数器) 取出指令,放入 IR(指令暂存器),并对指令译码,然后发出各种控制命令,执行一系列的微操作,从而完成一条指令的执行

  • 一种指令执行步骤如下:

    • 取指: 根据 PC,从存储器或高速缓冲存储器中取出指令,放到 IR 中

    • 解码:由译码器来解译 IR 当中的指令,以决定其执行的行为

    • 执行:连接到 CPU 的各个部件,执行运算,产生结果并写回。同时在 CC 位中设置运算结论标志。

      • 跳转指令会重新操作 PC

      • 其他指令则递增 PC 值

1.2 指令执行周期与指令流水线

  • 指令执行周期

    image.png

  • 指令流水线

    image.png

    • 在解码一指令的时候,取指二指令就开始了

    • 在执行一指令的时候,解码二指令和取指三指令就开始了

    • 极大地提高了 CPU 的处理效率

1.3 特权指令和非特权指令

  • 用户程序并非能够使用全部机器指令,那些与计算机核心资源相关的特殊指令会被保护

    • 如:启动 I/O 指令、置 PC 指令等等

    • 核心资源相关的指令只能被操作系统程序使用

  • 特权指令:只能被操作系统内核使用的指令

  • 非特权指令:可以被所有程序使用的指令

二,处理器模式

操作系统如何实现特权指令和非特权指令在执行上的界分呢?

  • 计算机通过设置处理器模式位,来实现特权指令管理

  • 计算机一般设置 0、1、2、3 等四种运行模式,分别对应:

    • 0 操作系统内核

    • 1 系统调用

    • 2 共享库程序

    • 3 用户程序等保护级别

  • 0 模式可以执行全部指令,3 模式只能执行非特权指令;其他每种模式可以规定执行的指令子集

  • 一般来说,现代操作系统只使用了 0 和 3 两种模式,对应内核模式和用户模式

2.1 处理器模式的切换

  • 简称模式切换,包括“用户模式 => 内核模式”“内核模式 => 用户模式”的转换

  • 中断、异常或系统异常等事件导致用户程序向 OS 内核切换,触发:用户模式 => 内核模式

    • 程序运行时发生并响应中断

    • 程序运行时发生异常

    • 程序请求操作系统服务

  • OS 内核处理完成后,调用中断返回指令(如 intel 的 iret)触发:内核模式 => 用户模式