定时器中断和调度

3

我很难理解定时器中断和系统调度程序之间的关系以及延迟过程调用在其中的作用。以下是我的理解(如果我错了,请纠正):

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

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

因此,我的第一个问题是:调度程序实际上是在每个间隔上运行吗?

我的第二个问题是:DPC在这里扮演什么角色,它是否与调度程序有关?

(我试图从维基百科上理解,但并没有完全理解那里提到的“分派”是什么意思)

谢谢。

3个回答

3

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

在中断处理过程中没有上下文切换。无论何时,都由正在运行的进程处理中断(某些操作系统使用不同的术语,但实质上是相同的)。

2) 处理程序运行调度程序,检查是否有某个进程已经用尽了运行时间或因IO操作停止执行等...

这完全取决于操作系统。然而,它不会检查“因I/O操作而停止执行”,因为这是在阻塞的I/O操作排队时发生的。

那么我的第一个问题是:调度程序实际上是否在每个间隔上运行?

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

如果将检查进程量子是否过期视为调度程序的一部分,则可能会说调度程序可能会在每个计时器间隔上运行。

我的第二个问题是:DPC在这里的作用是什么,它是否与调度程序相关?

中断处理程序需要非常短的时间和堆栈空间。许多操作系统安排将事件传递给进程。在其核心,像VMS一样,Windoze是一个软件中断驱动的系统。这些可以在定时器中断的一部分被传递给进程。

可能会出现���下序列:

  1. 进程将异步I/O请求排队 . . . 时间过去了。
  2. 进程再次执行。
  3. 当I/O请求完成时发生中断。操作系统通过将其排队到进程中进行响应。 4.进程再次执行
  4. 计时器中断发生。中断处理程序导致向进程发送异步通知。

现在我完全理解1)了,但是“那在很大程度上取决于你认为什么是调度程序”对我来说仍然含糊不清。 - undefined
为什么很难找到关于定时器引起上下文切换的中断相关问题的答案呢?当有人点赞他/她的回答但实际上并不理解时,人们真的会感到开心吗...? - undefined

1
在每个时间间隔中,调度程序不会运行,但会检查中断输入(对于电平触发的中断),如果在那个间隔中发生中断,则只有调度程序才会运行,如果在该间隔中没有中断,则不会运行。DPC的作用是允许高优先级任务推迟所需但优先级较低的任务以供以后执行,因此其与调度程序无关,因为其工作是决定下一个在CPU上运行的任务,而DPC是处理器延迟执行低优先级进程的机制。

谢谢!调度程序可以决定不在进程之间进行切换吗?如果在每次中断时都发生上下文切换,听起来有点奇怪。 - undefined
只有当中断可以被处理时,中断服务例程才会调用调度程序。一旦调度程序被调用,它必须执行上下文切换。 - undefined

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接