处理器管理

处理器与寄存器

处理器部件的简单示意

用户程序可见寄存器

  • 可以使程序员减少访问主存储器的次数,提高指令执行的效率
  • 所有程序可使用,包括应用程序和系统程序
    • 数据寄存器:又称为通用寄存器
    • 地址寄存器:索引、栈指针、段地址等寄存器

控制与状态寄存器

  • 用于控制处理器的操作;主要被具有特权的操作系统程序使用,以控制程序的执行。
  • 程序计数器 PC(Program Counter):存储将取指令的地址。
  • 指令寄存器 IR(Instruction Register):存储最近使用的指令。
  • 条件码 CC:CPU 为指令操作结果设置的位,标志正/负/零/溢出等结果。
  • 标志位:中断位、中断允许位、中断屏蔽位、处理器模式位、内存保护位等。

程序状态字 PSW

  • PSW 即是操作系统的概念,指记录当前程序运行的动态信息,通常包括:
    • 程序计数器,指令寄存器,条件码
    • 中断字,中断允许/禁止,中断屏蔽,处理器模式,内存保护、调试控制
  • PSW 也是计算机系统的寄存器
    • 通常设置一组控制与状态寄存器
    • 也可以专设一个 PSW 寄存器

指令与处理器模式

机器指令

  • 机器指令是计算机系统执行的基本命令,是中央处理器执行的基本单位。
  • 指令由一个或多个字节组成,包括操作吗字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码。
  • 指令完成各种算术逻辑运算、数据传输、控制流跳转。

指令执行过程

  • CPU 根据 PC 取出指令,放入 IR,并对指令进行译码,然后发出各种控制指令,执行微操作系列,从而完成一条指令的执行。
  • 一种指令执行步骤如下:
    • 取指:根据 PC 从存储器或高速缓冲存储器中取指令到 IR
    • 解码:解译 IR 中的指令来决定其执行行为
    • 执行:连接到 CPU 部件,执行运算,产生结果并写回,同时在 CC 里设置运算结论标志;跳转指令操作 PC,其他指令递增 PC 值。

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

特权指令与非特权指令

  • 用户程序并非能够使用全部机器指令,那些与计算机核心资源相关的特殊指令会被保护
    • 如:启动 I/O 指令、置 PC 指令,等等。
    • 核心资源相关的指令只能被操作系统程序使用。
  • 特权指令:只能被操作系统内核使用的指令
  • 非特权指令:能够被所有程序使用的指令

处理器模式

  • 计算机通过设置处理器模式实现特权指令管理
  • 计算机一般设置0、1、2、3等四种运行模式,建议分别对应:0操作系统内核、1系统调用、2共享库程序、3用户程序等保护级别
  • 0模式可以执行全部指令;3模式只能执行非特权指令;其他每种运行模式可以规定执行的指令子集
  • 一般来说,现代操作系统只使用0和3两种模式,对应于内核模式和用户模式

处理器模式的切换

  • 简称模式切换,包括“用户模式 \rightarrow 内核模式”和“内核模式 \rightarrow 用户模式”的转换
  • 中断、异常或系统异常等事件导致用户程序向OS内核切换,触发:用户模式→内核模式
    • 程序请求操作系统服务
    • 程序运行时发生异常
    • 程序运行时发生并响应中断
  • OS内核处理完成后,调用中断返回指令(如 Intel 的 iret 指令)触发:内核模 \rightarrow 用户模式

中断

中断的概念

  • 中断是指执行过程中,遇到急需处理的事件时,暂时中止 CPU 上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。
  • 操作系统是“中断驱动”的,换言之:中断是激活操作系统的唯一方式
  • 中断有广义和狭义之分,上述中断时指广义的中断。

中断、异常与系统异常

  • 狭义的中断指来源于处理器之外的中断事件,即与当前运行指令无关的中断事件,如 I/O 中断、时钟中断、外部信号中断等。
  • 异常指当前运行指令引起的中断事件,如地址异常、算术异常、处理器硬件故障等。
  • 系统异常指执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求 I/O、创建进程等。

