空闲进程的代码是什么?

时间:2011-02-25 00:01:42

标签: process cpu

当cpu没有做任何事情时,它会运行空闲进程。我听说这个进程会查找正在队列中等待的程序,以便cpu可以运行它们。这就是它的全部吗?它的代码是什么样的?我也想知道各种操作系统中系统空闲进程的文件名。

5 个答案:

答案 0 :(得分:12)

这个问题包含几个错误的默会假设。以下是一些提示:

  • 它不一定是空闲的进程这是非多线程操作系统上的空闲进程,但不是多线程操作系统上的空闲进程。专注于后一种操作系统的过程集中在错误的事情上。虽然Microsoft Windows NT将其称为“空闲进程”,并在其任务管理器中显示,但重要的机制是空闲线程。空闲进程只是这些线程为了记账而属于的进程。 (所有线程必须属于进程。)没有文件名。 (进程在许多系统上甚至没有具有名称。)
  • 并非所有操作系统都拥有这些空闲进程/线程。在几个较旧的单处理器操作系统上,当无事可做时空闲系统只是调度程序中的一个特例。这种方法对于多处理器操作系统是有问题的(当一个CPU在另一个CPU想要分派到的进程/线程中空闲时),这就是为什么一个特殊进程/线程的想法总是准备运行,每个处理器一个系统,以便CPU可以在自己的私有线程上下文中空闲,成为常态。
  • 空闲进程/线程的作用是特定于CPU的。空闲进程/线程的重要质量是必须始终准备好运行。它绝不能阻止。但它可以做任何它喜欢的事情。然而,通常“无论喜欢什么”都意味着“尽可能少”。规范空闲线程只是一个无限循环:一个无条件分支指令分支到自身。多个处理器体系结构提供了x86 hlt指令的等价物,其目的一般是减少空闲处理器对系统总线的使用(当然, non -idle处理器可以使用该总线带宽)。因此,在许多架构中,无限循环重复执行这些指令。一些处理器在执行这样的指令时可以在总线上发信号通知它们的“空闲”状态,外部硬件可以识别并采取行动(例如通过减慢总线时钟并消耗更少的功率)。同样,空闲指令可能会导致处理器本身执行时钟减速和省电等操作。
  • 低级别调度不是“线程内”的事情。毕竟,它是低级调度程序,通常称为调度程序,它决定了什么线程甚至跑到第一位。它是在线程内运行的中级和(有时很少)高级调度。例如,中级调度程序可以是每N秒唤醒一次的线程,并扫描线程表,重新计算动态优先级线程的线程优先级。或者它可能是一个线程,每隔N秒,将整个进程段推送到磁盘并再次将它们拉回,具体取决于进程优先级和最近的CPU使用情况。 (后一种类型在现代分页操作系统中很少见,但它存在于分段交换操作系统中。)

答案 1 :(得分:6)

在太空关键嵌入式系统中,空闲过程用于scrub memory,以检查宇宙射线是否引入了位翻转。

答案 2 :(得分:3)

空闲过程不做任何事情;操作系统本身负责调度要运行的进程。空闲进程本身只是循环HLT指令。 (来源:wikipedia

答案 3 :(得分:2)

只要进程处于其时间片的末尾,并且每当进程执行阻塞操作时,OS就会运行调度程序。然后,调度程序选择要运行的下一个进程。在我所知道的平台上,将调度程序视为一个过程是没有意义的。

以下是scheduling的更多信息。

答案 4 :(得分:0)

空闲进程用于调度程序在没有进程执行时运行某些程序。 尤其取决于操作系统。

为了简单理解,我们可以说空闲进程是一个无限循环,它将在没有进程运行时得到调度