操作系统 --处理机调度算法(三)

调度算法的指标:

CPU利用率:指CPU忙碌的时间占总时间的比例

系统吞吐量:单位时间完成的作业量  总完成了作业 / 总共花了时间

周转时间:指从作业被提交给系统开始,到完成的时间间隔

操作系统 --处理机调度算法(三)

 

 调度算法


1. 批处理系统  --

批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。

1.1 先来先服务 first-come first-serverd(FCFS)

按照请求的顺序进行调度。

有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长

操作系统 --处理机调度算法(三)

 

1.2 短作业优先 shortest job first(SJF) 非抢占式

按估计运行时间最短的顺序进行调度。

长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。

 操作系统 --处理机调度算法(三)

1.3 最短剩余时间优先 shortest remaining time next(SRTN)抢占式

按估计剩余时间最短的顺序进行调度。
 

 操作系统 --处理机调度算法(三)

操作系统 --处理机调度算法(三)

1 .4 高响应比优先(HRRN,Highest Response Ratio Next) 非抢占式

FCFS算法是在每次调度选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,故对短作业不友好

SJF算法是选择一个执行时间最短的作业为其服务。没有考虑作业的等待时间,所以对长作业不友好,甚至会造成饥饿问题

高响应比考虑到了等待时间和运行时间

高响应比优先算法在每次调度时先计算各个作业(进程)的响应比最高的为其服务

响应比 = (等待时间 + 要求服务时间 ) /  要求服务时间

操作系统 --处理机调度算法(三)

2. 交互式系统 --

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。

2.1 时间片轮转 抢占式

将所有就绪进程按FSFC的原子排成一个队列,每次调度,把CPU时间片分配给队首进程,当时间片用完,由计时器发出时钟中断,剥夺处理机,将进程重新放入就绪队列队尾排队,同时将CPU分配给队首的进程

操作系统 --处理机调度算法(三)

操作系统 --处理机调度算法(三)

操作系统 --处理机调度算法(三)

时间片轮转的算法时间效率和时间片大小有关:

  • 如果时间片太大,进程都可以在一个时间片内完成,时间片轮转调度算法退化为FSFC,实时性得不到保证
  • 如果时间片太小,会导致进程切换频繁。进程切换都要保存进程的信息并载入新进程的信息

2.2 优先级调度

为每个进程分配一个优先级,按优先级进行调度。

为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。(动态优先级)

非抢占式:

操作系统 --处理机调度算法(三)

 

抢占式:

操作系统 --处理机调度算法(三)

 2.3 多级反馈队列

FSFC考虑到等待时间,公平。SJF考虑到运行时间,时间片轮转可以让每个进程都得到及时响应,优先级调度算法可以灵活处理紧急任务。而多级反馈队列就对上面进行折中权衡

操作系统 --处理机调度算法(三)

3. 实时系统

实时系统要求一个请求在一个确定时间内得到响应。

分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。