CPU的三级调度
1.高级调度----作业调度
按一定的算法把外存上处于后备作业队列中的作业调入内存,为它们分配所需要的资源并创建进程,然后将新创建的进程插入到系统的就绪队列中。
2.中级调度----交换调度
在内存使用紧张的情况下,将内存中暂时无法运行的进程挂起,将其从内存调至外层
3.低级调度----进程调度
按照一定的算法将CPU分配给就绪队列中的某个进程
几种调度算法
周转时间=完成时间-提交时间=运行时间+等待时间
带权周转时间=周转时间/运行时间
先来先服务调度算法—FCFS
最简单的一种调度算法,可以用于作业调度也可以用于进程调度,非抢占式调度算法
基本思想:每次从进程就绪队列中选择一个最先进入的进程,然后将CPU分配给该进程使其运行直到结束,中间不允许被打断。
短作业/短进程调度算法(SJF/SPF)
基本思想:每次都从就绪队列中选择运行时间最短的作业或最短的进程,然后将CPU分配给它,当两个作业或进程运行时间一样时,按FCFS再进行选择----------不可抢占
SJF可以保证平均等待时间最短
时间片轮转算法(RR)
基本思想:先按FCFS选择第一个进程,然后将CPU分配给该进程,当时间片用完时,CPU放弃该进程,该进程进入就绪队列的队尾,然后重新选择当前就绪队列中的第一进程。
当时间片过长时,RR就近似为FCFS
高响应比优先调度算法(HRRF)
响应比=响应时间/运行时间=(运行时间+等待时间)/运行时间
基本思想:每次进行进程或作业选择时,先计算该作业或进程的响应比,响应比大的优先调度,HRRF是对FCFS和SJF算法的一种折中。
多级反馈队列调度算法(MLFQ)
基本思想:将就绪状态的进程设置多个队列,第一级队列的优先级最高,但时间片最少,以下各级队列的优先级逐次降低但是时间片逐渐增加,对于同一级队列,采样FCFS原则排序。
1.抢占式调度
2.若某个进程在第n级队列。当时间片用完还未结束,则将该进程加入下一级队列的队尾
3.只有前一级队列全部运行完为空时才能调度该级队列