您的位置:首页 > 其它

处理器管理(异常与中断以及进程调度)

2014-07-02 21:50 363 查看
在程序运行时,产生中断或异常事件,运行程序被中断,转向中断处理程序。这两种情况都是通过中断机制发生,可以说中断和异常是用户态到核心态转换的唯一途径。

当系统产生中断或异常,处理器将作出响应并交换程序状态字,此时处理器会从用户态到核心态转换。处理完成后计算机通过加载程序状态字的特权指令来实现从核心态返回用户态。

中断是指在程序执行过程中,遇到急需要处理的事件时,暂时中止现行程序在cpu上的运行,转而执行相应的事件处理程序,处理完成后再返回断点或调度其他程序。它是现在带计算机系统的重要组成部分之一。每当应用程序执行系统调用要求获得操作系统服务等都要通过中断机制产生中断信号并启动内核工作。可以说操作系统是由中断驱动的。

Cpu会在执行在两条指令之间检查有无中断发生。

自愿性中断事件时正在运行的程序所期待的,是由于执行访管指令而引起的,它表示运行的程序对操作系统的有某种需求,一旦机器执行访管指令,就会使cpu状态从用户态转向核心态,停止现行程序的执行而转入内核的相应系统调用例程进行处理。这被称为访管中断。

硬中断分为外中断和内中断。外中断,又称中断,是指来自处理器之外的中断信号。包括时钟中断、键盘中断、设备中断等。内中断又称为异常。是指来自cpu内部的中断信号。又分为三种:访管中断,由系统调用引起。硬件故障中断,如电源失效,奇偶校验错误,总线超时等;程序性中断,如非法操作,地址越界,页面故障,除数为0,浮点数溢出。所有这些异常均有异常处理程序处理,且不能被屏蔽。

中断和异常的区别:中断是由于当前程序无关的中断信号触发的,cpu对中断的响应是被动的,且与cpu模式无关。既可以发生在用户态,又可以发生在核心态。通常在发生两条机器指令之间才响应中断。通常在两条机器指令之间才能响应中断。异常是由cpu控制单元产生的,源于现行程序执行指令过程中检测到例外。大部分异常发生在用户态。异常处理程序所提供的服务通常是当前进程所需要的。如程序出错或页面故障。异常处理程序在当前程序的上下文执行。

Cpu对异常和中断的响应是一致的。即当执行完当前指令后,或在执行当前指令的中途,根据中断源所提供的中断向量,在主存中找到响应服务程序的入口地址并调用此服务。中断向量由硬件或操作系统的内核预先分配和设置。系统调用所对应的向量在访管指令中给出。中断和异常以统一的模式加以实现,这也是许多书中将它们都归入中断机制的原因。

在两条指令中间,cpu会检查中断寄存器是否有中断事件发生,若无中断信号或中断信号被屏蔽,则继续执行后续指令。否则将暂停当前程序,转向内核的中断处理程序。

中断和异常的响应需要做四件事:1,发现中断源;2,保护现场;3,转向中断/异常处理程序。4,恢复现场。

访管中断是由程序执行访管指令而引起的,表示当前运行的程序对操作系统功能的调用。它包括操作码和访管参数两部分。前者表示此指令是访管指令,后者表示具体的访管要求。当程序发出访管请求时,cpu控制设备发出中断向量,然后指定系统调用号,表示想要调用的系统调用。

时钟是操作系统进行调用工作的重要工具,如维护系统绝对日期和时间,让分时进程按时间片轮转,让实时进程定时发送或接收控制信号,系统定时唤醒或阻塞进程。利用定时器能够确保操作系统必要时获得控制权,使陷入死循环的进程最终会因为时间片耗尽而被迫让出处理器。时钟通常是一个硬件,它按照固定周期发出中断请求,分为绝对时钟和间隔时钟。系统设置一个绝对时钟寄存器,定时的把此寄存器的内容加一。间隔时钟在每个时间切换点将间隔时钟寄存器的内容减一。当减为0时,就产生间隔时钟中断。操作系统经常利用间隔时钟进行调度

发生中断的每个设备都有一个相应的中断处理程序。一个设备的中断处理程序是它设备驱动程序的一部分。中断处理程序是被内核调用来响应中断的,工作在核心态的中断上下文中,不允许被阻塞。(也可以认为处理中断必定需要访管!)

中断和异常是激活操作系统的仅有方法,它暂停当前进程的执行,把处理器切换至核心态,内核获得cpu的控制权后,如果需要就可以实现进程切换,进程切换必定发生在核心态而非用户态。当发生进程切换时,寄存器上下文会被保存到系统级上下文(包括进程控制块、主存管理信息、核心栈等)的相应的现场信息位置,然后内核把这些信息压入核心栈的一个上下文层,当内核处理完中断返回或进程完成其系统调用返回用户态,内核进行上下文切换并从核心栈弹出一个上下文层。

进程上下文切换步骤:

1,保存被中断程序的处理器现场信息。

2,修改被中断进程的pcb有关信息,如进程状态等。

3,把被中断进程的pcb加入相关队列。

4,选择占用处理器运行的另一个进程。

5,修改被选中进程pcb有关信息,如改为就绪态。

6,设置被选中进程的地址空间,恢复存储管理信息。

7,根据被选中进程的上下文信息来恢复处理器现场。

处理器模式切换步骤:

1,保存被中断进程的处理器现场信息。

2,处理器从用户态切换到核心态,以便执行系统服务程序或中断处理程序。

3,如果处理中断,可根据所规定的中断级别设置中断屏蔽位。

4,根据系统调用号或中断号,从系统调用表或中断入口地址表中找到系统服务程序或中断处理程序的地址。

模式切换不同于进程切换,它不一定引起进程状态的切换,也不一定引起进程切换。

也就是说,进程的切换一定会引起模式切换但是模式切换未必引起进程切换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: