1. 高级、中级和低级调度
高级调度
- 说明: 高级调度又称作业调度或长程调度。将外存上处于后备队列的作业调入内存,并创建进程、分配资源
- 接纳作业数:
(1) 取决于内存的多道程序度,即允许多少个作业同时在内存中运行,允许多少个进程并发
(2) 如果接纳作业数太少,资源利用率低;如果接纳作业太多,服务质量下降 - 接纳哪些作业: 取决于作业调度算法
低级调度
- 说明: 低级调度又称进程调度或短程调度,决定就绪队列中的拿个进程获得处理机
- 低级调度的非抢占方式和抢占方式两种:
(1) 非抢占方式: 一旦处理机分配给某进程,便让该进程一直执行,直到该进程完成或阻塞时再分配给其他进程,其优点是: 简单,系统开销小; 缺点:不适合时间要求严格的实时系统
(2) 抢占方式: 允许调度优先级高的进程,暂停正在执行的进程,将处理机分配给其它进程,优点: 保证了系统的实时性 ;缺点: 增加了进程调度的次数,增加了系统开销
中级调度
- 说明: 中级调度又称中程调度。在内存资源紧张的情况下,为了提高内存利用率和系统吞吐量是那些暂时不能运行的进程不再占用内存资源,而将它们调至外存上去等待,此时的状态称为就绪驻外存状态或挂起转态
2. 调度队列模型
仅有进程调度的调度队列模型
- 说明: 在分时系统中,通常仅舍友进程调度,用户输入命令和数据,都直接进入内存,系统可以把就绪进程组成一列队列
- 过程: 交互用户提交作业直接进入就绪队列,队首的作业进入CPU执行,如果时间片用完还未执行完,则重新进入队尾,如果产生错误故障,进入阻塞队列,等待故障解除进入就绪队列队尾
具有高级和低级调度的调度队列
-
说明: 在批处理系统中,不仅需要进程调度,而且徐需要作业调度,该模型与上一模型主要区别在于:
-
特点: 与前一模型的区别在于
(1) 就绪队列的形式: 在批处理系统中常用优先权队列。进程进入就绪队列时,按优先权高低插入相应位置位置
(2) 设置多个阻塞队列: 根据事件阻塞原因不同设置多个队列提高效率 -
过程: 批量作业先进入后备队列就绪,经作业调度进入就绪队列,再经进程调度进入CPU,如果时间片用完还未执行完,则重新进入队尾,如果产生错误故障,根据故障类型进入不同阻塞队列,等待故障解除进入就绪队列队尾
同时具有三级调度的调度队列
- 过程: 批量作业先进入后备队列就绪,经作业调度进入就绪队列,再经进程调度进入CPU,如果时间片用完还未执行完,则重新进入队尾,如果产生错误故障,根据故障类型进入不同阻塞队列,阻塞队列进程挂起进入阻塞挂起队列,等待故障解除进入就进入就绪挂起队列,如果就绪度列进程非常多,内存紧张则且有紧急任务,挂起就绪队列靠近队尾的进程,把它挂入就绪挂起队列(位于外存)
3. 调度算法的若干准则
面向用户的准则
-
响应时间快
(1) 响应时间是指从用户通过键盘提交一个请求开始,知道系统中首次产生响应为止的时间
(2) 响应时间包括: 键盘输入请求信息传送到处理机时间,处理机对请求的处理时间和响应信息送回到终端的时间
(3) 常用于评价分时系统 -
截止时间保证
(1) 截止时间是指某任务必须开始执行的最迟时间或必须完成的最迟时间
(2) 实时系统中的重要指标 -
优先权准则
面向系统的准则
-
系统吞吐量高
(1) 吞吐量指单位时间内系统所完成的作业数
(2) 作业调度的方式和算法对吞吐量的大小影响较大 -
处理机的利用率高
-
各类资源的平衡利用
(1) 使内存、外存和I/O设备的利用率高
4. 调度算法
先来先服务调度算法(FCFS)
- 按照作业进入系统的先后次序进行调度,先进入系统者先调度
- 是一种简单的算法,既适用于作业调度,也可以用于进程调度
- FCFS算法有利于长作业,而不利于短作业
短作业优先调度算法SJF
- 要求运行时间长短进行调度,即启动要求运行时间最短的作业
- 可以用于作业调度和进程调度
- 对于作业调度:从后备队列中选择一个或若干个估计运行时间短的作业,它们调入内存运行;对于进程调度: 从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它
- SJF算法的缺点:
(1) 对长作业极不公平,总是先调用短作业而导致长作业长期不被调度
(2) 该算法完全没有考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理
(3) 由于作业的长短只是根据用户所提供的估计执行时间而定,导致不能做到真正的短作业优先调度
高优先权调度算法
非抢占式优先权算法
-
系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程会一直执行下去; 或因发生某件事使得该进程放弃处理机时,系统方可再将处理机重新分配给另一件最高权的进程
-
主要用于批处理系统中,也可以用于某些对实时性要求不严的实时系统
抢占式优先权算法
- 系统同样把处理机分配给最高权的进程,使之执行。执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程,重新将处理机分配给新到的优先权最高的进程
- 抢占式优先权算法,更好地满足紧迫作业的要求,故而常用于比较严格的实时系统中,以及对性能要求较高的批处理和分时系统
静态优先权
- 优先权在创建进程时确定的,且在整个运行过程中保持不变
动态优先权
- 优先权在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能
- 优先权 = (等待时间 + 要求服务时间)/要求服务时间,越大优先级越高
- 该算法是FCFS和SJF的结合,克服了两种算法的缺点
- 由于每个时间片后都要计算进程的响应比(优先权),所以运行速度较慢
5. 处理机调度与死锁
产生死锁的原因
竞争资源引起进程死锁
-
可剥夺和非可剥夺性资源
(1) 可剥夺性资源是指进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,如处理机、内存等
(2) 不可剥夺性资源是指当系统把这类资源分配给其他进程后,再不能强行收回,只能在进程完成后自行释放,如打印机 -
竞争非剥夺性资源
(1) 系统中非剥夺性资源由于数量有限而不能满足进程需要,进程在运行中因争夺这些资源而陷入僵局
竞争临时性资源
- 竞争临时性资源
(1) 临时性资源区别于永久性资源,指由一个进程产生,被另一进程使用后再也无可用资源,也称消耗性资源
产生死锁的4个必要条件
-
互斥条件: 进程对所分配的资源进行排它性的使用,临界资源
-
请求和保持条件: 进程在请求资源的同时,自己保持着一些资源
-
不剥夺条件: 进程已获得的资源在未使用之前不能被剥夺
-
环路等待条件: 在发生死锁时,必然存在一个进程–资源的环形路