1.先来先服务
例题1:
作业名称 到达时间 服务时间 开始时间 完成时间
A 0 1 0 1
B 1 100 1 101
C 2 1 101 102
D 3 100 102 202
因为要采用先来先服务算法,所以后面要等前面完成才能执行他的操作
B->C B比C先到达,所以C先等待B执行完,所以开始时间是101.
周转时间:完成时间-到达时间
综上所示, 不利于短作业进程(C到达时间2秒,但执行时间101S)
带权周转时间 = (完成-到达)/服务时间
2.短作业优先算法
从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给他执行
缺点:
(1)对长作业不利
(2)不能保证紧迫进程及时处理
(3)是估计运行时间,所以不能保证真正的短作业优先
3.优先级调度算法
调度方式:
(1)非抢占式优先权算法
(2)抢占式优先权调度算法
类型:
(1)静态优先权
(2)动态优先权(动态分时间片)
高响应比优先调度算法:
R = (等待时间 + 服务时间) / 服务时间
特点:
照顾了短作业, 又考虑了作业到达的先后次序, 不会使长作业期得不到服务,是一种
短作业和先来先服务是算法的结合.
4.时间片轮转法
给固定时间片,cpu调度各个进程只分配这个固定的时间片
时间片选取: 过长就变成先来先服务算法、过短增加系统能耗
选取原则:
(1)一般根据经验: 时间片的长度不应使得上下文切换开销超过1%.
(2)时间片略大于一次典型交互所需要时间(可使大多数进程在一个时间片内完成)
执行过程:
下列作业完成所需要时间:
P1:48 P2:8 P3:60 P4:19
时间片: 20
(1)p1获取到执行权,20s后,放弃执行权,还差28s
(2)p2获取到执行权,20s后,放弃执行权,任务完成
(3)p3获取到执行权,20s后放弃执行权,还差40s
(4)p4获取到执行权,20s后,放弃执行权,任务完成
(5)p1获取到执行权,20s后,放弃执行权,还差8s
(6)p3获取到执行权,20s后,放弃执行权,还差20s
(7)p1获取到执行权,20s后,放弃执行权,任务完成
(8)p1获取到执行权,20s后,放弃执行权,任务完成
5.多级反馈队列算法
内容:
队列1: 1,2, 3, 4
队列2:5, 6, 7, 8
队列3: 9, 10
过程:
发给每个队列一个时间片,队列1要是在它的时间片内没把任务处理完成,
则任务会留到队列2.......
特点:
cpu密集型进程: 进程优先级会下降很快,得到较大的时间片,减少进程切换开销
进程会停留在高优先级队列中,因为每次需要cpu执行时间很短
6.面向用户的准则
(1)周转时间短
周转时间,是在作业被提交到系统开始,到作业完成为止这段时间间隔
平均周转时间T:(T1+T2+T3+...+Tn)/n
带权平均周转时间T:(T1/TS1 + T1/TS2+.....+TN/TSn)/n(TSi为服务时间)
(2)响应速度快
响应时间: 等待时间 + 服务时间
例题:
考虑在单纯时间片轮转算法中,实现“优先级调度”,即优先级高的进程一次分配的简片越多。有进程A、B、C、D、E依次几乎同时到达,其估计运行时间分别为:10、6、2、4、8,其优先级分别是:3、5、2、1、4,一个优先级数对应一个时间片。对于前一个进程时间片有剩余的情况,操作系统会调度下一个进程运行。这种情况下,总的响应时间和总周转时间是()。(忽略进程切换时间)
A.30、112 B.30、122 C.47、112 D.47、122
解析:由于是时间片轮转算法,所以我们画一下他的执行过程
0--3(A(7))--8(B(1))--10(C(完))--11(D(3))--15(E(4))--18(A(4))--19(B(完))--20(D(2))--24(E(完))--27(A(1))--28(D(1))--29(A(完))--30(D(完))
响应时间:
A: 3 B:8 C:10 D:11 E:15 =>47
周转时间:
A29 B19 E24 D30 C10
(3)截止时间
7.面向系统的准则
(1)系统吞吐量高
(2)处理及利用率好
(3)各类资源的平衡利用