中断

来源:互联网 发布:黑魂三男性捏脸数据 编辑:程序博客网 时间:2024/05/16 07:21

计算机世界与现实世界有着很多共同的特点。比如中断,我们正在写作业这时手机(中断源)响了(中断请求),我们会停下来接电话(中断响应),完了之后继续刚才的作业(中断返回)。当然有的时候,我们会在做作业前把手机关掉,这就相当于关中断(禁止中断),做完作业后再把手机打开(开中断),这样做就保证了我们能够专心致志的做作业(原子性)。计算机也是一样的,只是它是通过CPU内部的处理器状态字PSW的中断允许位来判断是否响应中断的。既然说到了PSW,不妨顺便介绍一下。程序状态字(PSW  Program Status Word )通常包括以下状态代码:CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其它的特殊权力;条件码——反映指令执行后的结果特征;中断屏蔽码——指出是否允许中断。

刚才说到做作业,如果正在做作业,假如电话响的同时,你的女神恰好叫你出去,这时你会怎么做?这就涉及到中断优先级的问题。为了按中断源的轻重缓急处理响应中断,操作系统为不同的中断赋予不同的优先级。为了禁止中断或屏蔽中断,CPU的处理器状态字PSW中也设有相应的优先级。如果中断源的优先级高于PSW的优先级,则CPU响应该中断源的请求;反之,CPU屏蔽该中断源的中断请求。根据中断源产生的条件,可把中断分为外中断和内中断。外中断是指来自处理器和内存外部的中断,包括I/0设备发出的I/O中断、外部信号中断(例如用户键人ESC键)。各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。外中断在狭义上一般被称为中断。内中断主要指在处理器和内存内部产生的中断。内中断一般称为陷阱(trap)或异常。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。

继续前面的故事,假如你决定响应女神的召唤了,这时再没有其他事能阻止你了。不过为了过会回来还能接着刚才的地方继续你还是做了一下标记,然后。。。接下来我们还是直接看一下计算机是如何响应中断的吧。

一旦CPU响应中断,转人中断处理程序,系统就开始进行中断处理。下面对中断处理过程进行详细说明:

1)CPU检查响应中断的条件是否满足。CPU响应中断的条件是:有来自于中断源的中断请求、CPU允许中断。如果中断响应条件不满足,则中断处理无法进行。

2)如果CPU响应中断,则CPU关中断,使其进入不可再次响应中断的状态。

3)保存被中断进程现场。为了在中断处理结束后能使进程正确地返回到中断点,系统必须保存当前处理器状态字PSW和程序计数器PC等的值。这些值一般保存在特定堆栈或硬件寄存器中。

4)分析中断原因,调用中断处理子程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。在系统中,为了处理上的方便,通常都是针对不同的中断源编制有不同的中断处理子程序(陷阱处理子程序)。这些子程序的人口地址(或陷阱指令的人口地址)存放在内存的特定单元中。再者,不同的中断源也对应着不同的处理器状态字PSW。这些不同的PSW被放在相应的内存单元中,与中断处理子程序人口地址一起构成中断向量。显然,根据中断或陷阱的种类,系统可由中断向量表迅速地找到该中断响应的优先级、中断处理子程序(或陷阱指令)的入口地址和对应的PSW。

5)执行中断处理子程序。对陷阱来说,在有些系统中则是通过陷阱指令向当前执行进程发出软中断信号后调用对应的处理子程序执行。

6)退出中断,恢复被中断进程的现场或调度新进程占据处理器。

7)开中断,CPU继续执行。


0 0
原创粉丝点击