处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平,高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
调度的层次
- 作业调度(高级调度):从外存挑选一个作业为其分配内存等资源。
- 内存调度(中级调度):把一些暂时无法运行的进程从内存中调出,把一些可以运行的进程重新调入内存。
- 进程调度(低级调度):选取进程为其分配处理机。
进程调度方式
- 非剥夺式调度方式(非抢占式)
- 剥夺调度方式(抢占式)
调度的基本准则
- 周转时间=作业完成时间-作业提交时间
- 平均周转时间:多个作业周转时间平均值
- 带权周转时间:作业周转时间 / 作业实际运行时间
- 平均带权周转时间:多个作业带权周转时间平均值
典型的调度算法
一、先来先服务(FCFS)调度算法
1.适用于作业调度,进程调度。
2.不可剥夺算法。
3.无饥饿现象。
4.对长作业有利,对短作业不利;有利于CPU繁忙型作业,不利于I/O繁忙型作业。
二、短作业优先(SJF)调度算法
1.适用于作业调度,进程调度。
2.不可剥夺算法。
3.有饥饿现象。
4.对长作业不利,SJF算法的平均等待时间,平均周转时间最少。
三、优先级调度算法
1.适用于作业调度,进程调度。
2.剥夺式/非剥夺。
3.有饥饿现象。
四、高响应比优先调度算法
响应比=(等待时间+要求服务时间)/要求服务时间
1.适用于作业调度,进程调度。
2.不可剥夺算法。
3.无饥饿现象。
4.对FCFS和SJF的平衡。
五、时间片轮转调度算法
先按先到先服务原则,但进程只运行一个时间片,之后回到就绪队列末尾排队。
1.适用于进程调度。
2.剥夺式。
3.无饥饿。
六、多级反馈队列调度算法
设置多个优先级不同的就绪队列,按时间片轮转,若进程未完成则放入下一级优先级队列末尾,新进程放入第一级队列末尾。优先级越高时间片越短。
1.适用于进程调度。
2.剥夺式。
3.时间片轮转和优先级调度的综合。