进程调度

分类:逻辑上分为可剥夺调度和非剥夺调度

可剥夺调度:允许挂起,运行到一半可以挂起

非剥夺调度:就是运行直到结束

调度分类

时间片轮转调度:时间片运行结束,就会切换到下一个进程,但是这种方法效率较低,假如时间片为20,那么切换到下一个进程需要花费5秒,那么有20%被浪费。 

优先级调度: 先执行高优先级的进程,高优先级进程执行完,才会执行低优先级的进程,同等优先级按照时间片轮转

多重队列(CTSS):也是优先级调度,只不过是同一优先级,第一个进程分配1个时间片,第二个进程分配4个时间片,第三个进程分配8个时间片以此类推。为2幂次方

本来只写最短作业优先算法但是百度的时候又看到了先来先服务算法,下面以一个例题来说明上述俩个算法,借用别人的解题

假设有a.b.c.d.e五个进程,其到达时间和服务时间由下表给出,计算在采用先来先服务调度算法和最短作业优先算法的平均周转时间和平均带权周转时间,并指出他们的调度顺序及完成时间。

到达时间  服务时间

a  0            4

b  2            7

c  5            4

d  8            3

e  10          2

没有优先级,无所谓权值

先来先服务:

调度顺序是abcde

周转时间:

a:4

b:2+7=9 (a运行时间4,所以b的等待时间为2,运行时间为7)

c:6+4=10 (a+b的运行时间是11,所以c的等待时间是6,运行时间是4)

d:7+3=10 (a+b+c运行时间是15,所以d等待时间是7,运行时间是3)

e:8+2=10 (前4个运行时间是18,e的等待时间是8,运行时间是2)

所以平均周转时间:

(4+9+10+10+10)/5=8.6

如果知道权值的话则分别乘以权值即可

(4*qa+9*qb+10*qc+10*qd+10*qe)/5

最短作业优先:

调度顺序是:abedc

理由-a先到,运行时间4,运行结束后只有b到达,所以b运行,b运行结束后总时间为11,此时cde都到达出于等待中,所以调度最短服务时间的e,然后是次短的d,最后c

周转时间:(跟上面一样,等待时间+运行时间)

a:4

b:2+7=9

e:1+2=3 (b运行完时间是11,而e在10才来,所以等待时间是1)

d:5+3=8 (abe运行结束后时间是13,d等待了5)

c:11+4=15 (abed运行结束后时间是16,c等待了11)

所以平均周转时间:

(4+9+3+8+15)/5=7.8

带权:

(4*qa+9*qb+3*qc+8*qd+15*qe)/5

彩票调度算法:比喻就是调度程序作出选择时,随机选择一张彩票,握有该彩票的进程开始获得cpu运行,如果从100张彩票中选出一张,那么如果一个进程握有20张彩票,那么它获得cpu的概率相比于其他进程就是20%

实时调度:

硬实时和软实时:前者是必须满足时间限制,不能超过,后者是,超过规定事件也是可以的

可调度性:就是处理事件的时间/事件的周期,所有这种事件的和小于1,那么该系统为可调度的

动态调度和静态调度:一个是事先作出调度,一个是运行时作出调度

调度算法

1发生率调度 算法

就是事先分配一个与事项发生频率成正比的优先级,调度时总是选取优先级高的进程,必要时可以剥夺当前进程

2最早截止优先算法

进程执行时间端的排在前,新进程到来时重新排列

3裕度

加入一个进程运行200ms,而他必须在250ms内执行完那么裕度为50,每次总是选取裕度最小的进程执行

你可能感兴趣的:(进程调度)