操作系统五算法——处理机调度

mac2024-04-21  8

进程调度算法

基本知识点介绍

低级调度

Low Level Scheduling

低级调度也称为进程调度和短程调度(ShortTerm Scheduling),调度对象是进程(或内核级进程)。

基本机制

排队器。把就绪进程排成一个或几个队列。分派器。从就绪队列中取进程,切换上下文,交由处理机。上下文切换。处理机切换时会发生两对上下文切换: 保存当前进程的上下文,装入分派程序的上下文。移除分派程序,把新选进程的CPU线程信息装入到处理机各个寄存器中。

调度方式

非抢占方式

Nonpreemptive

不管运行多长时间都会运行下去,直到自愿交出处理机。

引起进程调度的因素:

正常执行完毕,或异常等不能继续运行。I/O请求等暂停运行执行了P(), Block(), Wakeup()等原语。

抢占方式

优点: 可以防止进程长时间进行其他进程无法执行,能更公平的为其他进程服务。

运行原则:

每个进程分配优先权,允许优先权高的新到进程抢占当前处理级。短作业优先:一个短作业能抢占长作业的处理机优先执行。时间片原则:一个时间片用完就要重新调度。

中级调度

Intermediate Level Scheduling

为了提高内存利用率和系统吞吐量而引入。

将暂时不能利用内存的进程移动到外存中,置为就绪驻外存状态或挂起态,当这些进程又重新具备运行能力时且内存稍有空闲,再把进程调度会内存,修改为就绪态并进入就绪队列等待进一步调度。

五种调度算法

五种算法为FCFS,RR,SPN,SRT,HRRN。以一道例题进行介绍

各个进程的到达时间和服务时间:

ProcessArrivalTimeServiceTimeA03B26C44D65E82

五种方式的调度结果为:

FCFS:

先介绍最简单的FCFS即先come(手动变色)先服务,适合长进程,不适合短进程,因为没法让短进程尽快执行而必须等待长进程完成才能执行。适合CPU频繁型,不适合I/O频繁型。下面是运行机制:

FCFS,字面意思。先来的先执行。当一个进程在当前进程执行时到达,必须要等待当前进程执行完毕资源释放处理机才能执行。

RR:

时间片轮转,分时系统采用的调度算法,本次介绍的是早期使用的简单RR机制。20世纪90年代后多使用feedback。

运行机制:

当某个进程到达时,执行顺序是先把这个到达的进程放在就绪队列队尾,然后再把上一个执行的进程放在就绪队列的队尾。

SPN:

对于短服务时间优先,是一种非抢占式的调度机制。由于不是基于时间片并且是非抢占式的,所以调度策略体现在选择下一个要执行的进程的时候(可以理解为SPN-FCFS策略,这五个中只有RR是基于时间片的)。运行机制:

顾名思义,服务时间短的先执行。例子中t=3时只有B进程情况故执行B进程;t=9时,C、D、E均到达了,服务时间分别是$ServiceTime_C=4, ServiceTime_D=5,ServiceTime_E=2$,E的服务时间最短,故执行E。t=11同理。

SRN:

SRN,shortest remain-time next,(正规叫法SRT:shortest remain time)是SPN的抢占版本。一个进程到达时需要计算当前所有进程的剩余时间,进而决定接下来执行哪个。运行机制:

t=4时,C进程到达,计算剩余时间$RemainTime_B=5,RamainTime_C=4$,故先执行C。t=8时,E进程到达,剩余时间更短(刚进的进程易知RemainTime即为ServiceTime),故先执行E。E执行结束,再次计算RemainTime,$RemainTime_D=5,RemainTime_B=5$但是由于B是先Come的,所以先执行B再执行D。

HRRN:

最高响应比是基于FCFS和SPN的综合考量。引入变量响应比$R=\frac{WaitTime + ServiceTime}{ServiceTime}$,可以从公式中看出,对于等待时间形同的进程,服务时间短的优先级高;同理,服务时间一致的进程等待时间长的进程优先级高。响应比的考量timing发生在决定下一个要执行的进程时,系统应该遍历就绪队列选出响应比最高的进程执行(非抢占式)。HRRN主要用于作业调度(作业调度是相对于进程调度来说,从外存中调进程进内存等待执行)。执行机制:

这里对响应比的计算方式进行变形即$R=1 + \frac{WaitTime}{ServiceTime}$。t=3时,只有B进程,故执行B进程。t=9时,有B、C、D三个进程,分别计算响应比,结果如图。$Rc$在B、C、D中响应比最大,故优先执行。t=13处理方式同理。

补充

周转时间 = 完成时刻 - 到达时刻,意为计算等待时间的总共消耗时间。

带权周转时间 = 周转时间 / 服务时间(ServiceTime),意为每服务时刻的单位周转时间。可以理解为加入ServiceTime作为参考。

可以看出带权周转时间的定义就是响应比。

参考

-wsqyouth-操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)

-光羽住一-操作系统中调度算法(FCFS、RR、SPN、SRT、HRRN)

最新回复(0)