计算机操作系统第三章 处理机调度和死锁

处理机调度的层次

2.低级调度:进程调度或短程调度,决定就绪队列中哪个进程获得处理机。最基本的调度,多批道处理,分时和实时OS都有

3.中级调度:内存调度,提高内存利用率和系统吞吐量。存储器管理中的对换功能。

1.高级调度

决定后备队列中调入主存的作业多少作业:取决于多道程序度接纳哪些作业:取决于调度算法。主要用于多批道处理程序。

2.中级调度

内存调度,提高内存利用率和系统吞吐量

闪存中把暂时不运行的换出外存

决定那些进程被允许参与竞争CPU

处于挂起状态

引入原因

1.换出 :用户作业由输入设备向系统外存输入时作业所处的状态

  • 内存空间紧张
  • 就绪队列进程太多
  • 等待I/O可能要一段时间
  • 便于紧缩

2.换入:

  • 内存中有足够的空间
  • 外存中进程的优先级高于内存中进程

3.低级调度

  1. 就绪队列中分配处理机
  2. 进程调度

方式

1.抢占式

原则:

优先权

短作业优先

时间片

2.非抢占式

简单、系统开销小、无法处理紧急情况

作业状态

  • 提交状态 用户作业由输入设备向系统外存输入时作业所处的状态
  • 后备状态
  • 执行状态
  • 完成状态

只有低级调度是必须的

调度队列模型和调度准则

调度队列模型

一级

二级

三级

选择调度方式和调度算法的若干准则

1.面向系统的准则

系统吞吐量

CPU利用率

各类资源的平衡利用

2.面向用户的准则

周转时间短

等待时间和运行时间之和

带权周转时间:和实际时间的比值

  • 相应时间快
  • 截止时间的保证
  • 稳定性

算法的性能准则

  • 易于实现
  • 执行开销比

调度算法

1.先来先服务和短作业(进程)优先调度算法

短作业优先是当前时刻的短时间

多个作业同时到达时,短作业优先调度算法的平均周转时间最小

2.最短剩余时间优先调度算法

即当一个新进程进入就绪队列时,若其需要的运行时间比当前运行进程的剩余时间短,

则它将抢占CPU

3.高优先权优先调度算法

  • 抢占式
  • 非抢占式
  • 优先权

静态优先权

动态优先权

4.最高相应比优先调度算法

响应比: 等待时间+要求服务时间/ 要求服务时间

5.基于时间片的轮转调度算法

最开始的在队首,执行完时间片到队尾

时间片过大 太大退化为先来先服务,会让队尾的进程等待过久

时间片过小 进程切换过于频繁,系统的开销过大

多级反馈队列调度算法

设置多个队列

优先级越高,执行时间越短

在第一个队列执行完以后再执行第二个队列

执行过的进程放到最后一个队列的末尾

处理机调度算法的目标:

1.处理及调度算法的共同目标:

资源利用率

公平性

平衡性

策略强制执行

2.批处理系统的目标

平均周转时间

系统吞吐量高

处理机利用率高。

3.分时系统的目标

响应时间快

均衡性

4.实时系统的目标

截止时间的保证

可预测性。

实时调度

1.实现实时调度的基本条件

  • 提供必要的信息
  • 系统处理能力强
  • 采用抢占式调度机制
  • 具有快速切换机制

2.实时调度算法的分类

2.1非抢占式调度算法

非抢占式轮状调度算法

非抢占式优先调度算法

2.2抢占式调度算法

基于时钟中断的抢占式优先权调度算法 等系统的时钟中断才会抢占

立即抢占的优先权调度算法 :当前任务未处于临界区,便能立即剥夺当前任务执行。

3.常用的几种实时调度算法

最早截止时间优先

最低松弛度优先

松弛度 :必须完成时间-本身运行需要时间-当前时间

松弛度小的优先。

抢占式的

产生死锁的原因和必要条件

产生死锁的原因

  • 竞争资源
  1. 可剥夺资源与不可剥夺
  2. 永久性和临时性
  3. 不可剥夺、永久性和临时性资源可造成死锁
  • 进程推进顺序不当

死锁 ; 多个进程因竞争系统资源而造成的一种僵局,如果没有外力作用,这些进程永远不能向前推进

产生死锁的必要条件

  • 互斥条件
  • 请求和保持条件
  • 不可剥夺条件
  • 环路等待条件

处理死锁的基本方法

1.预防死锁

预防死锁的方法

1.互斥?

是设备本身固有的属性

不可修改

2.请求和保持条件

静态资源分配法

一次分配所用的全部资源

资源利用率低,进程延迟

3.摒弃“不可剥夺”

已有该资源的进程要求释放资源

只可用于状态可以保存和恢复的资源

4.摒弃“环路等待”

  • 有序资源分配 :进程申请一个资源的时候,必须释放其占有序号大于该资源的其他资源
  • 资源利用率提高(还是存在浪费)
  • 限制了用户编程
  • 限制了设备的增加

2.避免死锁

系统安全状态 :只要系统始终都处于安全状态便可避免死锁的发生

利用银行家算法避免死锁

1. 通过对资源分配进行分析

2. 如果有任何一个进程的资源需求满足现有资源储备量,则可分配,并释放占用的资源 重复1

3.如果所有进程可全部被释放,则处于安全状态

检测死锁和解除

3.死锁的检测

1.资源分配图

用圆圈代表进程

方框表示一类资源

方框中一个点代表一类资源的一个实例

从进程到资源表示进程请求一个该类资源

从资源指向进程表示有一个资源分配给该进程

2.检测

不可完全简化即死锁

完全简化即形成孤立结点

可以获取到想要的资源则移除请求边和分配边

死锁的解除

  • 资源剥夺法
  • 撤销进程法

4.不考虑此问题

猜你喜欢

转载自blog.csdn.net/yutong5818/article/details/81226852