1 CPU内部主要部件及功能

操作系统学习笔记(一)-- CPU_其他

PC: 程序计数器,存储下一条执行的指令的地址

IR: 指令寄存器,存储下一条执行的指令内容

MAR: 存储器地址寄存器,用于确定下一次读/写的存储器地址;

MBR: 存储器缓冲寄存器,用于存放要写入存储器的数据或者从存储器中读取的数据;

I/O MAR: 输入/输出地址寄存器,用于确定一个特定的输入/输出设备;

I/O MBR: 输入/输出缓冲寄存器,用于在输入/输出模块和处理器间交换数据

2 指令的执行

2.1 基本指令周期

操作系统学习笔记(一)-- CPU_其他_02

2.2 一个简单程序的执行过程

下图描述了一个简单的程序片段的执行过程,该片段把地址为940的存储单元中的内容与地址为941的存储单元内容相加,并将结果保存在后一个单元中。操作码0001、0010和0101分别表示从存储器中加载到AC、把AC的内容存储到存储器和将存储器中的内容相加到AC中:

操作系统学习笔记(一)-- CPU_其他_03

2.3 中断
2.3.1 中断的基本概念

中断最初是为了提高CPU的效率,使得CPU可以及时相应一些突发事件,如掉电、存储器奇偶校验出错、I/O设备正常完成某个操作或出现错误等。中断从引起中断的不同原因的角度,可以分为如下几类:

1) 程序中断:如算术溢出、除数为0、执行非法指令和访问不允许的存储器位置等;

2) 时钟中断:由CPU内部的计时器产生,允许操作系统在时钟中断时执行进程/线程调度;

3) I/O中断:由I/O控制器产生,通知CPU一个操作的正常完成或错误;

4) 硬件失效中断:如掉电或奇偶校验出错之类的故障产生

为了适应中断产生的情况,在指令周期中需要增加一个中断阶段,如下图所示。在中断阶段,CPU检查是否有中断发生,即检查是否有中断信号。如果没有中断,处理器继续运行,并在取指周期取当前程序的下一条指令;如果有中断,处理器挂起当前程序的执行,并执行一个中断处理程序。中断处理程序通常是操作系统的一部分,它确定中断的性质并执行所需要的操作。当中断处理程序完成后,处理器在中断点恢复用户程序的执行。

2.3.2 中断处理过程

下图描述了当一个中断发生时,处理器执行的指令序列。为了保证中断处理完毕后处理器可以恢复原有程序的执行,保存原有程序被中断时的所有状态信息并在中断处理结束后恢复这些信息,是十分重要的。

操作系统学习笔记(一)-- CPU_其他_04

2.3.3 多个中断的处理

1)正在处理一个中断时,禁止再发生中断(CPU忽略新的中断信号);

2) 定义中断优先级,允许高优先级的中断请求打断低优先级的中断处理程序的运行