第二章 进程管理2

目录

二、处理机调度

1.处理机调度的概念和层次

1.1 高级调度(作业调度)

1.2 中级调度(内存调度)

1.3 低级调度(进程调度)

2.进程调度的时机、切换与过程、方式

3.评价调度算法

4.调度算法

4.1 先来先服务(FCFS)

4.2 短作业优先(SJF,Shortest Job First)短进程优先(SPF)

4.3 高响应比优先(HRRN)

4.4 时间片轮转调度算法(RR)

4.5 优先级调度算法

4.6 多级反馈队列调度算法


二、处理机调度

1.处理机调度的概念和层次

LVS调度算法 调度算法视频_操作系统

处理的事件过多,无法同时处理,就需要选取某种规则决定调入任务的合理顺序,这就是“调度”所研究的问题。

1.1 高级调度(作业调度)

外存后备队列选一个作业,分配资源,调入内存建立PCB,竞争处理机。调出时撤销PCB。

1.2 中级调度(内存调度)

为提高内存利用率和系统吞吐量,将内存中暂时运行不到的进程调至外存等待(挂起状态),而PCB常驻内存,记录外存的存放位置,待有运行条件且内存稍有空闲时,重新调入内存

一个进程在内存、外存反复横跳,因此中级调度发生的频率比高级调度更高

补充:七状态模型(部分自命题考研涉及)

LVS调度算法 调度算法视频_LVS调度算法_02

在创建态,若内存已经不够,就直接进入就绪挂起。

挂起与阻塞不同,挂起将内存中进程的程序段和数据段调至外存,阻塞态依旧存在于内存中。

1.3 低级调度(进程调度)

就绪队列选取一进程,将处理机分给它。进程调度是最基本的一种调度,发生频率最高。

LVS调度算法 调度算法视频_调度算法_03

2.进程调度的时机、切换与过程、方式

LVS调度算法 调度算法视频_时间片_04

LVS调度算法 调度算法视频_LVS调度算法_05

LVS调度算法 调度算法视频_调度算法_06

补充:

临界资源:一个时间段内只允许一个进程使用的资源。

临界区:访问临界资源的那段代码。 

内核程序临界区一般用来访问某种内核数据结构的,如进程的就绪队列。

LVS调度算法 调度算法视频_LVS调度算法_07

①“狭义的进程调度”:选中一个要运行的进程。

②“广义的进程调度”:选择进程;进程切换

(选择的进程可以是刚刚被暂停的进程,也可能是另一个进程,后一种情况就需要进程切换)

③进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。

【主要完成了:1.保存原有进程数据;2.恢复新进程数据】

因此,进程切换是有代价的,不能过于频繁,否则会降低系统的效率。

3.评价调度算法

LVS调度算法 调度算法视频_LVS调度算法_08

1️⃣CPU利用率

LVS调度算法 调度算法视频_操作系统_09

2️⃣系统吞吐量

LVS调度算法 调度算法视频_进程调度_10

3️⃣周转时间(四个指标)

从作业提交到完成的时长。

  • 作业在外存后备队列等待的时间
  • 进程在就绪队列等待的时间(就绪态)
  • 进程在CPU上执行的时间(运行态)
  • 进程等待I/O操作完成的时间(阻塞态)

LVS调度算法 调度算法视频_进程调度_11

LVS调度算法 调度算法视频_LVS调度算法_12

 (“等一分钟,用厕所十分钟” 与 “等十分钟,用一分钟” 的用户感受不同)

于是出现了带权周转时间。

LVS调度算法 调度算法视频_进程调度_13

对于周转时间相同的作业,实际运行时间长,带权周转时间更小,用户更满意。

对于实际运行时间相同的作业,周转时间短的作业带权周转时间更小,用户更满意。 

LVS调度算法 调度算法视频_时间片_14

4️⃣等待时间 

对于进程,等待时间是指进程(PCB)建立后等待被服务的时间之和。顺便一提,I/O操作也算服务的时间,因此不能算入等待时间中;对于作业,还要考虑作业在后备队列中等待的时间。

也有“平均等待时间 = 等待时间 / 作业数”来评价整体性能

5️⃣响应时间

从用户提交请求到首次产生响应所用的时间。

4.调度算法

LVS调度算法 调度算法视频_时间片_15

饥饿:某进程/作业长期得不到服务

LVS调度算法 调度算法视频_进程调度_16

4.1 先来先服务(FCFS)

①算法思想:“公平”(先到先得);

②算法规则:按到达的先后次序。先到达后备队列的作业,先到达就绪队列的进程;

③非抢占式算法

④优点:公平、简单。缺点:对长作业有利,对短作业不利。

⑤不会饥饿,因为每个作业都会服务到。

LVS调度算法 调度算法视频_时间片_17

4.2 短作业优先(SJF,Shortest Job First)短进程优先(SPF)

①算法思想:较少的平均等待时间、平均周转时间、平均带权周转时间(尽快处理完短作业);

②算法规则:服务时间最短的进程/作业优先得到服务;

③非抢占式算法;

④优点:较短的平均等待时间;缺点:对短作业有利;

⑤可能产生长作业饥饿现象。

LVS调度算法 调度算法视频_调度算法_18


抢占式版本——最短剩余时间优先算法(SRTN):每当有新进程加入时比较剩余时间。

LVS调度算法 调度算法视频_操作系统_19

LVS调度算法 调度算法视频_调度算法_20

SRTN将导致最短的平均等待时间、平均周转时间


4.3 高响应比优先(HRRN)

①算法思想:综合考虑作业/进程的等待时间和要求服务的时间;

②算法规则:选择响应比最大的,为其服务;

LVS调度算法 调度算法视频_LVS调度算法_21

③非抢占式的。只有当一个作业/进程主动放弃处理机时,才需要调度,计算响应比;

④(另一个条件相同时)等的越久响应比越大;要求服务时间越短响应比越大;

【相同等待时间下,短作业占优;而随着时间的推移,长作业等的久了,响应比也会越来越大】

⑤故不会导致饥饿。

LVS调度算法 调度算法视频_时间片_22

LVS调度算法 调度算法视频_进程调度_23


小结

LVS调度算法 调度算法视频_调度算法_24

适合早期的批处理系统。


LVS调度算法 调度算法视频_时间片_25

4.4 时间片轮转调度算法(RR)

只能用于进程调度,只有作业建立进程后,才能分配处理机时间片。

①算法思想:公平地、轮流地为各个进程服务(每个进程都服务一定时间间隔);

②算法规则:时间片用完后强行剥夺处理机,进程重新放到就绪队列队尾;执行完主动放弃;

③抢占式,时钟中断;

④若时间片太大(下第二个图)使每个进程可在一个时间片内完成,就会退化为FCFS算法;

【若用户在自己的进程时间片外通过键盘调度,就要等剩下进程轮流后才能响应,增大响应时间】

时间片太小,进程切换过于频繁,系统会花大量时间处理切换,实际执行时间减少;

⑤每个进程都有份,不会饥饿。

时间片为2:

LVS调度算法 调度算法视频_操作系统_26

时间片为5:

LVS调度算法 调度算法视频_LVS调度算法_27

4.5 优先级调度算法

可用于作业,也可以用于进程, 甚至I/O调度中。

①算法思想:按照紧急程度;

②算法规则:优先级最高的 作业 / 进程;

③可抢占;

④优点:适用实时操作系统,灵活调整调度的偏好程度;

⑤缺点:源源不断地高优先级到来,会导致饥饿

LVS调度算法 调度算法视频_调度算法_28

(有的题目优先数与优先级成反比)

非抢占式优先级调度:

LVS调度算法 调度算法视频_LVS调度算法_29

 抢占式优先级调度

LVS调度算法 调度算法视频_时间片_30

补充:

  • 可按优先级分为多个就绪队列
  • 根据优先级是否可以动态改变,分为静态优先级动态优先级两种。

4.6 多级反馈队列调度算法

FCFS算法公平;SJF算法会尽快处理完短作业;时间片调度算法让各个进程得到及时响应;优先级调度算法可以灵活调整进程被服务的机会。

①综合所有的长处,折中一个算法,提出多级反馈队列算法;

②用于进程调度;

③抢占式算法;

④一直处在最底层的进程会饥饿。

LVS调度算法 调度算法视频_时间片_31

1)新进程到达1级队列,按FCFS排队;

2)时间片用完未结束,放入下一级队列队尾(若已在最下级,就重新放入最下级队列);

3)只有k级队列空了,才为k+1级分配时间片;

4)2级及以下,时间片未完(即正在使用CPU)时出现新进程入1级,则被抢占处理机,进程放回原队列队尾,不入下一级。

LVS调度算法 调度算法视频_LVS调度算法_32


小结:

LVS调度算法 调度算法视频_LVS调度算法_33

这三种算法适用于交互式系统。