操作系统学习笔记 第三章:处理机调度与死锁(王道考研)
Posted Baret-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统学习笔记 第三章:处理机调度与死锁(王道考研)相关的知识,希望对你有一定的参考价值。
本文章基于网课: 2019 王道考研 操作系统
考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com)
需要相关电子书的可以关注我的公众号
BaretH
后台回复操作系统
第一章:操作系统概述
第二章:进程管理
后续章节陆续推出…
三、处理机调度与死锁
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️⃣ 死锁的解除
以上是关于操作系统学习笔记 第三章:处理机调度与死锁(王道考研)的主要内容,如果未能解决你的问题,请参考以下文章