调度程序队列和中断的工作

时间:2015-01-03 16:30:31

标签: linux operating-system

Galvin的操作系统教科书上写着 "如果就绪队列中有n个进程且时间量是q, 然后每个进程以最多q个时间单位的块的形式获得1 / n的CPU时间。 每个进程必须等待不超过(n - 1)x q个时间单位,直到它为止 下一次量子。例如,有五个进程,时间量为20 毫秒,每个进程每100毫秒最多可达20毫秒。"

这是对的吗?如果在CPU执行这些进程时发生中断,会发生什么。一个过程可能需要等待更长的时间然后或者我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:1)

这取决于中断是否会改变就绪线程集,正在使用的调度算法,核心的可用性以及其他内容。

  

或者我错过了一些明显的东西?

可能现代的预先安排的操作系统管理核心上的CPU执行,作为仅供给可以使用它的线程的资源。中断(系统调用和硬件中断)是可以更改就绪线程集的事件。定时器中断只是其中之一。

定义像' quanta'这样的术语。可能会导致误解premptive调度程序如何处理核心上的CPU执行作为资源。

  

如果在CPU执行这些操作时发生中断,会发生什么   流程。一个过程可能需要等待更长的时间

是的,可能。如果中断(通过驱动程序的系统调用或硬件中断)更改了就绪线程集,则调度算法将运行并可能决定抢占在中断之前运行的其中一个线程,而不是刚刚成为的线程准备。显然,被抢占的线程之后无法继续前进,直到它被另一个中断再次运行,所以,是的,一个进程可能需要等待更长的时间。

答案 1 :(得分:0)

这取决于您选择的调度程序策略,它取决于您使用的内核。如果你使用RT补丁(实时补丁),那么事情与标准内核有很大不同。您必须知道系统运行的CPU核心数量。调度程序本身作为其中一个计时器irq的一部分运行,并且本身需要时间。我不知道是否每20毫秒或(20 - irqtime)毫秒进行调度。而且您还必须知道系统中有多少进程优先级。还要考虑到有一些工作流程具有高优先级。它们主要用于处理慢速部分" of irqs。

也许你看看:

http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html

http://www.embedded.com/design/operating-systems/4371651/Comparing-the-real-time-scheduling-policies-of-the-Linux-kernel-and-an-RTOS-