中断

处理机的状态

处理机的状态与分类
  1. 操作系统是计算机系统中最重要的系统软件,为了能正确地进行管理和控制,其本身是不能被破坏的。

  2. 在系统中有两类程序在运行,一类是管理程序(如cpu调度程序、主存分配程序、I/O管理程序等);另一类是用户程序。前者是管理和控制者,它负责管理和分配系统资源,为用户提供服务,而用户程序运行时,所需资源必须向操作系统提出请求,自己不能随意取用系统资源,这两类程序执行时应有不同的权限。

  3. 为了保护操作系统,至少需要区分两种状态:管态和用户态

管态:又称系统态,是操作系统的管理程序执行时机器所处的状态,在此状态下允许cpu使用全部系统资源和全部指令。

用户态:又称目态,是用户程序执行时机器所处的状态。在此状态下禁止使用特权指令,不能直接取用系统资源与改变机器状态,并且只允许用户程序访问自己得到存储区域。

特权指令

在核态下,操作系统可以使用所有指令,包括一组特权指令,这些特权指令设计如下几个方面:

1.改变机器状态

2.修改特殊寄存器

3.涉及外部设备的输入输出

在下列情况下,由用户态自动转向管态:

1.用户进程访问操作系统要求操作系统的某种服务,这种访问称为系统功能调用

2.在用户进程执行时,发生一次终端

3.在一个用户进程中产生一个错误状态,这种状态被处理为内部中断

4.在用户态企图执行一条特权指令,作为一种特殊类型的错误,并按 3 处理

从管态返回用户态是用一条指令实现的,这条指令本身也是特权指令。

中断

中断概念

操作系统必须能提供多任务在CPU上快速转接的能力,自动地处理计算机系统中发生的各种事故的能力,需解决外设和cpu之间的通信问题。

中断是指某个事件(例如电源掉电,定点加法溢出或I/O传输结束等)发生时,系统中止现行程序的运行,引出处理该事件程序进行处理,处理完毕后返回断点,继续执行。

中断类型

a.按中断功能

  1. 输入输出中断:当外部设备或者通道操作正常结束或发生某种错误时所发生的中断,例如I/O传输出错,I/O传输结束等

  2. 外中断:对某个CPU而言,它的外部非通道式装置所引起的中断称为外部中断,例如,时钟中断,操作员控制台中断、多机系统中CPU到CPU的通信中断等

  3. 机器故障中断:当机器发生故障时所产生的中断称为机器故障中断。例如,电源故障、通道与主存交换信息时主存出错、从主存取指令错、取数据错、长线传输时的奇偶校验错误等

  4. 程序性中断:如定点溢出、十进制溢出、十进制数错

  5. 访管中断:对操作系统提出某种需求(如请求I/O、建立进程等)所发生的中断称为访管中断。

b.按中断方式

  1. 强迫性中断:I/O中断,外中断、机器故障中断、程序性中断

  2. 自愿中断:访管中断

c.按中断来源

  1. 中断:由CPU外部事件引起的中断称为外中断,又称为中断,包括I/O中断,外中断

  2. 俘获:由CPU内部事件引起的中断成为俘获,包括访管中断、程序性中断、机器故障中断

中断的过程

保护现场

现场是指在中断的那一刻能确保程序继续运行的有关信息,主要包括:后继指令所在的主存的单元号、程序运行所处的状态(是用户态还是管态)、指令执行情况以及程序执行的中间结果等。对于多数机器而言,这些信息通常存放在指令计数器、通用寄存器(或累加器和某些机器的变址寄存器)以及一些特殊寄存器中。当中断发生时,必须立即把这些现场信息保存在主存中(不同程序的现场一般应保存在不同区域中),这就是保护现场。

恢复现场

为了确保被中断的程序从恢复点继续运行,必须在该程序重新运行之前,把保留的该程序现场信息从主存中送至相应的指令计数器、通用寄存器或一些特殊的寄存器中,完成这些工作称为恢复现场。

程序状态字

任何程序运行时都有反应其运行状态的一组信息,有的机器将这一组信息集中在一起称为程序状态字,存放这些信息的寄存器成为程序状态字寄存器。但是并不是所有机器都这样做。

程序状态字是反映程序执行时机器所处的现行状态的代码。它主要内容包括:

1.程序现在应该执行哪条指令

2.当前指令执行情况

3.cpu处于何种工作状态

4.程序在执行时应该屏蔽哪些中断

5.寻址方法、编址、保护键

6.响应中断的内容

上述信息存放在什么地方,不同机器可以采用不同的方法处置。

中断响应

中断响应是当cpu发现已有中断请求时,中止现行程序执行,并自动引出中断处理程序的过程。

中断响应的实质是交换指令执行地址和处理器状态,以达到如下目的:

1.保留程序断点及有关信息

2.自动转入相应的中断处理程序执行

中断响应所需的硬件支持包括:指令计数器、处理器状态寄存器、中断向量表和系统堆栈

整个中u单处理的功能是由硬件和软件配合完成的。硬件负责中断进入过程,即发现和响应中断请求,把中断的原因和断点记下来供软件处理时茶用,同时负责引出中断处理程序。而中断分析、中断处理、恢复被中断程序的现场等工作则由软件的中断处理程序来完成。

向量中断

当中断发生时,由中断源引导cpu进入中断服务程序的中断过程称为向量中断。为了提高中断的处理速度,在向量中断中,对于每一个中断类型都设置一个中断向量。中断向量就是存储该类型中断的中断服务例行程序的入口地址和cpu状态字的存储单元。系统中所有中断类型的中断向量放在一起,形成中断向量表。在中断向量表中,存放每一个中断向量的地址称为中断向量地址。在向量中断中,由于每一个中断都有自己的中断向量,所以发生某一个中断事件时,可直接进入处理该事件的中断处理程序。微型机一般采用向量中断机制。