中断源

处理器硬件故障中断事件

  • 由处理器、内存储器、总线等硬件故障引起
  • 处理原则为:保护现场,停止设备,停止 CPU,向操作员报告,等待人工干预

程序性中断事件

处理器执行机器指令引起

  • 除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理。
  • 非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程。
  • 终止进程指令:终止进程
  • 虚拟地址异常:调整内存后重新执行指令

自愿性中断事件

处理器执行陷入指令请求 OS 服务引起;在操作系统中,它一般又被称作系统调用

  • 请求分配外设、请求 I/O、等等
  • 处理流程是:陷入 OS,保护现场,根据功能号查入口地址,跳转具体处理程序。

I/O 中断事件

来源于外围设备报告 I/O 状态的中断事件

  • I/O 完成:调整进程状态,释放等待进程
  • I/O 出错:等待人工干预
  • I/O 异常:等待人工干预

外部中断事件

由外围设备发出的信号引起的中断事件

  • 时钟中断、间隔时钟中断:记时与时间片处理
  • 设备报到与结束中断:调整设备表
  • 键盘 / 鼠标信号中断:根据信号作出相应反应
  • 关机 / 重启动中断:写回文件,停止设备与 CPU

中断系统

  • 中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分。
  • 中断响应由硬件子系统完成
  • 中断处理由软件子系统完成

中断响应处理与指令执行周期

中断装置

  • 计算机系统中发现并响应中断/异常的硬件装置称为中断装置。
  • 由于中断源的多样性,硬件实现的中断装置有多种,分别处理不同类型的中断。
  • 这些中断装置因计算机而异,通常有:
    • 处理器外的中断:由中断控制器发现和响应。
    • 处理器内的异常:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷阱。
    • 请求OS服务的系统异常:处理器执行陷入指令时直接触发,相应机制称为系统陷阱。

中断控制器

中断控制器是 CPU 的一个控制部件,包括中断控制逻辑线路和中断寄存器。

  • 外部设备向其发出中断请求 IRQ,在中断寄存器中设置已发生的中断。
  • 指令处理结束前,会检查中断寄存器,若有不被屏蔽的中断产生,则改变处理器内操作的顺序,引出操作系统中的中断处理程序。

陷阱与系统陷阱

指令的逻辑和实现线路的一部分

  • 执行指令出现异常后,会根据异常情况转向操作系统的异常处理程序。
  • 出现虚拟地址异常后,需要重新执行指令,往往越过陷阱独立设置页面异常处理程序。
  • 执行陷入指令后,越过陷阱处理,触发系统陷阱,激活系统调用处理程序。

中断响应过程

  1. 发现中断源,提出中断请求
    1. 发现中断寄存器中记录的中断
    2. 决定这些中断是否应该被屏蔽
    3. 当有多个要响应的中断源时,根据规定的优先级选择一个
  2. 中断当前程序的执行:保存当前程序的 PSW/PC 到核心栈
  3. 转向操作系统的中断处理程序

中断的处理

  1. 中断处理程序:操作系统处理中断事件的控制程序, 主要任务是处理中断事件和恢复正常操作。
  2. 中断处理过程:
    1. 保护未被硬件保护的处理器状态。
    2. 通过分析被中断进程的 PSW 中断码字段,识别中断源。
    3. 分别处理发生的中断事件。
    4. 恢复正常操作。

恢复正常操作

  1. 对于某些中断,在处理完毕后,直接返回刚刚被中断的进程
  2. 对于其他一些中断,需要中断当前进程的运行,调整进程队列,启动进程调度,选择下一个执行的进程并恢复其执行

中断系统处理流程

多中断的响应与处理

Reference

  1. 南京大学软件学院本科三年级课程《计算机与操作系统》
文章作者: ZY
文章链接: https://zyinnju.com/2022/11/07/处理器管理/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZY in NJU