操作系统之中断机制 (四)

中断机制

中断机制的诞生

在计算机发展初期(即在多道批处理系统之前),计算机只能运行一道程序,所以我们也不需要暂停(即中断)该程序的运行,导致的结果就是该程序运行到底。但是,由于计算机处理速度超快,只能运行一道程序未免太没效率了。所以我们现在要求一个计算机可以并发的运行多道程序,那怎么让这些程序之间切换运行呢?
为了解决上述问题,人们发明了操作系统作为计算机的管理者(多道批处理系统及之后),引入中断机制,实现多道程序的并发运行。中断机制可以让计算机暂时停止某程序的运行,然后转到另外一个程序,CPU会运行该程序的指令。

发生了中断就意味着需要操作系统的介入,开展管理工作。由于操作系统的管理工作(比如分配打印机设备等)需要使用特权指令,所以CPU状态要从用户态切换到核心态,使操作系统获得计算机的控制权。有了中断机制,计算机才能实现多道程序的并发运行。

常见的中断

  • 时间片用完之后的中断
    CPU收到计时部件发出的中断信号,切换到核心态对中断进行处理。这个中断是为了告诉正在运行的程序:“你的运行时间到了,让别的程序运行吧!”。
    这个中断的目的是:实现计算机中多道程序的并发运行。

  • 输出指令引起的中断
    运行中的程序请求输出,CPU也会切换为核心态对中断进行处理。 假如该程序要求输出到打印机,CPU会向打印机发出信号,让打印机开始工作。而且该程序也会暂停运行,等待打印机工作完成。该程序暂停了,说明CPU空闲了,那总不能让CPU傻傻的在那里等吧。于是CPU会切换为用户态,转入另外一个程序,运行它的指令。
    而等到打印机工作完成,打印机设备会向CPU发出中断信号,这个中断信号表示:“你给我的工作我已经完成了”,CPU收到中断信号后,会切换到核心态处理中断。
    这个中断的目的是:提高计算机资源(CPU资源,打印机资源…)的利用率。
    在这里插入图片描述

中断与CPU状态的切换

  • 用户态 -> 核心态
    中断是用户态到核心态切换的唯一途径。
  • 核心态 -> 用户态
    核心态到用户态的切换只需要通过CPU执行一个特权指令,将程序状态字(PSW)的标志位设置为用户态。

中断的分类

中断分为2类,内中断和外中断。我们可以通过中断信号的来源来判断。

  • 内中断
    内中断的信号来自与CPU内部。 (与当前执行的指令有关,比如输出指令或整数除0指令,CPU运行这条指令的时候会产生一个内中断信号)
  • 外中断
    外中断的信号来自于CPU外部。 (与当前执行的指令无关,比如打印机输出完成之后发出的外中断信号)

外中断的处理过程

  1. 执行完每条指令之后,CPU会检查当前是否有外部中断信号。
  2. 如果检测到外部中断信号 (比如打印机工作完成了),则需要保护被中断进程的CPU环境 (如程序状态字PSW, 程序计数器PC,各种通用寄存器的值)。
  3. 根据中断信号类型转入相应的中断处理程序。
  4. 恢复原进程的CPU环境并退出中断处理程序,返回原进程继续往下执行。

在这里,进程可以理解为正在运行的程序。
在这里插入图片描述

总结

在这里插入图片描述

感谢

以上内容大部分来自王道操作系统系列视频教学。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值