问题一:
在0时刻,进程A进入系统,按照这个顺序,在30时刻,进程B和进程C也抵达;在90时刻,进程D和进程E也抵达。一个时间片是10个单元。(进程A需要占用CPU 50个单元;进程B需要占用CPU 40个单元;进程C需要占用CPU 30个单元;进程D需要占用CPU 20个单元;进程E需要占用CPU 10个单元;)如果按照短作业优先级的方法,哪个进程最后结束?
问题一求解:
解析:短作业优先=最短剩余时间作业优先,即是可剥夺式处理机调度问题,支持抢占。!!!!
看图一目了然。
如果按短作业优先级的方法,进程B最后结束。
问题二:
某多道程序设计系统配有一台处理器和两台外设IO1和IO2,现有3个优先级由高到低的作业J1、J2和J3都已装入了主存,它们使用资源的顺序和占用时间分别是:
J1:IO2(30ms),CPU(10ms),IO1(30ms),CPU(10ms) J2:IO1(20ms),CPU(20ms),IO2(40ms)
J3:CPU(30ms),IO1(20ms)
处理器调度采用可抢占的优先级算法,忽略其他辅助操作时间,回答下列问题:
(1)分别计算作业J1、J2和J3从开始到完成所用的时间;
(2)3个作业全部完成时CPU的利用率;
问题二求解:
注意:CPU不可同时使用(单CPU);每个IO设备也不可同时使用,如IO1。!!!!
分析:
(1)J1占用IO2传输30ms时,J1传输完成,抢占J2的CPU,运行10ms,再传输30ms,运行10ms,完成。由图可见,J1从开始到完成所用的时间为:30+10+30+10=80ms。
J2与其并行地在IO1上传输20ms,抢占J3的CPU,J2运行10ms后,被J1抢占CPU,等待10ms之后,J2再次得到CPU,运行10ms,J2启动IO2传输,40ms完成。由图可见,J2从开始到完成所用的时间为:20+10+10+10+40=90ms。
J3在CPU上执行20ms,被J2抢占CPU,等待30ms,再运行10ms,等待10ms,J3启动IO1进行20ms的传输,完成。J3从开始到完成所用的时间为:20+30+10+10+20=90ms。
(2)三个作业全部完成时,CPU的利用率为:(10+20+30+10)/90=7/9=78%。
(3)三个作业全部完成时,外设IO1的利用率为:(20+30+20)/90=7/9=78%。
扩展知识:操作系统进程调度算法
FCFS: 先来先服务,也可以称为先进先出轮转:以一个周期性间隔产生时钟中断,此时当前正在运行的进程被置于就绪队列,基于FCFS选择下一个就绪进程运行。
SPN:最短进程优先,下一次选择所需处理时间最短的进程SRT:最短剩余时间优先,总是选择预期剩余时间最短的进程;
FPF:优先权调度算法类型,当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程;又分为:
1)非抢占式优先权算法。在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。
2)抢占式优先权调度算法:在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。
HRRN:在批处理系统中,短作业优先算法是一种比较好的算法,其主要的不足之处是长作业的运行得不到保证。如果我们能为每个作业引入前面所述的动态优先权,并使作业的优先级随着等待时间的增加而以速率a 提高,则长作业在等待一定的时间后,必然有机会分配到处理机。最高响应比优先,R=(w+s)/s,其中R表示响应比,w表示已经等待的时间,s表示期待服务的时间;
时间片轮转法:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几ms 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。
多级反馈队列调度算法:它是目前被公认的一种较好的进程调度算法。进程第一次进入系统是放置于RQ0,第一次被强占并返回就绪态时,放入RQ1,以后每次被强占就下降一级。如果进程处于最低等级,则不再降级,反复返回到该队列,直到结束。