(1)中断的概念:所谓中断是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,处理该事件后,再返回断点继续执行被“打断”的程序。
引起中断的事件称为中断源。中断源向CPU提出的处理请求称为中断请求,发生中断时,被打断的程序的暂停点称为断点。 (2)中断类型:
1)按功能划分:(1)机器故障中断,如机器校验错、电源故障、主存出错;(2)I/O中断,如打印机输出结束中断、磁盘传输出错中断;(3)外中断,如计时部件发生的计时中断;(4)程序性中断,如非法操作码、算术溢出、除数为0,地址越界等;(5)访管中断,如分配内存,分配外设进行I/O操作。 2)按中断事件来源划分:
目前,很多小型机系统和微型机系统都采用这种分类方式。①中断:它是由CPU以外的事件引起的,如I/O中断、时钟中断、控制台中断等。利用中断实现设备与CPU的通信。中断是异步的,因为从逻辑上讲,中断的产生与当前正在执行的进程无关。②异常:它是来自CPU内部的事件或程序执行中的事件引起的过程。如CPU本身故障、通路校验错、主存奇偶错、非法操作码、地址越界、页面失效、调试指令、算术操作溢出、程序故障、访管指令等引起的事件。异常是同步的,又分为出错、陷入和可编程异常。出错和陷入之间最重要的区别是处理完异常事件返回时,出错事件会重新执行导致异常的那条指令,如缺页故障;而陷入事件不会重新执行那条指令它主要用于程序调试。可编程异常是由于用户在C程序中使用了系统调用而引发的过程。异常是不能被屏蔽的,一旦出现应立即响应并加以处理。
(3)中断处理过程:
①中断响应(硬件即中断装置操作):中断处理是由软硬件结合实现的。发生中断时,CPU暂停执行当前的程序,转去处理中断。这个由硬件对中断请求作出反应的过程,称为中断响应。通常,CPU执行完一条指令后,立即检查有无中断请求(A 判别自愿性中断,只要检查操作码是否为访管指令;B 判别强迫性中断,则要检查中断寄存器内容。若为0,则无中断;若非0,则表示有中断事件发生。)。若有,而且“中断允许”触发器为1(表示CPU可以响应中断请求),则立即做出响应。一般来说,中断响应顺序执行下述三步动作: 1)暂停当前程序的执行;
2)保存原程序的断点信息(主要是PC计数器的值和程序状态字的内容);
每个程序都有一个程序状态字(PSW)来反映本状态的执行状态,如基本状态(下一条指令的地址、条件码、管态/目态、计算/等待等)、中断码和中断屏蔽位等内容。处理器设有一个“程序状态字寄存器”用来存放当前运行程序的PSW。程序状态字可分为当前PSW(当前正在占用处理器的进程的PSW)、旧PSW(保存的被中断进程的PSW)和新PSW(中断处理程序的PSW)。
当出现中断事件后,把被中断进程的PSW保存为旧PSW,即完成断点信息保护。
33
3)转到相应的中断处理程序:CPU接到中断后,就从中断控制器中得到中断号,使用中断号查询中断向量表(里面存放了中断处理程序的入口地址和中断处理时的程序状态字PSW),然后转入中断处理程序。
中断装置通过“交换PSW”过程完成此项任务,即把出现的中断事件存放到当前PSW中断码位置,然后把该当前PSW保存为旧PSW,再把操作系统中断处理程序的新PSW送到程序状态字寄存器中,成为当前的PSW.
②中断处理:
中断响应后就由软件(中断处理程序)进行相应处理。操作系统的中断处理程序对中断事件进行处理时,大致要做三方面的工作: 1)保护被中断进程的现场信息: 把中断时的通用寄存器,控制寄存器内容及旧PSW保存到被中断进程的进程控制块中或内存中一个专门设置的中断现场保护栈中。 2)分析中断原因:
根据旧PSW的中断码可知发生该中断的具体原因。 3)处理发生的中断事件
核心调用中断处理程序,对中断进行具体处理。例如,调用终端中断处理程序ttyintr,判断终端输入输出是否正常完成。如果正常完成,则驱动程序便可做结束处理;如果还有数据要传送,则继续进行传送;如果是异常结束,则根据异常原因作相应处理。
4)恢复现场:
相应中断处理程序执行以后,要退出中断。
A 选取可以立即执行的进程。通常,退出中断后,应恢复到原来被中断的进程断点继续执行。如果原来被中断的进程是在核心态下工作,则不进行进程切换,因为进程在核心态下运行的是操作系统程序,涉及整个系统资源的管理,需要优先执行。如果原来被中断进程是用户态进程,且此时系统中存在比它优先级更高的进程,则重新进行调度。
B 恢复工作现场:把先前保存在中断现场区中的信箱(如PC、PSW,各通用寄存器中的信息等)取出复原。从时间顺序上讲,先恢复环境信息(各通用寄存器内容),再恢复控制信息(PC、PSW)。通常,使用一条不可中断的特权指令来复原控制信息。 (3) 中断优先级和中断屏蔽
1) 中断优先级 是硬件设计时确定的。中断装置按预定的顺序来响应同时出现的中断事件,这个预定的顺序称为“中断优先级”。中断优先级是按中断事件的重要性和紧迫程度来确定的 ,是由硬件设计时固定下来的。一般情况下,优先级的高低顺序依次为: 硬件故障中断 、 自愿中断 、 程序性中断 , 外部中断和输入输出中断 . 2)中断的嵌套处理
3)中断屏蔽的作用。中断优先级只是规定了中断装置响应同时出现的中断的次序,当中断装置响应了某个中断后中断处理程序在进行处理时,中断装置也可能去响应另一个中断事件。因此会出现优先级低的中断事件的处理打断优先级高的中断事件的处理,使得中断事件的处理顺序与响应顺序不一致,而且会形成多重嵌套处理,使多现场保护、程序返回等工作变的复杂。
中断屏蔽技术就是为了解决上述问题而提出的在一个中断处理没有结束之前不响应其他中断事件,或者只响应比当前级别高的中断事件。于是,当中断装置检查到有中断事件后,便去查看PSW中中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应。自愿中断是不能屏蔽的。
4)中断禁止:是指在可引起中断的事件发生时系统部接收该中断信号,因而就不可能
34
提出中断请求而导致中断,就是不让某些事件产生中断。它常用在执行某些特殊工作的条件下,如求余运算,算术运算中强制忽略某些中断,如定点溢出等。在中断禁止的情况下,CPU正常运行,根本不理睬所发生的那些事件。
从概念上讲,中断屏蔽和中断禁止是不同的。前者表示硬件接受了中断,但系统暂时不响应,要延迟一段时间,待中断开放后,被屏蔽的中断就能被响应并得到处理。而后者,硬件不准许事件提出中断请求,从而使中断被禁止。
1、I/O软件通常设为四个层次:用户空间I/O软件、设备独立性软件、设备驱动程序和中断处理程序,问以下各项工作是在哪个层次上完成的? (1)用户进程请求打印一个输出文件;
(2)将一维磁盘块号转换为三维物理地址(柱面、磁道和扇区) (3)获得设备驱动程序的入口地址; (4)将终端输入的字符转换为ASCII码; (5)设备驱动进程被唤醒; (6)向设备寄存器写命令;
(7)检查用户是否有权使用设备;
(8)将二进制整数转化成ASCII码以便打印。(用户层) (9)维护一个最近使用块的缓存。
2、当中断发生后,进入终端处理的程序属于(用户程序;可能是用户程序,也可能是os程序;os程序;) 3、判断:在中断处理过程中,必须屏蔽中断(错)
4、由系统通过逻辑设备表实现逻辑设备到物理设备的映射。当更换物理设备时,用户的程序不用改,仅修改逻辑设备表。
5、计算机中断系统中,断点、恢复点与PC寄存器之间的关系是什么?中断源有哪些基本类型?
提示:引起中断的事件称为中断源,中断源通常由硬件发现。中断处理程序是由操作系统处理的,属于操作系统的组成部分。
6、计算机系统中判别是否有中断事件发生应是在( B ) A.进程切换时 B.执行完一条指令后
C.执行P操作后 D.由用户态转入核心态时
7、中断装置的职能主要有三点: 1)检查是否有中断事件发生。 2)若有中断发生,保护好被中断进程的断点及现场信息,以便进程在适当时候能恢复驼行。 3)启动操作系统的中断处理程序。
8、引起I/O中断的事件有(1,2)。(选项:数据传送完毕;设备出错;设备正在处理数据;指令错;缺页;访存越界)
9、如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。若要调整中断事件的响应次序,可以利用()。(选项:中断禁止;中断嵌套;中断响应;中断屏蔽) 10、当用户程序执行访管指令时,中断装置将使CPU():维持在用户态;维持在核心态;从核心态转换到用户态;从用户态转换到核心态。
35
11、中断处理程序占用处理器时,要从()取出信息,才能分析中断发生的原因:当前PSW;新PSW;旧PSW;当前指令的操作码。
12、缺页中断属于(程序性中断),CTRl+C中断属于(外部中断)。 13、判断:中断时用户程序转换到操作系统程序的驱动源。
14、判断:采用DMA方式控制数据I/O操作要比通道 传输速度慢一些。
15、下面的事件()不是引起中断的事件。(选项:掉电;打印完毕;程序出错;除0出错)
5.5设备分配
1、常用的I/O调度算法有哪些?试说明I/O调度中为什么不能采用时间片轮转法。 提示:原因如下:(1)独占设备的固有属性决定了不能采取时间片轮转法;(2)I/O设备的速度比cpu慢,I/O设备间来回切换的开销很大,采用时间片轮转法会导致大量的时间浪费在设备的启动和切换上;(3)由于各种I/O设备的数据传输速率相差较大,时间片的大小不好确定。
2、一个spooling系统由输入进程I、用户进程P、输出进程O、输入缓冲区、输出缓冲区组成。I通过输入缓冲区为P输入数据,P的处理结果通过输出缓冲区交给进程O输出。进程间数据交换以等长的数据块为单位。这些数据块均存储在同一磁盘上。因此,spooling系统的数据块通信原语始终保证满足:i+o<=max,(1),其中max为磁盘容量(以数据块为单位),i为磁盘上输入数据块总数,o为磁盘上输出数据块总数。请说明该系统在什么情况下死锁,并说明如何修正约束条件(1)防止死锁。
提示:当i=max时,o=0,若此时输入、输出缓冲区均放满数据,则I/P/O均阻塞,进入死锁状态;将(1)修改为:i+o<=max,且i<=max-1即可。
3、在spooling系统中,用户进程实际分配到的是():用户所要求的外设;一块内存区,及虚拟设备;共享设备的一部分存储区;虚拟设备的一部分空间;
4、()是操作系统中采用的以空间换时间的计数。(Spooling技术;虚拟存储技术;覆盖与交换技术;通道技术)
5、有关设备的管理中,( ADE )是正确的。 A.“计算机系统为每台设备确定一个绝对号” B.“每台设备都应该有一个惟一的相对号”
C.“申请设备时指定绝对号可提高设备的使用率”
D.“申请设备时指定设备相对号使设备分配的灵活性强” E.“启动设备时应指出设备的绝对号”
6、实现虚拟设备的硬件条件是什么?操作系统应设计哪些功能程序?
硬件条件是:配置大容量的磁盘,要有中断装置和通道, 操作系统应设计好“预输入”程序,“井管理”程序,“缓输出”程序。
7、什么是虚拟设备?为什么要引入虚拟设备?实现虚拟设备时所依赖的关键技术是什么? 答:虚拟设备是指通过某种技术,把一个物理设备变成若干台逻辑设备。逻辑设备实际上并不存在,只是给用户的一种感觉。
引入虚拟设备的原因是为了克服独占设备所具有的速度较慢、资源的利用率较低的缺
36