知识点
1. 三种调度
进程调度可分为三个层次
- 高级调度(作业调度)
- 中级调度(内存调度)
- 低级调度(进程调度)
高级调度:(外存到内存) 频率最低
操作系统按照某种调用规则,将在后备队列中挑选合适的作业从外存调到内存。并为其分配进程。
中级调度:(外存到内存)频率中等
操作系统按照某种调用规则,在挂起队列中挑选合适的进程,调入内存。
暂时调入到外存的进程状态称之为挂起。
挂起又分为
由就绪态调入到外存的 就绪挂起
由堵塞态调入到外存的 堵塞挂起
低级调度:(内存到CPU)频率高
操作系统按照某种调用规则,为就绪队列中的某个进程分配处理机
2.进程调度
什么时候不能进行进程调度?
- 处理中断的时候
- 进程处于内核系统临界区时
- 在原子操作过程中
进程调度方式
- 非抢占式:只有当前运行的进程主动放弃CPU
- 抢占式:操作系统剥夺当前进程CPU使用权
调度算法
常用于早期批操作系统调度算法如下
- FCFS 先来先服务算法
- SJF 短作业优先算法
- HRRN 高响应比优先算法
在这里先讲一下
周转时间: 完成时间-到达时间
带权周转时间:周转时间/运行时间
等待时间:周转时间-运行时间
先来先服务:
算法思想:先到的进程(作业)先服务
调度方式:非抢占式
是否会使进程饥饿:不会引起饥饿
优缺点:公平运转,对短作业不利,因为需要的时间少,但是可能等待很长时间
短作业优先(最短剩余时间优先)
算法思想:已到达,且进程(作业)运行时间越短越优先
调度方式: 抢占和非抢占
是否会使进程饥饿:会饥饿 ,如果有新进程不断调入就绪队列,可能导致长作业(进程)长期饥饿
优缺点:较短的平均周转和等待时间,对长作业不利
高响应比优先算法
算法思想:
响应比=(等待时间+要求服务时间)/要求服务时间
响应比越高,进程(作业)越优先
调度方式:非抢占
是否会使进程饥饿:不会饥饿
优缺点:较公平
以下算法常用于交互式操作系统
- 时间片轮转调度算法
- 优先级调度算法
- 多级反馈队列调度算法
时间片轮转调度算法
算法思想:每个进程执行一个时间片,时间片用尽,操作系统剥夺CPU使用权,进程重新进入就绪队列等待
调度方式: 抢占,时钟装置发出时钟中断,来通知CPU时间片已到
是否会使进程饥饿:不会
优缺点:
、
优先级调度算法
算法思想:为每个进程设计优先级,优先级越高,越优先。
优先级可分为:静态优先级 和 动态优先级
调度方式: 抢占和非抢占
是否会使进程饥饿:会
优缺点:如果不断有高优先级进入,那么低优先级进程会长期陷入等待
多级反馈队列调度算法
算法思想:
- 设置多级就绪队列,优先级从高到低,时间片从小到大
- 新进程到达时进入第一级队列,按照FCFS进入就绪队列,等待执行一个时间片,若执行后进程并未完成则调入下一个就绪队列队尾,若已经在尾队列,则重新放入尾队列等待。
- 只有当i队列为空时才可为i+1队列分配时间片
调度方式: 抢占
是否会使进程饥饿:会
优缺点:完美!