1、高级调度:也称作业调度或者长程调度。
根据作业调度算法选择外存上处于后备队列中的某些作业调入内存,为它们分配必要的资源、创建相关进程。
2、中级调度:也称平衡调度或者中程调度。
涉及进程的内外存间的调度,当主存资源紧张将暂不运行的进程调至外存,进程“挂起”状态,当进程又具备运行条件且主存资源又空闲,再将进程从外存调至内存。
3、低级调度:也称进程调度或者短程调度
根据一定的调度算法从就绪队列中选一个进程/内核级线程获取处理器,让其使用。
低级调度的调度方式:非剥夺式(非抢先式)、剥夺式(抢先式)
剥夺式的原则:优先权原则、短作业(进程)优先原则、时间片原则
处理器调度算法:
1、先来先服务(first come first served, FCFS)
可用于作业调度,进程调度
按照作业/进程来到的先后顺序进行调度。
优点:易于实现
缺点:没有考虑作业运行时间长短、紧急程度,不利于短作业
2、最短作业(进程)优先算法(short job first ,SJF ; short process first, SPF)
可用于作业调度、进程调度
估计作业的CPU运行时间,选取时间最短的作业进行运行
优点:易于实现
缺点:对长作业不利,出现饥饿现象;缺少剥夺机制,对分时、实时系统仍不理想
3、响应比最高者优先算法(highest response ratio first , HRRF)
计算:响应比R=1+(作业等待时间/作业处理时间),选择响应比高的调度
当长作业等待时间够长后,也能获取较高的响应比,饥饿现象不会发生,但是计算响应比有一定的时间开销
4、优先级调度算法
优先级类型:静态优先级类型、动态优先级类型
一个进程的优先级确定后是固定不变的,还是随进程运行的情况的变化而变化的。
5、时间片轮转调度算法(round robin, RR)
分时系统常用时间片轮转法。把CPU划分为若干时间片,按照顺序分配给就绪队列中的每一个进行,进程轮流占用CPU,当时间片用完系统剥夺该进程的CPU,将该进程插到就绪队列末尾,等待下一轮调度。
6、多级反馈队列调度算法(multi-level feedback queue, MLFQ)
设置多个就绪队列,为每个队列赋予不同的优先级,第一个优先级最高,第二次之,,,不同队列的时间片不同,优先级高的队列为每个进程分配的时间片越小。处理器先从第一个就绪队列中选取进程,同一队列按照FCFS算法排队。当新进程进入内存,先排到第一个队列末尾,到轮到该进程执行时,如果时间片内完成便结束,没有完成将被转入第二队列末尾