前言
本文梳理CPU调度相关知识。
处理机调度
处理机基本概念
在多道程序系统中,进程的数量往往是多于CPU的个数的;
CPU调度,就是从就绪队列中按照一定的算法选择一个进程并将CPU分配给它,以实现进程的并发执行。
调度的三个层次
-
高级调度:从后备队列中选择合适的作业将其调入内存、为其创建进程;
按照一定的规则从外存上处于后备队列的作业中选择一个或多个作业,给他们分配内存等必要资源,并建立相应的进程、建立PCB,以使他们获得竞争处理机的权利。
高级调度是外存与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB;
高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来调度。 -
中级调度:从挂起队列中选择合适的进程重新调入内存;
引入虚拟存储技术之后,可以将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存空间又有空闲时,再重新调入内存。
这么做的目的是为了提高内存利用率 和 系统吞吐量。
暂时调到外存等待的进程状态为挂起状态。但PCB是常驻内存的。PCB中会记录进程数据在外存中的存放位置、进程状态等信息。
被挂起的进程PCB会被放到挂起队列中。
中级调度发生的频率会比高级调度要高很多,高级调度只会在进程创建被调入,但中级调度的进程会被多次调出、调入内存。 -
低级调度(进程调度):从就绪队列中选择一个进程为其分配CPU
低级调度也叫进程调度,是操作系统中最基本的一种调度,是操作系统必备的一种调度。
低级调度频率最高,毕竟是时间片轮转。 -
三种调度的联系和对比
进程调度的时机、切换与过程、方式
进程调度的时机
进程调度即低级调度,就是从就绪队列中选择一个进程为其分配CPU。
-
需要进行进程调度与切换的情况
- 当前运行的进程主动放弃CPU
进程正常终止
进程运行过程中发生异常而终止
进程主动请求阻塞 - 当前进程的进程被动放弃CPU
分给进程的时间片用完
有更紧急的事需要处理
有更高优先级的进程进入就绪队列
- 当前运行的进程主动放弃CPU
-
不能进行进程调度与切换的情况
在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换;
进程在操作系统内核程序临界区中;
在原子操作过程中(原语);
进程调度的方式
-
非抢占式
即只允许进程主动放弃CPU,即使有优先级更高的进程到来,当前进程依然继续使用CPU,直到该进程终止或主动进入阻塞态。
实现简单,系统开销小,但无法及时处理其他任务,适合早起批处理系统; -
抢占式
当一个进程正在运行时,有优先级更高的进程到来,则立即暂停正在执行的进程,将CPU分配给该进程。
可以优先处理更紧急的任务,也可以实现各个进程按照时间片轮流执行的功能。
适合于分时操作系统和实时操作系统。
进程的切换与过程
-
进程切换:
是指一个进程让出CPU,由另一个进程占用处理机的过程。 -
进程的切换的过程:
对原来正在运行的进程各种数据的保存,对新的进程各种数据的恢复; -
进程切换是有代价的,如果过于频繁的进行进程切换,必然会使整个系统的效率降低。
调度算法的评价指标
-
CPU利用率:CPU忙碌的时间 / 总时间
-
系统吞吐量:单位时间内完成作业的梳理; 总共完成了多少道作业/总时间
-
周转时间:指从作业被提交给系统开始,到作业完成的时间间隔。作为完成时间 - 作业提交时间;
包含四个部分:作业在外存后备队列上等待被调入内存(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间; -
带权周转时间:作业周转时间 / 作业实际运行时间;
-
等待时间:作业处于等待CPU状态时间之和;
-
响应时间:从用户提交请求到首次产生响应所用的时间;分时操作系统关注这个。
CPU调度算法
-
适用于早期的批处理系统的算法(不区分任务的紧急程度,交互性体验很糟糕):
先来先服务调度算法 FCFS
短作业优选调度算法 SJF
高响应比优先调度算法 HRRN
-
适用于交互式系统的调度算法:
时间片轮转调度算法
优先级调度算法
多级反馈队列调度算法
先来先服务FCFS
First Come First Serve
短作业优选 SJF
Shortest Job First
高响应比优先 HRRN
Highest Response Ratio Next
时间片轮转调度算法RR
Round-Robin
- 时间片不能太大。
如果时间片太大,使得每一个进程都在一个时间片运行完成,则时间片轮转算法退化为先来先服务算法,会增大进程响应时间; - 时间片不能太小
因为进程调度、切换是有时间代价的,如果时间片太小,会导致进程切换过于频繁,会有大量时间消耗在切换上,从而导致进程真正运行时间太小。 - 合适的时间片大小
一般来说,合适的时间片大小就是要让切换进程的开销占比不超过1%。