给出不同中断事件的中断处理程序的处理。
参考答案:各类中断事件的处理原则大致如下。
(1) 硬件故障中断事件的处理
排除这类故障必须进行人工干预,因此处理这类事件只能是输出一些故障信息。例如,当主存储器的奇偶校验或海明校验装置发现主存储器读/写错误时,产生故障中断事件,中断处理程序要把访问该主存单元的进程状态改成“等待干预”,向操作员报告出错主存单元的地址和错误性质。待操作员排除故障后重新启动进程,使“等待干预”状态的进程变成“就绪”状态。
(2) 程序中断事件的处理
程序中断事件往往与程序的具体编制有关,不同的用户对出现的事件可以有不同的处理要求,所以,中断处理程序可把出现的事件转交给用户自行处理。如果用户对发生的事件没有提出处理办法,那么操作系统就把发生事件的进程名、程序断点、事件性质等报告给操作员。
(3) 外部中断事件的处理
用户可以用控制板上的中断键请求调用操作系统的某个特定功能。所以,当按压了一个中断键产生一个外部中断事件时,处理该事件的程序根据中断键的编号把处理转交给一个特定的例行程序。时钟是操作系统进行调度工作的重要工具,在UNIX系统中,硬件按电源频率每隔20毫秒产生一次中断请求。处理程序累计时钟中断次数用来调整日历时钟时间。只要在开机时置好开机时刻的年、月、日、时、分、秒,以后根据时钟中断的次数可计算出当前的时间。也可把时钟作为定时闹钟,先确定一个定时的时间,只要把当前的日历时钟时间与定时的时间相加就得到唤醒时间,处理程序每隔一段时间(例如1秒钟)把日历时钟时间与唤醒时间比较,当日历时钟时间≥唤醒时间,就表示定时的时间到了,起到闹钟的作用。
(4) 输入/输出中断事件的处理
I/O中断通常包括I/O正常结束和I/O错误,不同的情况系统采用不同的处理方法。
(5) 访管中断事件的处理
这类中断事件表示正在运行的进程要调用操作系统的功能,中断处理程序可设置一张“系统调用程序入口表”,中断处理程序按系统调用类型号查这张入口表,找到相应的系统调用程序的入口地址,把处理转交给实现调用功能的程序执行。
综上所述,在多数情况下,中断处理程序只须做一些保护现场。分析事件性质等原则性的处理,具体的处理可由适当的例行程序来完成。因此,中断处理程序可以创建一些处理事件的进程,具体的处理就由这些进程来实现。