【问题标题】:Timer interrupt and scheduling定时器中断和调度
【发布时间】:2017-03-22 01:28:11
【问题描述】:

我很难理解定时器中断与系统调度程序的关系以及 DPC(延迟过程调用)在所有这些中的作用。这是我的理解(如果我错了,请纠正我):

1) 在每个时钟间隔产生一个中断,导致当前进程暂停,时钟中断处理程序在上下文切换后开始运行。

2) 处理程序运行调度程序,该调度程序检查某个进程是否因 IO 操作等原因耗尽运行时间或停止执行...

所以我的第一个问题是:调度程序是否真的在每个时间间隔运行?

我的第二个问题是:DPC在这里的作用是什么,和调度器有关系吗?

(我试图从 Wikipedia 上了解,但不太明白那里提到的“调度”是什么)

谢谢。

【问题讨论】:

    标签: timer operating-system interrupt scheduler clock


    【解决方案1】:

    1) 在每个时钟间隔产生一个中断,导致当前进程暂停,时钟中断处理程序在上下文切换后开始运行。

    中断处理中没有上下文切换。无论如何,当时正在运行的进程会处理中断(一些操作系统使用不同的术语,但实际上是同一件事)。

    2) 处理程序运行调度程序,该调度程序检查某个进程是否因 IO 操作等原因耗尽运行时间或停止执行...

    这完全取决于操作系统。但是,它不会检查“由于 IO 操作而停止执行”,因为当阻塞 I/O 操作排队时会发生这种情况。

    所以我的第一个问题是:调度程序是否真的在每个时间间隔运行?

    这在很大程度上取决于您认为的调度程序。它也是系统特定的。它取决于进程量子和定时器间隔之间的关系。

    如果有人考虑检查进程量子是否已过期作为调度程序的一部分,那么您可能会说调度程序很可能在每个计时器间隔上运行。

    我的第二个问题是:DPC在这里的作用是什么,和调度器有关系吗?

    中断处理程序需要简短,但出于时间和堆栈目的。许多操作系统安排将事件传递给进程。就其核心而言,Windoze 与之前的 VMS 一样,是一个软件中断驱动系统。这些可以作为定时器中断的一部分传递给进程。

    可能会发生这样的序列:

    1. 处理队列异步 I/O 请求 . . .时间的流逝。
    2. 进程再次执行。
    3. I/O 请求完成时发生中断。操作系统通过对进程排队来响应。 4.进程再次执行
    4. 定时器中断关闭。中断处理程序导致对进程的异步通知发生。

    【讨论】:

    • 现在我可以完全理解 1),但是“这在很大程度上取决于您认为的调度程序”对我来说仍然含糊不清。
    • 为什么很难找到任何与定时器相关的中断导致上下文切换的答案?当有人支持他/她的答案但确实不理解时,人们真的会开心吗...?
    【解决方案2】:

    调度程序是否真的在每个时间间隔运行?

    是和否,调度程序只会在interrupt 发生时运行。我也觉得有误会。让我澄清一下。

    在每个时间间隔内,不中断,但是检查中断输入(对于电平触发的中断),如果只有在那个时间间隔内发生中断,那么调度程序运行,它不运行如果在该间隔内没有中断。

    这里DPC的作用是什么,和调度器有关系吗?

    引用自维基百科

    延迟过程调用 (DPC) 是 Microsoft Windows 操作系统 允许高优先级任务的系统机制(例如中断 处理程序)以推迟所需但优先级较低的任务以供以后使用 执行。这允许设备驱动程序和其他低级事件 消费者执行其处理的高优先级部分 快速,并安排执行的非关键附加处理 优先级较低。

    显然,DPC 与调度程序无关,因为它的工作是决定 CPU 上接下来要运行什么,而 DPC 是处理器延迟执行低优先级进程的一种机制。

    【讨论】:

    • 谢谢!调度程序可以决定不在进程之间切换吗?如果每次中断都发生上下文切换,这听起来有点奇怪。
    • 只有当中断可以被服务时,中断服务程序才会调用调度器。一旦调度器被调用,它必须执行上下文切换。
    【解决方案3】:

    定时器中断是一种与抢占密切相关的技术。当一个进程获得 CPU 时,一个定时器可能会被设置为一个指定的时间间隔。如果该进程在间隔结束时仍在使用 CPU,则被抢占。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多