进程运行某个固定时段的最大值,如果在该时段结束时,改进程仍在运行,它会被挂起,CPU控制权返回给调度程序,即有时钟中断发生时,会发生调度
调度算法分类: 批处理系统 非抢占式算法,或者长时间周期的抢占式算法都是可以的 吞吐量(throughout):系统每小时完成的作业数量
周转时间(turnaround time):从一个批处理作业提交开始到作业完成时的平均时间 CPU利用率
交互式系统 抢占式是必须的 最小响应时间 满足用户的期待
实时系统 满足截止时间 高度可预测性
二:批处理系统中的调度 First-come first-served 先来先服务 特点 1.按照请求CPU的顺序分派CPU(提交顺序或变为就绪态的顺序) 2.非抢占式的,即当前进程占用CPU直到执行完或阻塞,才出让CPU 3.阻塞的进程重新排到队尾,像新来的进程 4.简单
5.比较有利于长作业,而不利于短作业。有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
Shortest job first 最短作业优先 运行时间可预知的,非抢占式算法
只有所有的作业都可同时运行的情况下,最短作业优先算法才是最优化的。
Shortest remaining Time next 最短剩余时间优先 计算题: 第一题:5个作业A到E,运行时间是2,4,1,1和1,他们的到达时间是0,0,3,3,和3 最短作业优先调度A,B,C,D,E, 平均周转时间为 (2+6+4+5+6)/5=4.6
2.若按B,C,D,E,A的顺序运行作业,平均周转时间为 (4+2+3+4+9)/5=4.4 bbbbcdeaa cde de e
蓝色为c等待时间:1 紫色为d等待时间:2 红色为e等待时间:3
绿色部分为a等待时间:7
(注:短作业计算方法,如上(BCDEA的顺序)先算B(第一个)运行时间是4所以是4,然后是C,D,E,由于C,D,E是在3时刻到达的,在4的时候B执行完了,到C执行,C执行了1时刻(由于C在3到达了等了一时刻的B自己执行了1时刻),所以C是2,然后到D执行,因为D等了1时刻的B,1时刻的C,自己执行了1时刻,所以是3,然后到E,E等了1时刻的B,1时刻的C,1时刻的D,自己执行了1时刻所以是4,然后A等了全部执行时间为7,加上自己运行时间2,所以是9) 第二题:
假定在一个处理机上执行以下5个作业 分别采用FCFS、SJF两种调度算法 画出调度图
计算平均周转时间 作业号到达时间运行时间A03B26C44D65E82(可以先画一个下面的图来做题:)
FCFS(先到先服务算法)算法的平均周转时间是:
(首先你可以看到A最先到,然后运行时间是3,所以A的执行时间是3,然后是B第二个到,到的时间是2,需要等A 1个时刻(计算方法3+0-2=1),然后自己运行时间为6,所以执行时间是7,然后是C,4时刻到,需要等B 5个时刻(计算方法是:7+2-4=5 注:7为B的执行时间,2为B的到达时间,4为C的到达时间。))C自己运行需要4时刻,所以是9。后面的都类似。
注:(你也可以数格子:例如下图注释红色线为C,一共9格,蓝色为B一共7格)
(3+7+9+12+12)/5=8.6
(2)SJF(短作业优先)算法的平均周转时间是:
(短作业时按照(到达时间+运行时间)最短的最先开始) (所以是ABECD) (计算过程,首先是A的执行时间是3时刻,然后是B,因为B 2时刻的时候到达,所以要等A执行完,等了1时刻,B自己的运行时间是6,所以加上等了A的1时刻,B的执行时间是7时刻。E在8时刻到达了,等了B 1时刻(7+2-8=1,计算跟上面一样),然后E运行时间是2时刻,所以加起来E的执行时间为3时刻。然后到C,C是4时刻到达的,等待了7时刻(3+8-4=7),再加上C的运行时间为4,所以C的执行时间为11,然后到D,等待了9时刻(11+4-6=9),然后E的运行时间是5,所以E的执行时间为11.) (3+7+3+11+14)/5=7.6
三:交互式系统中的调度 Round-robin scheduling 轮转调度 Priority scheduling 优先级调度 基本原理: Round-robin scheduling 轮转调度
让每个进程在就绪队列中的等待时间与享受服务的时间成正比例 系统将所有的就绪进程按FCFS策略,排成一个就绪队列。 系统可设置每隔一定时间(如30ms),便产生一次中断,激活调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片。
当它运行完后,又把处理机分配给就绪队列中新的队首进程,也让它执行一个时间片。
Priority scheduling 抢占式优先级调度算法:把CPU分配给优先级最高的进程。但在其执行期间,只要出现了另一个优先级更高的进程,调度程序就将CPU分配给新到的这个优先级最高的进程
非抢占式优先级调度算法:一旦把CPU分配给就绪队列中优先级最高的进程后,该进程一
直执行,直至完成或者因发生某事件不能运行时,系统将CPU重新分配给另一优先级最高的进程。
四:实时系统中的调度 实时系统分类 hard real time 硬实时:必须满足绝对截止时间
soft real time 软实时:虽不希望偶尔错失截止时间,但可以容忍 实时系统中的事件分类 periodic 周期性:以规则时间间隔发生 aperiodic 非周期性:发生时间不可预知
实时调度的条件(单处理器):
如果有m个周期事件,事件i以周期Pi发生,并需要Ci秒CPU时间处理一个事件,那么可以处理负载的条件是
一个有三个周期性时间的软实时系统,其周期分别为100ms,200ms和500ms,如果这些事件分别需要50ms,30ms和100ms,那么系统是否是可调度的? 可以 50/100+30/200+100/500=0.5+0.15+0.2<1
具有开始截止时间的非周期性实时任务的调度
该算法是根据任务的开始截止时间(最晚开始时间)确定任务的优先级,具有最早开始截止时间的任务排在调度队列的前面。
EDF(Earliest Deadline First)最早截止时间优先算法
题目:对下面5个非周期性实时任务,按最早开始截止时间优先算法应该如何调度 抢占式和非抢占式两种情况
抢占式
非抢占式
具有完成截止时间的周期性实时任务的调度
该算法是根据任务的完成截止时间(最晚结束时间)确定任务的优先级,具有最早完成截止时间的任务排在调度队列的前面。
LLF(Least Laxity First)最低松弛度优先算法 松弛度=完成截止时间-还需要的运行时间-当前时间 对于周期性任务,完成截止时间即为任务下次发生的时间
周期性任务A和B,任务A每隔20毫秒完成一次,任务B每隔50毫秒完成一次。任务A每次需要执行10毫秒,任务B每次需要执行25毫秒。