概念:在合适的时候以一定策略选择一个就绪进程运行
原则:
1.响应速度尽可能快
2,进程处理时间尽可能短
3,系统吞吐量尽可能大
4.资源利用率尽可能高
5.对所有进程要公平
6.避免饥饿
7.避免死锁
//以上原则之间存在矛盾
进程调度目标:
1.周转时间/平均周转周期:
周转时间:进程提交给计算机到最后完成所花费的时间:
t = tc-ts //意义说明进程在系统中停留时间的长短
平均周转时间:
t = (t1+t2+t3+....tn)/n
意义:平均周转时间越短,意味着这些进程在系统内停留的时间越短,因此系统吞吐量就越大,资源利用率也就越高,
2.带权周转时间/平均带权周转时间:
典型调度算法:
1.先来先到服务:
算法:按照作业进入系统的时间先来后到挑选作业,先进入系统的作业优先被运行
特点:1.容易实现但是效率不高
2.只考虑作业的等候时间,而没考虑运行时间的长短。因此一个晚来但是作业短的作业可能需要等待很长时间才能运行,不利于短作业。
2.短作业优先调度算法:
算法:参考运行时间,选取运行时间最短的作业投入运行。
特点:易于实现,效率不高
忽视了作业等待时间,容易出现资源饥饿现象。
3.响应比高者优先调度算法:
响应比定义:
作业的相应时间和与运行时间的比值。
响应比 = 响应时间/运行时间
= (等待时间+运行时间)/运行时间
= 1 + 等待时间/.运行时间
算法:计算每个作业的响应比,选择响应比最高的作业优先投入运行
如果作业等待时间相同,则运行时间短的先,
如果运行时间相同,等待时间长的先
如果运行世界长的可以随着等待时间增加而增加
4.优先数调度算法
算法:
根据进程优先数,把CPU分配给最高的进程
进程优先数 = 静态优先数 + 动态优先数
静态优先数:
进程创建时确定,在整个进程运行期间不再改变
动态优先数:
动态优先数在进程运行期间可以改变
静态优先数的确定:
基于进程所需的资源多少
基于进程运行时间的长短
基于进程的类型(IO/CPU,前台/后台,核心/用户)
动态优先数:
当使用CPU超过一定时长时
在进行I/O操作后
当进程等待超过一定时长时
5.循环轮转调度算法(Round-Robin)
概念:把所有就绪进程按先进先出的原则排成队列。新来进程加到队列末尾。进程以时间片q为单位轮流使用CPU,刚刚运行一个时间片的进程排到队列末尾,等待下一轮运行。
优点:
公平性:每个就绪进程都有平等机会获得CPU
交互性:每个进程等待(N-1)*q的时间就可以重新获得CPU
时间片q的大小:
q太大:交互性差
甚至于退化成FCFS调度算法
q太小:进程切换频繁,系统开销增加。
改进:
时间片的大小可变。
组织多个就绪队列,
6.可变时间片轮转调度法
7.多重时间片循环调度法