调度的目的:
1. 控制资源使用者数量;
2. 选取资源使用者
3. 许可资源占用
4. 占用资源
多道程序调度类型:
高级调度(长程调度或作业调度):控制多道程序数目,即谁可以进内存,分配资源,善后处理
中级调度:(中程调或对换程序):实现挂起与解挂
低级调度(短程调度或进程调度):实现就绪队列中谁获取CPU,完成保存现场,进程选取,恢复现场的工作
进程调度方式:
不可剥夺(不可抢占):不予许其他进程抢占正在运行的处理机,不适用严格实时系统
可剥夺(可抢占),一般采用优先级;
进程调度时机:
1. 进程创建
2. 进程终止
3. 等待事件
4. 中断发生
5. 运行到时(时间片)
调度性能评价:
主要有响应时间:提交请求到有响应的时间
周转时间:完成时间-提交时间;平均周转时间
带权周转时间:周转时间/实际执行时间;平均带权周转时间
调度算法:
1.先来先服务(FCFS):进程调度与作业调度中,直到运行完才让出(非剥夺);
不利于短作业,利于长作业
利于处理机繁忙作业,不利于I/O繁忙作业
实现容易,简单,调度性能差
2.短进程(作业)优先(SPN):(非剥夺)
相比1,不利于长作业(甚至被饿死),短是估计的,不准确,
3.最短剩余时间(完成当前进程还需要的时间)优先调度算法(SRT):(抢占式)
比2平均带权周转时间,平均周转时间更小
4. 响应比高者优先调度算法(HRRN):(非抢占式)
响应比:1+等待时间/完成所需时间
响应比越高,意味着进程等待了很长时间,或进程较小,更为公平
5. 时间片抢占调度算法
利用时间片轮转:时间片时间的选取很重要,果断,切换频繁,浪费;过长,退化为FCFS;
缺点:对I/O频繁进程不利(阻塞时会进程切换,唤醒后重新排在队尾)
改进型:进程I/O唤醒后,进入辅助队列,此队列优先级更高
6. 优先级调度:
静态优先级:运行期间不变,创建时确定
动态优先级:进程推进,优先级变化(防止了高优先级长期垄断)
7. 多级反馈队列调度算法(MFQ)
设置多就绪队列,具有不同的优先级,先执行完高级队列,再执行较低的,且高级队列时间片更短,进程在本级队列一个时间片未能执行完毕,降入次一级队尾等待
保证I/O及时,进程发出请求后进入最高级队列,执行一个时间片完成交互;
实时调度
应具备条件:
提供信息(如截止时间,资源要求,优先级等)
满足系统处理能力
抢占式调度
能够快速切换
对于m个周期性硬实时任务,(处理时间/周期性时间)之和<=N(处理机个数),系统才是可调度的
调度算法分类:
非抢占式:轮转调度,优先级调度
抢占式:基于时钟中断(时钟中断时,优先级调度,平时非抢占);立即抢占
实时调度算法:
1.最早截止优先:非抢占式适用非周期实时任务,抢占式适用周期实时任务
2.最低松弛度优先:任务额松弛度(紧急程度)越高,优先级越高
松弛程度,可以理解截止时间前为宽裕的时间,=截止完成时间-当前时间-剩余运行时间