【Linux】内核学习笔记(二)——进程调度

本篇是《Linux内核学习笔记》系列的第二篇。

进程调度程序是内核的一个子系统,它将决定哪个进程投入运行、何时运行以及运行多长时间。它负责在运行态进程(TASK_RUNNING)间分配有限的处理器资源,对多任务操作系统的性能起决定性作用。

进程调度程序的根本任务,就是从一组可运行状态的进程中选一个出来运行。

1. 概述

1.1. 多任务、抢占、时间片

多任务系统分为非抢占式和抢占式,对于抢占式系统,调度程序会预先为进程分配时间片,一旦时间片消耗完,调度程序会使该进程进入等待状态。而非抢占式系统只能靠进程本身让步(yielding)来维持系统运作。

现代操作系统基本都是抢占式多任务的。因为可以想象,只要有一个进程坚决不做让步,系统就会崩溃。

1.2. Linux调度程序

Linux从2.5版本起使用O(1)调度程序。如其名字所示,它在多处理器环境下性能优秀,但对响应时间敏感的程序,例如桌面实时交互程序,性能不佳。为此,开发人员从2.6版本开始引入了“反转楼梯最后期限调度算法”,并在2.6.23中进一步进化并取代了O(1)调度,称为“完全公平调度算法”。

不过十个年头过去,Linux很可能又产生了新的调度算法,我们拭目以待。

2. 进程调度策略

(TBD

发表评论

您的电子邮箱地址不会被公开。