进程调度的任务
- 保存处理机信息
- 按某种算法选取进程
- 把处理器分配给进程
进程调度机制
- 排队器。把就绪进程排成一个或者几个队列
- 分派器。把进程从就绪队列中取出来,然后把处理机给他
- 上下文切换器。保存上一个进程的信息,分配下一个进程的信息
进程调度的方式
- 非抢占式
- 抢占式
进程调度算法
轮转调度算法
把就绪进程排成一个队列,把CPU分配给队首进程,执行一定的时间,运行完毕就分配给另一个新的队首进程,每隔一定的时间就执行一个进程
优先级调度算法
非抢占式优先级调度算法
一旦把处理机分配给一个就绪队列中的一个优先级较高的进程,该进程就会一直执行下去,或者因为某些事才会把处理机分配给别的进程
抢占式优先级调度算法
一旦把处理机分配给一个就绪队列中的一个优先级较高的进程,这时候又出现了另一个优先级更高的进程,系统会把处理机分配给另一个优先级要高的进程
优先级类型
- 静态优先级(一直不变)
- 动态优先级(随着等待时间一直改变)
多队列调度算法
- 设置多个就绪队列
- 不同类型或性质的进程固定分配在不同的就绪队列
- 不同的就绪队列采用不用的调度算法
- 一个就绪中的进程可以设置不同的优先级
- 不同就绪队列本身也可以设置优先级
多级反馈队列调度算法
- 设置多个队列,赋给每个队列的优先级不同,第一个最高,第二个次子,,,其余逐个降低
- 不同队列中的进程所赋予的执行时间也不同,优先级越高的队列,时间片越小
- 每个队列都采用先到先服务算法,当轮到一个进程执行时,如果在时间片内完成,就祛除这个进程,否则就放入第二个队列,依次类推
- 按队列优先级调度,仅当第一队列空闲时才调度第二个队列。如果在调度第二个队列时候,第一个队列又有进程,处理机立即回到第一个队列
基于公平原则的调度算法
保证调度算法
公平分享调度算法
用户1有4个进程A B C D,用户2有1个进程 E
为保证两个用户能获得相同的处理时间,则执行调度
A E B E C E D E
如果让1是2 的2倍
执行为:
A B E C D E