操作系统学习笔记 第三章:处理机调度与死锁(王道考研)
本文章基于网课: 2019 王道考研 操作系统
考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com)
需要相关电子书的可以关注我的公众号
BaretH
后台回复操作系统
第一章:操作系统概述
第二章:进程管理
后续章节陆续推出…
三、处理机调度与死锁
- 3.1 处理机调度
- 3.1.1 什么是调度
- 3.1.2 高级、中级、低级调度
- 3.1.3 进程调度的时机、切换、过程
- 3.2 调度算法的性能指标
- 3.3 调度算法
- 3.3.1 先来先服务算法
- 3.3.2 短作业优先算法
- 3.3.3 高响应比优先算法
- 3.3.4 时间片轮转算法
- 3.3.5 优先级调度算法
- 3.3.6 多级反馈队列调度算法
- 总结
- 3.4 死锁
- 3.4.1 什么是死锁
- 3.4.2 死锁、饥饿、死循环区别
- 3.4.3 死锁产生的必要条件
- 3.4.4 什么时候发生死锁
- 3.4.5 死锁处理策略
- --- 预访死锁
- --- 避免死锁
- --- 死锁检测和解除
3.1 处理机调度
3.1.1 什么是调度
3.1.2 高级、中级、低级调度
1️⃣ 高级调度
2️⃣ 中级调度
3️⃣ 低级调度
三层调度的联系、对比:
3.1.3 进程调度的时机、切换、过程
1️⃣ 进程调度的时机:
2️⃣ 进程的切换与过程
3️⃣ 进程调度的方式
所谓进程调度方式,是指当某个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。通常有以下两种进程调度方式:
3.2 调度算法的性能指标
不同的调度算法具有不同的特性,在选择调度算法时,必须考虑算法的特性。为了比较处理机调度算法的性能,人们提出了很多评价准则,下面介绍其中主要的几种:
CPU利用率
系统吞吐量
周转时间
等待时间
响应时间
3.3 调度算法
操作系统中存在多种调度算法,有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。下面介绍几种常用的调度算法:
3.3.1 先来先服务算法
示例:
3.3.2 短作业优先算法
非抢占式短作业优先算法示例:
抢占式短作业优先算法示例:
注意:
3.3.3 高响应比优先算法
FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题;SJF算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题。
能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?这就引入了高响应比优先算法
示例:
3.3.4 时间片轮转算法
示例:
3.3.5 优先级调度算法
示例:
补充:
3.3.6 多级反馈队列调度算法
FCFS算法的优点是公平;SJF算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀;时间片轮转调度算法可以让各个进程得到及时的响应;优先级调度算法可以灵活地调整各种进程被服务的机会。
能否对其他算法做个折中杈衡?得到一个综合表现优秀平衡的算法呢——多级反馈队列调度算法
示例:
总结
3.4 死锁
3.4.1 什么是死锁
死锁
指在并发环境下,多个进程在运行过程中因争夺资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象;发生死锁后若无外力干涉,这些进程都无法向前推进。
死锁和阻塞的区别:阻塞是由于资源不足引起的排队等待现,死锁的进程处于阻塞状态,但仅依靠自己,无法继续运行。
3.4.2 死锁、饥饿、死循环区别
3.4.3 死锁产生的必要条件
3.4.4 什么时候发生死锁
3.4.5 死锁处理策略
- 预防死锁:破坏死锁产生的四个必要条件中的一个或几个
- 避免死锁:用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)
- 死锁的检测和解除:允许死锁的发生,不过操作系统会负责检测岀死锁的发生,然后采取某种措施解除死锁
— 预访死锁
**预防死锁 **即破坏死锁产生的四个必要条件中的一个或几个
— 避免死锁
避免死锁 即用某种方法防止系统进入不安全状态,从而避免死锁,通常采用
银行家算法
1️⃣ 什么是安全序列
假定某系统有n个进程并发执行,对于某个时刻T0,划分系统安全和不安全的标准如下:
系统能够按照某种进程顺序<P1,P2,…,Pn>执行,当轮到每个进程Pi执行时,都能满足该进程对资源的最大需求,则该系统处于安全状态,否则为不安全状态,其中<P1,P2,…,Pn>称为安全序列
2️⃣ 安全序列、不安全状态、死锁的联系
所谓
安全序列
,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了
不安全状态
。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况系统处于
安全状态
,则一定不会发生死锁
;如果系统进入不安全状态,就可能发生死锁(处于不安全状态未必就是发生了死锁,但发生死锁时一定是在不安全状态)因此可以在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是“银行家算法”的核心思想
3️⃣ 银行家算法
— 死锁检测和解除
1️⃣ 死锁的检测
2️⃣ 死锁的解除
操作系统学习笔记 第三章:处理机调度与死锁(王道考研)相关推荐
- 操作系统学习笔记 第四章:存储器管理(王道考研)
本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...
- ======第三章处理机调度与死锁======
目录 第三章 处理机调度与死锁 3.1处理机调度的层次 3.1.1 高级调度 3.1.2 低级调度 3.1.3 中级调度 3.2 调度队列模型和调度准则 3.2.1 调度队列模型 3.2.2 选择调度 ...
- 第三章 处理机调度与死锁
第三章 处理机调度与死锁 3.1 处理机调度的层次和调度算法的目标 3.1.1 处理机调度的层次 3.1 处理机调度的层次和调度算法的目标 3.1.1 处理机调度的层次
- 【学习笔记】第二章——处理机调度的概念、层次、时机、切换过程 调度方式、调度算法的指标
文章目录 一. 概念 & 层次 1. 高级调度(作业调度) 2. 中级调度(内存调度) 挂起态 & 七状态模型 3. 低级调度(进程调度) 4. 三种调度的对比联系 && ...
- 《Go语言圣经》学习笔记 第三章 基础数据类型
<Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...
- ROS机器人操作系统学习笔记(三)ROS通信架构
ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...
- 机器人导论(第四版)学习笔记——第三章
机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...
- 操作系统学习笔记 第六章:设备管理(王道考研)
本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...
- 操作系统学习笔记 第五章:文件管理(王道考研)
本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...
最新文章
- weex css单位,Weex系列(7) ——踩坑填坑的总总
- eda可视化_5用于探索性数据分析(EDA)的高级可视化
- HTML5学习笔记(一):初步印象
- 安全认证传输服务器介绍
- 项目落地才是硬道理!TensorFlow 2 牛了
- jQuery取得select选中的值
- httpclient 3.0初步研究
- 老人 android 游戏,其乐融融 -- 给父母玩的游戏 #iOS #Android
- C#:遍历JObject
- Oracle学习方法
- Java SE 01 Java概述
- 自动化专业考研方向简介
- 2022年兽药行业发展前景
- 深入理解什么是Beta分布
- 杀毒软件工作原理 及 现在主要杀毒技术
- php echo eot,php理解print EOT分界符和echo EOT的用法的简单示例
- 人民币即期汇率近六年首次跌破6.70 对国际消费影响几何
- 酷狗音乐车载Android版,酷狗音乐车载版
- Unity Hair 毛发系统 初体验
- udp丢包 又是udp丢包
热门文章
- 远程控制virtual box虚拟机系统的三种方式
- 解决烦人的img与input不能水平对齐的问题
- OpenCV 笔记(05)— opencv.hpp 头文件作用(是其它所有头文件的全集)
- 一阶逻辑与二阶逻辑的区别一元谓词多元谓词
- transformer bert seq2seq 深度学习 编码和解码的逻辑-重点
- 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...
- 使用汇编语言编写第一个程序
- GPU与CPU交互技术
- MindSpore网络模型类
- NVIDIA Nsight Systems CUDA 跟踪