6.2 进程调度算法
1.先来先服务调度(First Come First Serve)
算法:
特点:容易实现,效率不高
缺点:只考虑作业的等候时间,而没考虑运行时间的长短.本算法不利于短作业(来得晚的短作业,无法短时间解决).
2.短作业优先调度算法(Short Job Firtst)
算法
特点
特点:容易实现,效率不高
缺点:忽视了作业的等待时间,一个早来但是很长的作业将会很长时间得不到调度,出现了饥饿现象.
3.响应比高者优先调度算法
响应比定义:
作业的响应时间与运行时间的比值.
响应比=响应时间/运行时间=1+等待时间/运行时间
算法:计算每个作业的响应比,选择响应比最高的作业优先投入运行.
特点:如果作业时间等待相同,则运行时间越短的作业,其响应比越高,越容易被调度,有利于短作业
如果作业运行时间相同,等待时间长的作业响应比越高,越容易被调度,有利于等候长的作业.’’
综合来看,兼顾了解决了前面两个算法的缺点.
4.优先数调度算法
进程优先数=静态优先数+动态优先数
静态:进程创建时确定,在整个进程运行时间不再改变.
动态:随着进程的运行而改变
-
静态优先数的确定
1.基于进程所需资源的多少
2.基于程序运行时间的长短
3.给予进程的类型[IO/CPU,前台/后台,核心/用户] -
动态优先数的确定
1.当使用CPU超过一定时长时;
2.当进行I/O操作后;
3.当进程等待超过一定时长时;
5.循环轮转调度法(ROUND-ROBIN)
类同于左轮手枪的运转规则.
原理:把所有就绪进程先进先出的原则排成队列.新来的进程加到队列末尾.
进程以时间片为单位轮流使用CPU.刚刚运行一个时间片的进程排到队列末尾,等候下一轮进行.
队列逻辑上环形的.
优点:
1.公平性:每个就绪进程都有平等机会获得CPU.
2.交互性:每个进程等待(N-1)*q的时间就可以重新获得CPU.
时间片q的大小
- 如果q太大(交互性差,甚至退化为FCFS调度算法)
- 如果q太小(进程切换频繁,系统开销增大)
改进:
1.时间片的大小可变
2.组织多个就绪队列(不同的优先级,不同的时间片大小,不同的排列顺序等等)