处理机调度
文章目录
一、处理机调度的概念、层次
1. 调度的基本概念
处理机调度就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行
2. 调度的三个层次
(1) 高级调度
从外存的后备队列中选择一个或多个作业,给他们分配内存等资源,建立相应的进程(建立 PCB),使他们获得竞争处理机的权利
注意:高级调度主要是指调入的问题,只有调入的时机需要操作系统确定,调出的时机必 然是等作业运行结束
(2) 中级调度
决定将哪个处于挂起状态的进程重新调入内存
挂起状态:暂时调到外存等待的进程为挂起状态,但PCB不会调到外存,而是常驻内存
注意:中级调度发生的频率比高级调度高
(3) 低级调度
按照某种算法从就绪队列中选取一个进程,将处理机分配给它
注意:低级调度是操作系统最基本的一种调度,频率最高
3. 进程的七状态模型
4. 三层调度的联系、对比
- 知识回顾
二、进程调度的时机与调度的方式
1. 进程调度的时机
2. 进程调度的方式
(1) 非剥夺调度方式
又称非抢占方式,只允许进程主动放弃处理机,在运行过程中即使有更紧迫的任务到达, 当前进程依然会继续使用处理机,直到该进程终止或主动请求进入阻塞态
(2) 剥夺调度方式
又称抢占方式,当一个进程正在处理机上执行时,如果有更紧迫的进程需要使用处理机, 则立即暂停正在执行的进程,将处理机分配给更紧迫的进程
3. 进程的切换
(1) 进程切换指的是让一个进程让出处理机,另一个进程占用处理机的过程
(2) 进程切换的过程完成了
① 对原来运行进程各种数据的保存
② 对新进程各种数据的恢复
注意:进程切换是有代价的,如果过于频繁的切换进程,会使整个系统的效率降低
- 知识回顾
三、调度算法的评价指标
1. CPU利用率
指的是CPU忙碌的时间占总时间的比例
利用率 = 忙碌的时间 / 总时间
2. 系统吞吐量
指的是单位时间内完成作业的数量
系统吞吐量 = 总共完成了多少道作业 / 总共花费了多少时间
3. 周转时间
指的是从作业提交给系统开始,到作业完成为止的这段时间间隔 (时间越短,用户满意度越高)
周转时间 = 作业完成时间 - 作业提交时间
平均周转时间 = 各作业周转时间之和 / 作业数
带权周转时间 = 作业周转时间(完成时间 - 提交时间) / 作业实际运行的时间 (必定>= 1)
平均带权周转时间 = 各作业带权周转时间之和 / 作业数
4. 等待时间
指的是作业/进程处于等待处理机的状态时间之和 (时间越短,用户满意度越高)
(1) 对于进程来说
等待时间指进程建立后等待被服务的时间之和
(2) 对于作业来说
不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间
5. 响应时间
指的是从用户提交请求到首次产生响应所用的时间 (时间越短,用户满意度越高)
- 知识回顾
四、调度算法的介绍
1. 先来先服务(FCFS)
按照进程到达的先后顺序调度 (执行完当前的进程才会执行下一个进程,不会被抢占),如图:
总结如下:
2. 短作业优先(SJF)
每次调度时选择当前已到达且运行时间最短的作业/进程 (执行完当前的进程才会执行下一个 进程,不会被抢占),如图:
总结如下:
3. 最短剩余时间优先(SRTN)
每当有进程加入就绪队列,即就绪队列发生改变时,就需要调度,如果新到达的进程剩余时间 比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行的进程重新回到就绪队列, 另外,当一个进程执行完成时也需要调度 (当前的进程会被抢占)
注意:最短剩余时间优先算法就是抢占式的短作业优先算法,如图:
4. 高响应比优先(HRRN)
只有当前运行的进程主动放弃CPU时,才需要进行调度,调度时计算所有就绪进程的响应比, 选响应比最高的进程上处理机 (执行完当前的进程才会执行下一个进程,不会被抢占)
响应比 = (等待时间 + 要求服务的时间) / 要求服务的时间,如图:
总结如下:
5. 时间片轮转(RR)
轮流让就绪队列中的进程依次执行一个时间片 (当前的进程会被抢占)
注意:
(1) 每次选择的上处理机的进程都是排在就绪队列队头的进程
(2) 一个进程执行完会移动到就绪队列的尾部
(3) 一个进程时间片到,刚下处理机要移至就绪队列的尾部的同时有一个新进程到达就绪队 列,则新进程先到达就绪队列的尾部
时间片轮转算法过程详解(假设时间片大小为2),如图:
(1) 0时刻,只有P1,P1运行2时间片
(2) 2时刻,P1下处理机(P1剩3),同时P2到达,P2先进入就绪队列(P2 → P1),P2运行2时间片
(3) 4时刻,P2下处理机(P2剩2),同时P3到达,P3比P2先到达就绪队列(P1 → P3 → P2),P1运行2时间片
(4) 5时刻,P4到达,此时的就绪队列(P1 → P3 → P2 → P4)
(5) 6时刻,P1下处理机(P1剩1),P3运行1时间片,此时的就绪队列(P3 → P2 → P4 → P1)
(6) 7时刻,P3下处理机(P3运行结束),P2运行2时间片
(7) 9时刻,P2下处理机(P2运行结束),P4运行2时间片,就绪队列(P4 → P1)
(8) 11时刻,P4下处理机(P4剩4),P1运行1时间片
(9) 12时刻,P1下处理机(P1运行结束),此后一直运行P4,16时刻所有进程结束
注意:
(1) 若时间片太大,使得每个进程都可以在一个时间片完成,此算法会退化为先来先服务算 法,因此时间片不能太大
(2) 若时间片太小,进程切换过于频繁,因此时间片不能太小
总结如下:
6. 优先级调度
(1) 非抢占式的优先级调度算法
每次调度时选择当前已到达且优先级最高的进程 (执行完当前的进程才会执行下一个进 程,不会被抢占),如图:
* P2与P4优先级相同,先到达的先执行
(2) 抢占式的优先级调度算法
每次调度时选择当前已到达且优先级最高的进程,当前进程主动放弃处理机时会发生调度, 就绪队列发生改变时会发生抢占 (当前的进程会被抢占),如图:
* 应当适当提升I/O型进程的优先级
总结如下:
7. 多级反馈队列调度
(1) 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
(2) 新进程到达时先进入第一级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程 还未结束,则进程进入下一级队列队尾,如果此时已经在最下级的队列,则重新放回最下级 队列的队尾
(3) 只有第K级队列为空时,才会为第K + 1级队列队头的进程分配时间片
(4) 被抢占处理机的进程重新放回原队列队尾
执行过程详解,如图:
P1运行1个时间片(P1剩7),P1进入第二级队列,P2到达第一级队列,P2运行1个时间片(P2剩3),P2进入第二级队列,第一级队列为空,执行第二级队列的P1,P1运行2时间片(P1剩5),P1进入第三级队列,执行第二级队列的P2,P2运行1个时间片(P2被抢占,P2剩2),P3到达第一级队列,执行P3,P3运行1个时间片(P3运行结束),执行第二级队列的P2,P2运行2个时间片(P2运行结束),剩余时间执行P1直至结束
总结如下: