CPU调度算法准则及原理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P1 P2 P3 P4 P5 P1 P5 P1 P5 P1 P1
0 2 3 5 6 8 10 12 14 15 18 19 平均等待时间: {[(0+(8-2))+(12-10)+(15-14)]+2+3+5+[6+(14-12)+(108)]}/5=5.8
进程
CPU区间时间
P1
10
P2
1
P3
2
P4
实时调度
1. 实时计算分为硬实时(hard real-time)和软实时( soft real-time)
2. 实现软实时功能要求 1) 系统必须有优先权调度,且实时进程必须有最高的优 先权 2) 分派延迟必须小
3. 为了让分派延迟保持很小,需要允许系统可抢占,实现 方法有 1) 在长时间系统调用内插入抢占点(preemption point)-内核安全位置 2) 使整个内核可抢占-同步机制保护内核数据结构
进程来执行,进程选择是由CPU调度程序来执行的,又称 为短期调度程序(short-term scheduler) • 就绪队列可实现为FIFO队列、优先队列、树或无序链表 等形式
2
3、可抢占式调度
• CPU调度决策发生的环境
1) 当一个进程从运行状态切换到等待状态 2) 当一个进程从运行状态切换到就绪状态 3) 当一个进程从等待状态切换到就绪状态 4) 当一个进程终止时 • 非抢占(nonpreemptive)调度(1、4情况) • 可抢占(preemptive)调度(2、3情况) • 可抢占调度的代价 1) 共享数据的不一致性问题 2) 影响操作系统内核的设计
9
补充:最高响应比优先算法
• 响应比R=周转时间/执行时间
•
=(执行时间+等待时间)/执行时间
• 每次调度前计算响应比,选值最高的调度执行,例:
A运行完,计算BCD的响应比:
B=(70+50)/50=2.4;C=(60+10)/10=7; D=(10+20)/20=1.5。调度C。
C运行完,计算BD的响应比:
21
常用调度算法小结
• 先来先处理(FCFS)——非抢占
• 最短作业优先(SJF)
• 优先权
抢占或非抢占
• 时间片轮转(RR)——抢占
• 多级队列
• 多级反馈队列
22
多处理器调度
1. 限定 1) 同构系统,即处理器功能相同 2) 任何可用处理器可用于运行队列内的任何进程 3) 通用内存访问(uniform memory access,UMA)
CPU调度算法准则及原理
• 基本概念 • 调度准则 • 调度算法 • 多处理器调度 • 实时调度 • 算法评估 • 进程调度模型
韩都衣舍官方旗舰店 韩都衣舍女装您值得拥有 http://handuy / 好狗友 http://www.haogouy / 广东韩都衣舍批发 http://hangduy / 韩都衣舍旗舰店 /
称为饥饿(starvation),即低优先权进程可能无穷等待 • 饥饿的解决方案:老化(aging)即逐渐增加在系统中等待很长时间
的进程的优先权,例如UNIX系统中,每秒计算一次优先权: p_pri=min{127, ( p_cpu /16 + PUSER + p_nice ) }
每过一个时钟嘀嗒加1 用户优先权基数 调节参数
• 类似于FCFS调度,但通过为每个进程分配时间量(time quantum)或称为时间片,增加抢占以在进程间切换
• CPU调度程序循环就绪队列,为每个进程分配不超过一个 时间片间隔的CPU
• 平均等待时间通常相当长
• RR调度算法是可抢占的
• 性能很大程度上依赖于时间片的大小
• 例(时间片为4ms): 进程 区间时间
个队列有自己的调度算法 • 队列之间通常采用固定优先权可抢占调度来实现 • 也可以在队列之间划分时间片
20
6、多级反馈队列调度(multilevel feedback queue scheduling)
• 多级队列调度算法中,进程进入系统后,被永久的分配到一个队列 ,优点是低调度开销,缺点是不够灵活
2. 负载分配(load sharing) 1) 为每个处理器提供独立的队列 2) 使用一个共同就绪队列
3. 针对2)的两种调度方法 1) 每个处理器自我调度 2) 主-从结构,即选择一个处理器为其他处理器进行调度
4. 非对称多处理(asymmetric multiprocessing):主服务器
23
7
非抢占调度例: 进程 区间时间
P1
6
P2
8
P3
7
P4
3
P4 P1
P3
P2
03
9
16 24
平均等待时间:
(3+16+9+0)/4=7
抢占调度例:
进程 到达时间 区间时间
P1 0
8
P2 1
4
P3 2
9
P4 3
5
P1 P2 P4 P1
P3
0 1 5 10 平均等待时间:
17 26
((10-1)+(1-1)+(17-2)+(5-3))/4
=7.75
8
证明:采用SJF调度算法可以使平均周转时间最少。
1、设作业J1和J2的运行时间t1<=t2, 当采用短作业优先时,调度顺序为J1、J2,平均周转时间为
(t1+(t1+t2))/2=(2t1+t2)/2。 不采用短作业优先时,调度顺序为J2、J1,平均周转时间为
(t2+(t2+t1))/2=(t1+2t2)/2。显然,得证。 2、假设当n=k时成立,则当 n=k+1时, J1,J2,…… ,Jk ,Jk+1,它们的 运行时间分别为:t1,t2,……, tk , tk+1。(ti <= ti+1)
• SJF调度算法最佳,平均等待时间最短
• 困难:如何确定下一个CPU请求的长度 指数平均(exponential average)
n+1= tn +(1- ) n
• 常用于长期调度,短期调度很难实现
• SJF算法可能是抢占或非抢占的,可抢占SJF调度有时称 为最短剩余时间优先(shortest-remaining-time-first )调度
3
4、分派程序
• 分派程序负责将CPU的控制交给由短期调度程序所选择的 进程,其功能包括: ➢ 切换上下文 ➢ 切换到用户模式 ➢ 跳转到用户程序的合适位置以重新启动这个程序
• 分派延迟(dispatch latency):分派程序停止一个进 程而启动另一个进程执行所要花费的时间
4
调度准则
• 常用的调度准则 1) CPU使用率: CPU实际使用时间与总占用时间之比 2) 吞吐量:一个时间单元内所完成进程的数量 3) 周转时间:从进程提交到进程完成的时间间隔 4) 等待时间:在就绪队列中等待所花时间之和 5) 响应时间:从提交请求到产生第一响应的时间
11
优先权调度例: 进程 区间时间 优先权
P1
10
3
P2
1
1
P3
2
4
P4
1
5
P5
5
2
P2 P5
P1
P3 P4
01 6
16 18 19
平均等待时间:
(6+0+16+18+1)/5=8.2
12
➢优先权调度练习
进程 到达时间 CPU区间时间 优先级
P1 8
3
3
P2 9
1
1
P3 10
2
3
P4 11
1
4
P5 12
24
4、实时调度策略
• 优先级+时间片轮转调度:获得秒级的响应时间 • 基于优先权的非抢占调度:数秒 ~ 数百毫秒级的响应时
间 • 基于优先权的固定点抢占调度:数十毫秒级 • 基于优先权的立即抢占调度:获得毫秒级的响应时间 • 时限调度算法
• 平均等待时间通常相当长
• 非抢占调度
•例
进程 区间时间
P1
24
P1
P2 P3
0
24 27 30
平均等待时间(0+24+27)/3=17
P2
3
P2 P3
P1
P3
3
03 6
30
பைடு நூலகம்
平均等待时间(0+3+6)/3=3
6
2、最短作业优先调度(shortest-job-first,SJF)
• 当CPU可用时,赋给具有最短后续CPU区间(最短下一 个CPU 区间)的进程;如果两个进程具有同样长度的 CPU区间,可使用FCFS调度来处理
1
基本概念
1、CPU-I/O区间周期 • 进程的观测属性:进程执行由CPU执行和 I/O等待周期组
成。 • CPU区间-I/O区间-CPU区间-I/O区间-…… -CPU
区间 • 通常具有大量短CPU区间和少量长CPU区间 2、CPU调度程序 • 当CPU变为空闲时,操作系统必须从就绪队列中选择一个
• 希望最大化CPU使用率和吞吐量,最小化周转时间、等 待时间和响应时间
• 绝大多数情况下,要优化平均度量值 • 有时需要优化最小值或最大值 • 本书使用平均等待时间来度量(有时用平均周转时间)
5
6.3 调度算法
1、先到先服务调度(first-come,first-served,FCFS)
• 先请求CPU的进程被首先分配到CPU,可用FIFO队列来 实现
1
P5
5
18
2)时间片为5
P1 P2 P3 P4
P5
0
56
89
平均等待时间:
[(0+(14-5)) +5+6+8+9]/5=7.4
P1
14
19
进程
CPU区间时间
P1
10
P2
1
P3
2
P4
1
P5
5
19
5、多级队列调度 (multilevel queue-scheduling algorithm) • 根据进程的某些属性,将其永久的分配到一个队列,每
• 多级反馈队列调度允许进程在队列之间移动,根据不同CPU区间特 点以区分进程
• 定义时需要考虑的参数 1) 队列数量 2) 每个队列的调度算法 3) 用以确定何时升级到较高优先权队列的方法 4) 用以确定进程何时降级到较低优先权队列的方法 5) 用以确定进程在需要服务时应进入哪个队列的方法
• 最通用的CPU调度算法,但也是最复杂的
70
90
平均
52.5
102.5
10
3、优先权调度(priority-scheduling algorithm )
• 每个进程都有一个优先权与其关联,具有最高优先权的进程会被分配 到CPU。具有相同优先权的进程按FCFS顺序调度
• 低数字表示高优先权 • 优先权定义:内部或外部 • 优先权调度可以是抢占或非抢占 • 优先权调度的一个主要问题:无穷阻塞(indefinite blocking)或
4
2
注:抢占和非抢占两种情况
13
1)抢占式
P1 P2 P1
P5
P3 P4
8 9 10
12
16
18 19
平均等待时间:
[(0+(10-9))+0+(16-10)+(18-11)+0]/5=2.8
进程 到达时间 CPU区间时间 优先级
P1 8
3
3
P2 9
1
1
P3 10
2
3
P4 11
1
4
P5 12
4
2
14
P1 P2 P3 P1 P1 P1 P1 P1
P1
24 0 4 7 10 14 18 22 26 30
P2
3
平均等待时间:
P3
3
[(0+(10-4))+4+7]/3=5.66
16
➢轮转法调度练习(时间片为2、5)
进程 P1 P2 P3 P4 P5
CPU区间时间 10 1 2 1 5
17
1)时间片为2
当采用短作业优先时,调度顺序为J1,J2,…… ,Jk ,Jk+1,所有作业 的平均周转时间为:T=[T1+T2+… + Tk +Tk+1]/n= [t1+(t1+t2)+…+ (t1+t2+…+tk)+(t1+t2+… +tk +tk+1)]/n
不采用短作业优先时,假设调度顺序为J1,J2,…, Jk+1 , Jk 。 所有作业的平均周转时间为:T’=[T1+T2+…+Tk+1 +Tk]/n= [t1+(t1+t2)+… + (t1+t2+…+tk+1) +(t1+t2+…+tk+1 +tk)]/n 则: T’-T= [(tk+1 +tk+1 +tk)- (tk +tk +tk+1)]/n=( tk+1-tk )/n>=0。 得证。
B=(80+50)/50=2.6;D=(20+20)/20=2。先调度B后调度D 。
进程 提交时间 执行时间 开始时间 结束时间 等待时间 周转时间
A
8:00
120
8:00 10:00
0
120
B
8:50
50
10:10 11:00
80
130
C
9:00
10
10:00 10:10
60
70
D
9:50
20
11:00 11:20
2)非抢占式
P1
P2
P5
P3
8
11 12
16
平均等待时间:
[(0+(11-9)) +(16-10)+(18-11)+0]/5=3
P4
18 19
进程 到达时间 CPU区间时间 优先级
P1 8
3
3
P2 9
1
1
P3 10
2
3
P4 11
1
4
P5 12
4
2
15
4、轮转法调度(round-robin,RR)