【Linxu内核设计与实现】-第4章 进程调度

时间:2021-03-07 15:47:54

第4章 进程调度

主要内容

(1)进程调度:是确保内核稳定工作的一个内核子系统。在可运行态进程之间分配有限的处理器资源的内核子系统。

(2)作用:进程调度决定将哪个进程投入运行,何时运行,运行多长时间。

(3)效果:通过合理的调度,系统资源才能最大限度的发挥,多进程才会有并发执行的效果。

(4)限制:只要有可执行的进程,那么总会有进程在执行。可运行进程比处理器个数多,就注定某一个时刻就进程不能执行。

(5)基本工作:在可运行状态的进程中选择一个进程来执行,是调度程序的基本任务。

4.1 多任务

(1)定义:能同时并发地交互执行多个进程的操作系统

(2)作用:无论单处理器还是多处理器,多任务操作系统可以使多个进程处于堵塞或者休眠状态。

(3)多任务系统分类:

  • 非抢占式
  • 抢占式(Linux)

(4)调度程序决定什么时候停止一个进程的运行,以便其它进程得到执行计划,这个强制挂起的动作就是抢占。

(5)进程时间片:进程在被抢占前的运行时间,称为时间片,时间片是分配给每个可运行进程的处理器时间段。

(6)有效管理时间片能使调度程序从系统全局的角度做出调度决定,避免个别进程独占系统资源。

(7)目前现代操作系统多采用动态时间片的计算方式,并引入可配置的计算策略。Linux独一无二的“公平”调度程序,并没有采取时间片来达到公平调度。

(8)非抢占,只能由进程自身主动让步,来提前结束本进程执行,某个进程可能超出用户预计时间,容易使系统崩溃。

4.2 Linux的进程调度

(1)2.4及之前内核版本,调度程序十分简陋,无法在以下环境运行。

  • 进程过多
  • 多处理器

(2)O(1)调度器

  • 数以十计的多处理器下表现近乎完美
  • 调度响应时间敏感的程序有不足
  • 对大服务器的工作负载很理想
  • 在有很多交互进程程序运行的桌面系统上表现不佳

(3)反转楼梯最后期限调度算法(RSDL):

将公平调度的概念进入linux调度程序,在2.6.23中替代O(1)调度算法,此刻被称为“完全公平调度算法(CFS)”。