高级进程管理深度解析
1. 进程调度基础
进程调度器是内核子系统,负责在系统的各个进程之间分配有限的处理器时间。简单来说,它决定了接下来要运行的进程。在决定哪些进程可以运行以及何时运行时,调度器要在最大化处理器使用率的同时,营造出多个进程在无缝并发执行的假象。
可运行进程是指未被阻塞的进程,而阻塞进程则是处于睡眠状态、等待内核 I/O 的进程。与用户交互、频繁读写文件或响应网络事件的进程,在等待资源可用时往往会花费大量时间处于阻塞状态,在此期间它们不可运行。如果只有一个可运行进程,进程调度器的工作就很简单:运行该进程。但当可运行进程数量超过处理器数量时,调度器的价值就体现出来了,此时一些进程运行,而另一些则需等待。决定哪些进程运行、何时运行以及运行多长时间,是进程调度器的基本职责。
操作系统的多任务处理有两种形式:协作式和抢占式。Linux 采用的是抢占式多任务处理,即调度器决定一个进程何时停止运行,另一个进程何时恢复运行。我们将暂停一个正在运行的进程以运行另一个进程的行为称为抢占。进程在被调度器抢占之前允许运行的时间长度称为时间片,因为调度器为进程分配了处理器时间的“一片”。
在协作式多任务处理中,进程直到自愿决定停止运行才会停止。自愿暂停自身被称为让步。理想情况下,进程会经常让步,但操作系统无法强制这种行为。一个不规范或有问题的程序可能会长时间运行,破坏多任务处理的假象,甚至导致整个系统崩溃。由于这种方法的缺点,现代操作系统几乎普遍采用抢占式多任务处理,Linux 也不例外。
Linux 的进程调度器多年来发生了变化。自 Linux 内核版本 2.6.23 起可用的当前进程调度器称为完全公平调度器(CFS)。这个名称源于调度器采用了公平
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



