180226—【操作系统】复习:中断机制

按:开学了,学习生活当然要入正轨。
之前看时草率,越往后越迷糊。遂回头再把一些东西搞明白,果然有收获:

中断

中断无非是用来提高处理器效率的一个手段。

中断指令

假如,一个 I/O 程序的调用可分为两个部分:

  • 为实际的 I/O 操作做准备。比如:复制将要输出到特定缓冲区的数据,为设备命令准备参数。
  • 实际的 I/O 命令。
  • 设置一个表示操作成功或失败的标记。用于完成操作。

其中第一步较为简单,速度也快。但第二步将会消耗大量时间。
利用中断功能,处理器可以在 I/O 操作的执行过程中执行其他指令。
用户程序到达系统调用 WRITE 处,但涉及的 I/O 程序仅包括准备代码和真正的 I/O 命令。在这些为数不多的几条指令执行后,控制返回到用户程序。
在这期间,外部设备忙于从计算机存储器接收数据并打印。
而处理器得以执行接下来的其他用户程序指令

这种 I/O 操作和用户程序中指令的执行是并发的

这样就节省下了中间第二步的时间。

当外部设备做好服务的准备,也就是说,当它准备好从处理器接收更多的数据时,
该外部设备的 I/O 模块给处理器发送一个中断请求信号。
(外部设备对 CPU 说:我的活干完了,你快给我派任务啊!)

这时处理器会做出响应,暂停当前程序的处理,转去处理服务于特定 I/O 设备的程序,这个程序称做中断处理程序(interrupt handler)。在对该设备的服务响应完成后,处理器恢复原先的执行。

为适应中断产生的情况,在指令周期中要增加一个中断阶段:
这里写图片描述
在中断阶段中,处理器检查是否有中断发生,即检查是否出现中断信号。如果没有中断,处理器继续运行,并在取指周期取当前程序的下一条指令;如果有中断,处理器挂起当前程序的执行,

并执行一个中断处理程序。这个中断处理程序通常是操作系统的一部分,完成两个工作

  • 它确定中断的性质;
  • 并执行所需要的操作。
    (划重点了撒!)
    例如,在前面的例子中,处理程序决定哪一个 I/O 模块产生中断,并转到往该 I/O 模块中写更多数据的程序。当中断处理程序完成后,处理器在中断点恢复对用户程序的执行。

中断处理

来看详解:
当一个 I/O 设备完成一次 I/O 操作时,发生下列硬件事件:
这里写图片描述

1)设备给处理器发出一个中断信号。(我是 I/O,给活!)

2)处理器在响应中断前结束当前指令的执行,即上图指令周期所示。

3)处理器对中断进行测定,确定存在未响应的中断,(到底有没有?)
并给提交中断的设备发送确认信号,确认信号允许该设备取消它的中断信号。

4)处理器需要为把控制权转移到中断程序中去做准备。首先,需要保存从中断点恢复当前程序所需要的信息,要求的最少信息包括程序状态字(PSW)和保存在程序计数器中的下一条要执行的指令地址,它们被压入系统控制栈中。(大家做好准备先撤)

5)处理器把响应此中断的中断处理程序入口地址装入程序计数器中。
(决定调用哪个中断处理程序并告知天下)
可以针对每类中断有一个中断处理程序,也可以针对每个设备和每类中断各有一个中断处理程序,这取决于计算机系统结构和操作系统的设计。
如果有多个中断处理程序,处理器就必须决定调用哪一个,这个信息可能已经包含在最初的中断信号中,否则处理器必须给发中断的设备发送请求,以获取含有所需信息的响应。


一旦完成对程序计数器的装入,处理器则继续到下一个指令周期,该指令周期也是从取指开始。由于取指是由程序计数器的内容决定的,因此控制被转移到中断处理程序,该程序的执行引起以下的操作:

6)在这一点,与被中断程序相关的程序计数器和 PSW 被保存到系统栈中,此外,还有一些其他信息被当做正在执行程序的状态的一部分。特别需要保存处理器寄存器的内容,因为中断处理程序可能会用到这些寄存器,因此所有这些值和任何其他的状态信息都需要保存。在典型情况下,中断处理程序一开始就在栈中保存所有的寄存器内容。

7)中断处理程序现在可以开始处理中断,其中包括检查与 I/O 操作相关的状态信息或其他引起中断的事件,还可能包括给 I/O 设备发送附加命令或应答。

8)当中断处理结束后,被保存的寄存器值从栈中释放并恢复到寄存器中。处理器继续执行此前被挂起的用户程序。

P.S.

所谓处理中断,即执行中断处理程序,即此时将之前正在处理的用户程序挂起,全心运行一个中断处理程序来处理中断。

以 I/O 设备为例。所谓一个中断的出现包括:

  • I/O 设备处理完当前工作,发出信号告知 CPU 自己处于空闲 –>
  • CPU 确定中断的性质并决定调用哪个(哪种)中断处理程序–>
  • CPU 为运行中断处理程序做准备–>
  • 运行中断处理程序来处理中断–>
  • 中断处理完毕,CPU 重新执行此前任务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值