一、进程调度算法
进程发生CPU调度情况:
- 1)从运行状态转到等待状态;
- 2)从运行状态转到就绪状态;
- 3)从等待状态转到就绪状态;
- 4)从运行状态转到终止状态。
1)和4)称为非抢占式调度,2)和3)称为抢占式调度。
补充:
非抢占式:当进程正运行时,就一直运行,直到该进程完成或因某事被阻塞时,才把CPU让给其他进程。
抢占式:当进程正运行时,就会一直运行,可以被打断,使其把CPU让给其他进程。抢占原则有三种:时间片、优先级、短作业优先。
调度算法影响的是等待时间(进程在就绪队列中等待调度的时间总和),而不能影响进程真正在使用CPU
和IO
的时间。
1.1 FCFS(First Come First Severd,先来先服务)
描述:每次从就绪队列选择最先进入队列的进程,然后一直运行至退出或被阻塞,才继续从队列中选择第一个进程接着运行。
利弊:对长作业有利,不利于短作业。适用于CPU繁忙型系统,不适用于IO繁忙型。
1.2 SJF(Shortest Job First,最短作业优先)
描述:优先选择运行时间最短的进程来运行。
利弊:有助于提高系统吞吐量,对长作业不利。
1.3 HRRN(Highest Response Ratio Next,高响应比优先调度算法)
描述:每次进行进程调度时,先计算响应比优先级,然后把最高的进程投入运行。
分析:如果两个进程等待时间相同,要求服务时间越短,响应比越高,这更有助于短作业选中运行。
如果两个要求服务时间相同,等待时间越长,响应比越高,等待时间长的长作业响应比就升到很高,从而得以运行,即自然兼顾了长作业进程。
1.4 RR(Round Robin,时间片轮转)
描述:如果时间片用完,进程还在运行,那将此进程从CPU释放出来,并把CPU分配另一个进程;如果该进程在时间片结束前阻塞或结束,则CPU立即进程切换。
补充:
1、最古老、简单、公平、广泛的调度算法。每个进程被分配一个时间段,称为时间片(Quantum),即允许该进程在该时间段中运行。
2、时间片长度很关键,太短容易导致过多上下文切换,降低CPU效率;太长可能引起短作业响应时间变长。设为20ms~50ms,通常是毕竟合理的折中值。
1.5 HPF(Highest Priority First,最高优先级)
描述:从就绪队列选择最高优先级的进程进行运行。
补充:
静态优先级:创建进程已确定优先级,整个运行时间都不会变化。
动态优先级:根据进程动态调整,如随时间推移提高等待进程优先级。
非抢占式:运行完当前进程ÿ