【实验楼】查看Linux下的中断

中断机制

图片描述

  • 什么IRQ?这个号是由谁分配的?

    • Interrupt Request 中断机制
    • 由内部系统分配,优先级以数字表示从小到大优先级依次降低
  • 硬中断与软中断

    • 硬中断:硬中断由硬件产生
      • 磁盘,网卡,键盘,时钟等
      • 硬中断主要是用来通知操作系统外设状态的变化。硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。
    • 软中断:软中断由当前正在运行的进程所产生
      • 对I/O的请求
      • 可以调度I/O发生的程序。但并不会直接中断CPU。
    • 区别:
      • 硬中断发生的时间是随机的,而软中断发生的时间是由程序控制的。
      • 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
      • 硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
  • 什么叫做中断?

    • 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行的一种机制状态。
  • 中断引入的原因

    1. 提高计算机系统效率。我们知道,计算机内部的处理机的运行速度远远高于其他的外围设备的速度,而中断可以很好地将处理机与外围连接起来,有信息交换时进行发送、接收、响应、处理等步骤,无信息传递时,处理机和外围相对独立地并行工作;
    2. 维持系统可靠正常工作。在程序运行的过程中,有种种的特殊情况以及错误混乱的程序出现,而计算机为了保护其自身的安全性以及完整性,禁止程序员进行人为的操作干预,此时为了避免计算机继续处于一种危险状态,设置了一种可以监控程序运行,并且可以让程序员通过操作系统进行人为阻止的方式,即中断;
    3. 满足实时处理要求。在实时系统中,各种情况都有可能发生,为确保可以及时的处理响应,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理,提高了计算机内部程序的安全性以及处理及时性;
    4. 提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,就像是在正在施工的道路上放一个标志符,提醒其他程序此程序需要进行隔离,延缓其故障以及程序危险,帮助处理机的进一步处理。
  • 中断发生的时间

    • 在每条机器指令执行周期的最后时刻。中断在每条指令执行前都会检查是否有中断发生,因为中断都放在中断寄存器中,所以每条指令的最后时刻都会扫描一遍中断寄存器,如果有中断且允许中断则跳转到中断处理程序,若无中断,则继续执行指令。
  • 中断与系统调用

    • 相同:在处理机制上都是进行系统的来回切换
    • 不同:中断是程序正在执行的过程中,随时被打断,而正在执行的程序可以是用户态也可以是内核态;而对于系统调用来说,只有在用户态程序才可以调用程序调用
  • 中断机制与C/S模型

    • 中断机制实际上是一种发出中断请求、响应中断请求的过程,而其本质就是C/S模型,即是一种请求/服务模型,外设向中断控制器发出中断请求(请求),CPU处理器通过中断控制器接收到中断请求并作出相应(服务)。所以中断的本质就是C/S模型的
  • 学习感受

    • 中断是时时刻刻存在的,我本来以为中断作为一种C/S模型的机制,请求与响应都需要时间,况且我们程序员也可以通过中断指令对处理机实施监控以及处理危险的行为;但是在用$ cat /proc /stat 命令在终端窗口执行后,在intr一栏发现中断次数已是我不能想象的,毕竟我才打开终端不过数十分钟,中断机制的处理次数已达到近200亿。
    • 中断处理的速度非常快,能在极短的时间处理了近200亿的中断指令。其速度也是非常快的,再细想,这里所呈现的中断次数仅仅是处理过的中断次数,中断寄存器中还有很多的中断指令准备被执行,我在终端中相隔五秒再次输入$ cat /proc /stat命令,发现其处理过的中断已经在原基础上增加了1亿次,可想中断处理的速度之快
    • 中断机制中存在优先级问题,在某一时刻有几个中断源同时发出中断请求时,处理器只响应其中优先权最高的中断源。当处理机正在运行某个中断服务程序期间出现另一个中断源的请求时,如果后者的优先权低于前者,处理机不予理睬,反之,处理机立即响应后者,出现了不同的中断请求时,处理机会对其优先级进行一个比较考量,处于高优先级的,程序会先行被处理,观察CPU0和CPU3就可以看出显著去区别。

猜你喜欢

转载自blog.csdn.net/weixin_44321600/article/details/104671407