操作系统中断和运行程序。

时间:2017-09-18 19:15:00

标签: operating-system

我无法理解发送到CPU的中断信号如何影响同时调度和执行的所有进程。我不确定流程调度机制如何工作的详细信息,因为我还没有达到那一章,这可能是混淆的来源。

当一个事件导致中断时,CPU保存其上下文(即进程状态字寄存器+可能是GPR)并启动中断服务程序。 ISR完成后,它会加载已中断的程序状态,以便继续运行。

  1. CPU如何知道要中断哪个程序?

  2. 在执行IRS期间,当前正在运行的所有程序是否停止运行?或者所有其他进程是否继续运行,即与IRS同时运行包括在队列中?

1 个答案:

答案 0 :(得分:1)

  

CPU如何知道要中断的程序

CPU不知道或不需要。当CPU接收到一个中断时,该核心上的当前正在停止执行。通过正确设计的ISR,被中断的线程完全没有意识到执行曾停止*。通常,中断被发送到特定核心。中断不会尝试中断特定进程或线程,除非软件设置亲和力以匹配核心被中断,并且线程正好运行。在这方面,多核系统上有效的OS设计的一部分是配置硬件以将中断源分散到不同的核心,因此一个核心不会不断中断。

*在运行程序时检测到中断很棘手,您经常依赖于了解不间断执行的时间。如果发生许多虚假(缺少更好的短语的假阳性)中断,副作用是程序运行速度明显变慢。

  

当前正在运行的所有程序是否会停止运行   执行国税局?或者所有其他过程继续运行,即   与IRS同时运行包括在队列中?

中断通常是必须立即处理的事件。调度它们会破坏目的。因此,ISR不会被添加到调度程序队列中。实际上,通常触发调度程序首先执行的是来自硬件计时器的中断。在多核系统中,未中断的线程将继续执行,因为一个核心服务于中断。

许多中断可能会触发信号量,导致线程解除锁定并因事件而开始执行。这是向线程发信号通知数据已准备好从SATA或网络接口卡处理的常用方法。通常这样做是因为实际解析数据包会很慢。 ISR需要快速,因此他们只需将缓慢的CPU密集型工作卸载到线程中。