参考视频:王道计算机考研 操作系统_哔哩哔哩_bilibili
第二章 进程管理2
目录
4.2 短作业优先(SJF,Shortest Job First)短进程优先(SPF)
二、处理机调度
1.处理机调度的概念和层次
处理的事件过多,无法同时处理,就需要选取某种规则来决定调入任务的合理顺序,这就是“调度”所研究的问题。
1.1 高级调度(作业调度)
从外存后备队列选一个作业,分配资源,调入内存建立PCB,竞争处理机。调出时撤销PCB。
1.2 中级调度(内存调度)
为提高内存利用率和系统吞吐量,将内存中暂时运行不到的进程调至外存等待(挂起状态),而PCB常驻内存,记录外存的存放位置,待有运行条件且内存稍有空闲时,重新调入内存。
一个进程在内存、外存反复横跳,因此中级调度发生的频率比高级调度更高。
补充:七状态模型(部分自命题考研涉及)
在创建态,若内存已经不够,就直接进入就绪挂起。
挂起与阻塞不同,挂起将内存中进程的程序段和数据段调至外存,阻塞态依旧存在于内存中。
1.3 低级调度(进程调度)
就绪队列选取一进程,将处理机分给它。进程调度是最基本的一种调度,发生频率最高。
2.进程调度的时机、切换与过程、方式
补充:
临界资源:一个时间段内只允许一个进程使用的资源。
临界区:访问临界资源的那段代码。
内核程序临界区一般用来访问某种内核数据结构的,如进程的就绪队列。
①“狭义的进程调度”:选中一个要运行的进程。
②“广义的进程调度”:选择进程;进程切换。
(选择的进程可以是刚刚被暂停的进程,也可能是另一个进程,后一种情况就需要进程切换)
③进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
【主要完成了:1.保存原有进程数据;2.恢复新进程数据】
因此,进程切换是有代价的,不能过于频繁,否则会降低系统的效率。
3.评价调度算法
1️⃣CPU利用率
2️⃣系统吞吐量
3️⃣周转时间(四个指标)
从作业提交到完成的时长。
- 作业在外存后备队列等待的时间
- 进程在就绪队列等待的时间(就绪态)
- 进程在CPU上执行的时间(运行态)
- 进程等待I/O操作完成的时间(阻塞态)
(“等一分钟,用厕所十分钟” 与 “等十分钟,用一分钟” 的用户感受不同)
于是出现了带权周转时间。
对于周转时间相同的作业,实际运行时间长,带权周转时间更小,用户更满意。
对于实际运行时间相同的作业,周转时间短的作业带权周转时间更小,用户更满意。
4️⃣等待时间
对于进程,等待时间是指进程(PCB)建立后等待被服务的时间之和。顺便一提,I/O操作也算服务的时间,因此不能算入等待时间中;对于作业,还要考虑作业在后备队列中等待的时间。
也有“平均等待时间 = 等待时间 / 作业数”来评价整体性能
5️⃣响应时间
从用户提交请求到首次产生响应所用的时间。
4.调度算法
饥饿:某进程/作业长期得不到服务。
4.1 先来先服务(FCFS)
①算法思想:“公平”(先到先得);
②算法规则:按到达的先后次序。先到达后备队列的作业,先到达就绪队列的进程;
③非抢占式算法
④优点:公平、简单。缺点:对长作业有利,对短作业不利。
⑤不会饥饿,因为每个作业都会服务到。
4.2 短作业优先(SJF,Shortest Job First)短进程优先(SPF)
①算法思想:较少的平均等待时间、平均周转时间、平均带权周转时间(尽快处理完短作业);
②算法规则:服务时间最短的进程/作业优先得到服务;
③非抢占式算法;
④优点:较短的平均等待时间;缺点:对短作业有利;
⑤可能产生长作业饥饿现象。
抢占式版本——最短剩余时间优先算法(SRTN):每当有新进程加入时比较剩余时间。
SRTN将导致最短的平均等待时间、平均周转时间。
4.3 高响应比优先(HRRN)
①算法思想:综合考虑作业/进程的等待时间和要求服务的时间;
②算法规则:选择响应比最大的,为其服务;
③非抢占式的。只有当一个作业/进程主动放弃处理机时,才需要调度,计算响应比;
④(另一个条件相同时)等的越久响应比越大;要求服务时间越短响应比越大;
【相同等待时间下,短作业占优;而随着时间的推移,长作业等的久了,响应比也会越来越大】
⑤故不会导致饥饿。
小结
适合早期的批处理系统。
4.4 时间片轮转调度算法(RR)
只能用于进程调度,只有作业建立进程后,才能分配处理机时间片。
①算法思想:公平地、轮流地为各个进程服务(每个进程都服务一定时间间隔);
②算法规则:时间片用完后强行剥夺处理机,进程重新放到就绪队列队尾;执行完主动放弃;
③抢占式,时钟中断;
④若时间片太大(下第二个图)使每个进程可在一个时间片内完成,就会退化为FCFS算法;
【若用户在自己的进程时间片外通过键盘调度,就要等剩下进程轮流后才能响应,增大响应时间】
若时间片太小,进程切换过于频繁,系统会花大量时间处理切换,实际执行时间减少;
⑤每个进程都有份,不会饥饿。
时间片为2:
时间片为5:
4.5 优先级调度算法
可用于作业,也可以用于进程, 甚至I/O调度中。
①算法思想:按照紧急程度;
②算法规则:优先级最高的 作业 / 进程;
③可抢占;
④优点:适用实时操作系统,灵活调整调度的偏好程度;
⑤缺点:源源不断地高优先级到来,会导致饥饿
(有的题目优先数与优先级成反比)
非抢占式优先级调度:
抢占式优先级调度
补充:
- 可按优先级分为多个就绪队列
- 根据优先级是否可以动态改变,分为静态优先级和动态优先级两种。
4.6 多级反馈队列调度算法
FCFS算法公平;SJF算法会尽快处理完短作业;时间片调度算法让各个进程得到及时响应;优先级调度算法可以灵活调整进程被服务的机会。
①综合所有的长处,折中一个算法,提出多级反馈队列算法;
②用于进程调度;
③抢占式算法;
④一直处在最底层的进程会饥饿。
1)新进程到达1级队列,按FCFS排队;
2)时间片用完未结束,放入下一级队列队尾(若已在最下级,就重新放入最下级队列);
3)只有k级队列空了,才为k+1级分配时间片;
4)2级及以下,时间片未完(即正在使用CPU)时出现新进程入1级,则被抢占处理机,进程放回原队列队尾,不入下一级。
小结:
这三种算法适用于交互式系统。