中断
处理机的状态
处理机的状态与分类
-
操作系统是计算机系统中最重要的系统软件,为了能正确地进行管理和控制,其本身是不能被破坏的。
-
在系统中有两类程序在运行,一类是管理程序(如cpu调度程序、主存分配程序、I/O管理程序等);另一类是用户程序。前者是管理和控制者,它负责管理和分配系统资源,为用户提供服务,而用户程序运行时,所需资源必须向操作系统提出请求,自己不能随意取用系统资源,这两类程序执行时应有不同的权限。
-
为了保护操作系统,至少需要区分两种状态:管态和用户态
管态:又称系统态,是操作系统的管理程序执行时机器所处的状态,在此状态下允许cpu使用全部系统资源和全部指令。
用户态:又称目态,是用户程序执行时机器所处的状态。在此状态下禁止使用特权指令,不能直接取用系统资源与改变机器状态,并且只允许用户程序访问自己得到存储区域。
特权指令
在核态下,操作系统可以使用所有指令,包括一组特权指令,这些特权指令设计如下几个方面:
1.改变机器状态
2.修改特殊寄存器
3.涉及外部设备的输入输出
在下列情况下,由用户态自动转向管态:
1.用户进程访问操作系统要求操作系统的某种服务,这种访问称为系统功能调用
2.在用户进程执行时,发生一次终端
3.在一个用户进程中产生一个错误状态,这种状态被处理为内部中断
4.在用户态企图执行一条特权指令,作为一种特殊类型的错误,并按 3 处理
从管态返回用户态是用一条指令实现的,这条指令本身也是特权指令。
中断
中断概念
操作系统必须能提供多任务在CPU上快速转接的能力,自动地处理计算机系统中发生的各种事故的能力,需解决外设和cpu之间的通信问题。
中断是指某个事件(例如电源掉电,定点加法溢出或I/O传输结束等)发生时,系统中止现行程序的运行,引出处理该事件程序进行处理,处理完毕后返回断点,继续执行。
中断类型
a.按中断功能
-
输入输出中断:当外部设备或者通道操作正常结束或发生某种错误时所发生的中断,例如I/O传输出错,I/O传输结束等
-
外中断:对某个CPU而言,它的外部非通道式装置所引起的中断称为外部中断,例如,时钟中断,操作员控制台中断、多机系统中CPU到CPU的通信中断等
-
机器故障中断:当机器发生故障时所产生的中断称为机器故障中断。例如,电源故障、通道与主存交换信息时主存出错、从主存取指令错、取数据错、长线传输时的奇偶校验错误等
-
程序性中断:如定点溢出、十进制溢出、十进制数错
-
访管中断:对操作系统提出某种需求(如请求I/O、建立进程等)所发生的中断称为访管中断。
b.按中断方式
-
强迫性中断:I/O中断,外中断、机器故障中断、程序性中断
-
自愿中断:访管中断
c.按中断来源
-
中断:由CPU外部事件引起的中断称为外中断,又称为中断,包括I/O中断,外中断
-
俘获:由CPU内部事件引起的中断成为俘获,包括访管中断、程序性中断、机器故障中断
中断的过程
保护现场
现场是指在中断的那一刻能确保程序继续运行的有关信息,主要包括:后继指令所在的主存的单元号、程序运行所处的状态(是用户态还是管态)、指令执行情况以及程序执行的中间结果等。对于多数机器而言,这些信息通常存放在指令计数器、通用寄存器(或累加器和某些机器的变址寄存器)以及一些特殊寄存器中。当中断发生时,必须立即把这些现场信息保存在主存中(不同程序的现场一般应保存在不同区域中),这就是保护现场。
恢复现场
为了确保被中断的程序从恢复点继续运行,必须在该程序重新运行之前,把保留的该程序现场信息从主存中送至相应的指令计数器、通用寄存器或一些特殊的寄存器中,完成这些工作称为恢复现场。
程序状态字
任何程序运行时都有反应其运行状态的一组信息,有的机器将这一组信息集中在一起称为程序状态字,存放这些信息的寄存器成为程序状态字寄存器。但是并不是所有机器都这样做。
程序状态字是反映程序执行时机器所处的现行状态的代码。它主要内容包括:
1.程序现在应该执行哪条指令
2.当前指令执行情况
3.cpu处于何种工作状态
4.程序在执行时应该屏蔽哪些中断
5.寻址方法、编址、保护键
6.响应中断的内容
上述信息存放在什么地方,不同机器可以采用不同的方法处置。
中断响应
中断响应是当cpu发现已有中断请求时,中止现行程序执行,并自动引出中断处理程序的过程。
中断响应的实质是交换指令执行地址和处理器状态,以达到如下目的:
1.保留程序断点及有关信息
2.自动转入相应的中断处理程序执行
中断响应所需的硬件支持包括:指令计数器、处理器状态寄存器、中断向量表和系统堆栈
整个中u单处理的功能是由硬件和软件配合完成的。硬件负责中断进入过程,即发现和响应中断请求,把中断的原因和断点记下来供软件处理时茶用,同时负责引出中断处理程序。而中断分析、中断处理、恢复被中断程序的现场等工作则由软件的中断处理程序来完成。
向量中断
当中断发生时,由中断源引导cpu进入中断服务程序的中断过程称为向量中断。为了提高中断的处理速度,在向量中断中,对于每一个中断类型都设置一个中断向量。中断向量就是存储该类型中断的中断服务例行程序的入口地址和cpu状态字的存储单元。系统中所有中断类型的中断向量放在一起,形成中断向量表。在中断向量表中,存放每一个中断向量的地址称为中断向量地址。在向量中断中,由于每一个中断都有自己的中断向量,所以发生某一个中断事件时,可直接进入处理该事件的中断处理程序。微型机一般采用向量中断机制。
- 上一篇 tmux & screen @Deprecated
- 下一篇 内存管理