操作系统概论【三】- - 进程调度与死锁

感谢内容提供者:金牛区吴迪软件开发工作室

接上一篇:操作系统概论【二】 - - 进程管理

文章目录

第三章、进程调度与死锁

在这里插入图片描述

一、进程调度的功能与时机

1. 进程调度的功能

🤔谁来完成?
👉进程调度的功能由操作系统的 进程调度程序 完成。

🤔具体做啥?
👉按照某种策略和算法 从就绪态进程中为当前空闲的CPU选择在其上运行的新进程

2. 进程调度的时机

🤔啥时候需要进程调度?
👉进程正常或异常结束、进程阻塞、有更高优先级进程到来、时间片用完时都会导致进程调度。

二、进程调度算法

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

在这里插入图片描述

2. 调度算法

首先要初步了解的公式:

系统平均周转时间T = (所有进程的周转时间相加) / 进程的个数
带权平均周转时间W = (所有进程的周转时间 / 服务时间 的结果相加) / 进程的个数
进入系统时间服务时间题目会给出。
完成时间 = 自行计算每个进程的结束时间【注意抢占式和优先级问题】
周转时间 = 完成时间 - 进入系统的时间时间

a.先来先服务调度算法

含义:
从就绪队列的队首选择最先到达就绪队列的进程,为该进程分配CPU。
在这里插入图片描述

b.短进程优先调度算法

含义:
从就绪队列中选择估计运行时间最短的进程,为该进程分配CPU

优点:与FCFS算法相比,短进程优先算法能有效降低进程的平均等待时间,提高系统吞吐量。

缺点:
1.对长进程不利
2.不能保证紧迫进程的处理
3.进程长短由用户估计,不一定准确

在这里插入图片描述

c.优先权调度算法

含义:该算法中,系统将CPU分配给就绪队列中优先权最高的进程。

俩种类型:
  1. 非抢占式: 运行期间,有更高优先权的进程到来,也不能剥夺CPU
  2. 抢占式: 运行期间,有更高优先权的进程到来,就可以抢占CPU

在这里插入图片描述
在这里插入图片描述

优先权类型
  1. 静态优先权:创建时确定,运行期间保持不变
  2. 动态优先权:创建时确定,随着进程推进或等待时间增加而改变
存在的问题

无穷阻塞,即“饥饿问题”【优先级高的持续来的话优先级低的始终无法排到】

解决的方案:
增加等待时间很长的进程的优先权,即“老化技术”。

e.时间片轮转调度算法

在这里插入图片描述

时间片大小的确定

在这里插入图片描述

f.多级队列调度算法

含义:
将就绪队列分成多个独立队列,每个队列有自己的调度算法。

在这里插入图片描述

g.多级反馈队列调度算法

含义:
建立多个优先权不同的就绪队列,每个队列有大小不同的时间片

在这里插入图片描述

三、实时系统中的调度

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

a.提供必要的调度信息

在这里插入图片描述

b.系统处理能力强

在这里插入图片描述
在这里插入图片描述

真题:
在这里插入图片描述

c.采用抢占式调度机制 (广泛)
d.具有快速切换机制
  • 对外部中断的快速响应能力
  • 快速的进程切换能力

2. 常用的实时调度算法

a.最早截止时间优先算法EDF

在这里插入图片描述

b.最低松弛度优先算法LLF

在这里插入图片描述

四、进程切换

1. 进程切换的含义

在这里插入图片描述

2. 进程切换的步骤

a.Step1保存包括程序计数器和其他寄存器在内的CPU上下文环境
b.Step2更新被替换进程的进程控制块
c.Step3修改进程状态,把执行状态改为就绪态或者阻塞态
d.Step4将被替换进程的进程控制块移到就绪队列或阻塞队列

在这里插入图片描述

e.Step5执行通过进程调度程序选择的新进程,并更新该进程的进程控制块
f.Step6更新内存管理的数据结构
g.Step7恢复被调度程序选中的进程的硬件上下文

五、多处理器调度

在这里插入图片描述

1. 多处理器系统的类型

在这里插入图片描述

2. 多处理器系统中进程分配方式

a.对称系统中的俩种分配方式

在这里插入图片描述

静态分配

在这里插入图片描述

动态分配

在这里插入图片描述

b.非对称系统中的分配方式

在这里插入图片描述

3. 进程(线程)调度方式

a.自调度

自调度是最常用最简单的方式

在这里插入图片描述
在这里插入图片描述

b.成组调度

在这里插入图片描述

优点:
1.减少线程切换
2. 减少调度开销

c.专用处理器分配

在程序执行期间,专门为该程序分配一组处理器,每个线程一个

在这里插入图片描述

优点:
1.加快程序运行速度
2.避免进程切换

缺点:
1.处理器资源严重浪费

六、死锁

在这里插入图片描述

1. 死锁的定义

由于多个进程竞争共享资源而引起的进程不能向前推进的僵死状态称为死锁。

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

产生死锁的原因:

竞争共享资源且分配资源的顺序不当是产生死锁的原因。

产生死锁的必要条件:
  • 互斥条件
  • 请求和保持条件
  • 不剥夺条件
  • 环路等待条件

3. 处理死锁的基本方法

a.死锁的预防

通过破坏死锁的产生条件来保证不发生死锁。

互斥条件无法破坏。
在这里插入图片描述

b.死锁的避免

通过 算法合理分配资源【银行家算法】 来保证不发生死锁

在这里插入图片描述

c.死锁的检测

检测当前系统是否出现死锁

调用检测算法的时机

在这里插入图片描述

资源分配图

在这里插入图片描述

死锁定理

在这里插入图片描述
在这里插入图片描述

d.死锁的解除

检测到系统有死锁后进行解除

在这里插入图片描述


下一篇:操作系统概论【四】- - 内存管理


吴迪软件开发 小程序 ECMAScript 6 React.js
金牛区吴迪软件开发工作室博客
已标记关键词 清除标记