操作系统的中断机制

     CPU进行进程之间的切换以及可以处理多个任务都是通过中断请求来实现的。在计算机系统中每个硬件组建都有各自唯一的一个 中断请求 装置,例如键盘键盘的中断装置,鼠标有鼠标的中断装置,那键盘来说,当按下某个按键时候,就会出发键盘的中断装置,发出 中断请求 ,核心就是发出一个脉冲信号(从这里可以明白,计算机一切的执行都是通过电信号来实现的),键盘的按下就叫做 中断源, 当然中断源有许多,如硬件的坏掉,软件上除数为零,这个中断请求其实就是一个唯一的 中断类型码 ,首先需要明白,CPU会不断的检测中断装置,当CPU检测到中断装置里面有中断信号了,其实就是出现了中断类型码,例如类型码09代表键盘,08代表时钟中断,然后CPU回去 中断向量表中 根据中断类型码查询相应的 中断处理程序。
      中断处理处理程序的功能可以百度百科查询,当然每个计算机组件都有自己的中断服务程序,但是他最重要的任务就是当CPU执行这个中断服务程序时候,此程序会处理对应的设备需要处理的数据,直至执行结束(此时可以理解为CPU调用中断服务程序,中断服务程序调用相应的设备驱动程序,就如方法之间的潜套调用,当掉用结束,自然这个中断处理也就结束了)当然此时需要保存上个进程的数据状态到 程序状态寄存器中(这也是为什么CPU可以在不同的进程之间切换且可以正确的执行上个进程的数据)和 程序寄存器,当中断处理结束之后,CPU继续从指令寄存器中继续下个进程的执行。这就是中断处理过程。
     这里需要明白几个概念。对于数据结构的栈,CPU有相应的操作栈的指令集,同时栈的值是在栈寄存器中存放的,这就是栈的实现。
而对于队列,如进程队列等等,我们经常使用,但是CPU执行指令集没有相应的指令,自然也就没有队列寄存器,之所以如此,是因为队列很容易实现的, 用下标对数组寻址就行了,只要递增下标+变址操作即可,总之就是一块连续的队列。如指令队列,对于8086系统来说他的指令队列缓冲器是就是如此,可以参考百度百科查询。
注:加粗的字体,都是可以百度百科查询的。

你可能感兴趣的:(操作系统)