操作系统_第三章 3.2 进程调度
进程调度
一、基本概念:进程调度是指在内存中选取就绪队列进程,为其分配cpu;
通过多道程序来尽量提高cpu利用率;
1、运行的宏观与微观:宏观是指通常说的运行,微观是指正在cpu上运行running
cpu的利用率理论上不会超过100%,受到硬件限制,如内存、
2、cpu-I/O 执行期
进程的执行包括了一系列的cpu周期执行与输入输出等待
3、cpu执行期分布(注意:执行期不是指整个程序执行需要的时间)
执行期分布直方图
呈指数型分布;cpu型程序(在cpu中执行的时间较长),I/O型程序(输入输出时间较长)
二、需要进程调度的情况(低级调度)
①从running到waiting需要调度
②从running到ready需要调度
③从waiting到ready需要调度
④terminates
在调度的过程中,需要将调度前进程的状态信息保存下来,保存到PCB;类似于中断现场的保护
信息的保存与恢复,在PCB、寄存器等中
调度延时:调度所花费的时间
调度算法
1、调度准则
①cpu利用率:越高越好
②吞吐量throughput:单位时间内完成作业的数量,越大越好
③周转时间Turnaround time:提交完毕到执行完成的时间,越短越好
~周转时间组成:后备等待事件+ready状态的时间+running状态时间+waiting状态的时间
④等待时间waiting time:就绪队列中等待的时间(可能不止等待一次)
⑤响应时间response time:提交完成到首次给出响应的时间;
提交——>后备——>运行状态(宏观)
后备队列——>运行状态需要高级调度
运行状态(微观):ready-running-waiting
2、调度算法
①先来先服务原则 FCFS,而不是先进先出;
哪个进程先进入就绪队列,就先执行哪个;可以用Gant 图(甘特图)来表示多个进程需要等待的时间
②短作业优先调度,SJF,short job first
分类:非抢占的/非剥夺式 抢占式/剥夺式的;其中抢占式的平均等待时间更短
等待时间=结束时间-执行时间-到达时间
优点:等式时间较短 ;缺点:不能确定后一个进程的执行期,出现“饥饿”(即执行时间长的进程可能一直被阻塞);
后一个进程的执行期不确定,使用指数平均方法来估计执行期
③最高优先级调度HPF priority
每一个进程都赋予一个优先级,优先级越高 就优先分配CPU;
分类:非抢占的/非剥夺式 抢占式/剥夺式的;SJF也是一张优先级调度
缺点:出现“饥饿”(即优先级低的进程可能一直被阻塞),解决方法:采用可变优先级(即动态优先级)
④时间片轮转 round robin RR
就绪队列中的进程轮流获取一个小的时间片q(通常为10-100毫秒,下限小于中断时间,太小则剥夺处理机制的次数频繁,系统开销增大,时间片过长也不好),轮转运行;
通常平均等待时间比SJF多,但响应时间比SJF少;
⑤多级队列调度
进程等待队列多个,前台队列(较为紧急)与后台队列,两个队列使用的调度算法可以不一样
⑥多级反馈队列调度
系统按多个优先级设置若干个就绪队列,优先级较低的队列中进程只有在优先级高的队列中为空时才能运行;对级别较高的队列分配较小的时间片,除了第n级队列(级别最低)是按RR法调度之外,其他各级队列均按先来先服务调度;当高等级中的进程获取时间片未能运行完成时,则转入下一个队列中…以此类推至级别最低的一个中,一直进行RR调度;