处理机调度的层次
2.低级调度:进程调度或短程调度,决定就绪队列中哪个进程获得处理机。最基本的调度,多批道处理,分时和实时OS都有
3.中级调度:内存调度,提高内存利用率和系统吞吐量。存储器管理中的对换功能。
1.高级调度
决定后备队列中调入主存的作业多少作业:取决于多道程序度接纳哪些作业:取决于调度算法。主要用于多批道处理程序。
2.中级调度
内存调度,提高内存利用率和系统吞吐量
闪存中把暂时不运行的换出外存
决定那些进程被允许参与竞争CPU
处于挂起状态
引入原因
1.换出 :用户作业由输入设备向系统外存输入时作业所处的状态
- 内存空间紧张
- 就绪队列进程太多
- 等待I/O可能要一段时间
- 便于紧缩
2.换入:
- 内存中有足够的空间
- 外存中进程的优先级高于内存中进程
3.低级调度
- 就绪队列中分配处理机
- 进程调度
方式
1.抢占式
原则:
优先权
短作业优先
时间片
2.非抢占式
简单、系统开销小、无法处理紧急情况
作业状态
- 提交状态 用户作业由输入设备向系统外存输入时作业所处的状态
- 后备状态
- 执行状态
- 完成状态
只有低级调度是必须的
调度队列模型和调度准则
调度队列模型
一级
二级
三级
选择调度方式和调度算法的若干准则
1.面向系统的准则
系统吞吐量
CPU利用率
各类资源的平衡利用
2.面向用户的准则
周转时间短
等待时间和运行时间之和
带权周转时间:和实际时间的比值
- 相应时间快
- 截止时间的保证
- 稳定性
算法的性能准则
- 易于实现
- 执行开销比
调度算法
1.先来先服务和短作业(进程)优先调度算法
短作业优先是当前时刻的短时间
多个作业同时到达时,短作业优先调度算法的平均周转时间最小
2.最短剩余时间优先调度算法
即当一个新进程进入就绪队列时,若其需要的运行时间比当前运行进程的剩余时间短,
则它将抢占CPU
3.高优先权优先调度算法
- 抢占式
- 非抢占式
- 优先权
静态优先权
动态优先权
4.最高相应比优先调度算法
响应比: 等待时间+要求服务时间/ 要求服务时间
5.基于时间片的轮转调度算法
最开始的在队首,执行完时间片到队尾
时间片过大 太大退化为先来先服务,会让队尾的进程等待过久
时间片过小 进程切换过于频繁,系统的开销过大
多级反馈队列调度算法
设置多个队列
优先级越高,执行时间越短
在第一个队列执行完以后再执行第二个队列
执行过的进程放到最后一个队列的末尾
处理机调度算法的目标:
1.处理及调度算法的共同目标:
资源利用率
公平性
平衡性
策略强制执行
2.批处理系统的目标
平均周转时间
系统吞吐量高
处理机利用率高。
3.分时系统的目标
响应时间快
均衡性
4.实时系统的目标
截止时间的保证
可预测性。
实时调度
1.实现实时调度的基本条件
- 提供必要的信息
- 系统处理能力强
- 采用抢占式调度机制
- 具有快速切换机制
2.实时调度算法的分类
2.1非抢占式调度算法
非抢占式轮状调度算法
非抢占式优先调度算法
2.2抢占式调度算法
基于时钟中断的抢占式优先权调度算法 等系统的时钟中断才会抢占
立即抢占的优先权调度算法 :当前任务未处于临界区,便能立即剥夺当前任务执行。
3.常用的几种实时调度算法
最早截止时间优先
最低松弛度优先
松弛度 :必须完成时间-本身运行需要时间-当前时间
松弛度小的优先。
抢占式的
产生死锁的原因和必要条件
产生死锁的原因
- 竞争资源
- 可剥夺资源与不可剥夺
- 永久性和临时性
- 不可剥夺、永久性和临时性资源可造成死锁
- 进程推进顺序不当
死锁 ; 多个进程因竞争系统资源而造成的一种僵局,如果没有外力作用,这些进程永远不能向前推进
产生死锁的必要条件
- 互斥条件
- 请求和保持条件
- 不可剥夺条件
- 环路等待条件
处理死锁的基本方法
1.预防死锁
预防死锁的方法
1.互斥?
是设备本身固有的属性
不可修改
2.请求和保持条件
静态资源分配法
一次分配所用的全部资源
资源利用率低,进程延迟
3.摒弃“不可剥夺”
已有该资源的进程要求释放资源
只可用于状态可以保存和恢复的资源
4.摒弃“环路等待”
- 有序资源分配 :进程申请一个资源的时候,必须释放其占有序号大于该资源的其他资源
- 资源利用率提高(还是存在浪费)
- 限制了用户编程
- 限制了设备的增加
2.避免死锁
系统安全状态 :只要系统始终都处于安全状态便可避免死锁的发生
利用银行家算法避免死锁
1. 通过对资源分配进行分析
2. 如果有任何一个进程的资源需求满足现有资源储备量,则可分配,并释放占用的资源 重复1
3.如果所有进程可全部被释放,则处于安全状态
检测死锁和解除
3.死锁的检测
1.资源分配图
用圆圈代表进程
方框表示一类资源
方框中一个点代表一类资源的一个实例
从进程到资源表示进程请求一个该类资源
从资源指向进程表示有一个资源分配给该进程
2.检测
不可完全简化即死锁
完全简化即形成孤立结点
可以获取到想要的资源则移除请求边和分配边
死锁的解除
- 资源剥夺法
- 撤销进程法
4.不考虑此问题