首页 > 其他分享 >操作系统笔记分享(第三章 处理机的调度与死锁)

操作系统笔记分享(第三章 处理机的调度与死锁)

时间:2024-07-07 12:30:53浏览次数:22  
标签:优先级 操作系统 处理机 死锁 调度 算法 进程 资源

文章目录

介绍

我只整理了一些比较关键的、考试可能会考的点,有些具体琐碎的内容我没整理到笔记中。后面会持续更新,希望对大家有所帮助!

三、处理机的调度与死锁

处理机组成:中央处理器cpu,主存储器,输入-输出接口

3.1 处理机调度概述

处理机调度层次

高级调度

(长程调度 / 作业调度)

作业

概念比程序更广泛,不仅包含了通常的程序和数据,而且配有一份作业说明书,系统根据该说明书对程序的运行进行控制

Venn图:一个作业可由多个进程组成,且必须至少由一个进程组成

作业控制块(JCB)

它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。

内容通常有:作业标志、用户名称、用户账号、作业类型(CPU繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业运行时间)、资源需求情况 (预计运行时间、要求内存大小)、资源使用情况等。

中级调度

(中程调度 / 内存调度)

根据运行紧急程度等情况,决定哪些进程放外存,哪些放内存

低级调度

(短程调度 / 进程调度)

根据调度算法, 决定哪些进程获得处理机

进程调度的任务和方式

1.进程调度任务

①保存CPU现场信息

②按某种算法选取进程

③把CPU分配给进程

2.进程调度机制

①排队器

②分派器

③上下文切换器

处理机调度算法的目标

1.共同目标 (1)资源利用率 (2)公平性(3)平衡性 (4)策略强制执行

2.批处理系统的目标 (1)平均周转时间短 (2)系统吞吐量高 (3)处理机利用率高

3.分时系统的目标 (1)保证响应时间快 (2)保证均衡性

4.实时系统的目标 (1)保证满足截止时间的要求 (2)保证可预测性

平均周转时间和平均带权周转时间的计算

  • 周转时间 = 作业完成时刻 - 作业到达时刻
  • 带权周转时间 = 周转时间 / 服务时间(执行时间)
  • 平均周转时间 = 各个作业周转时间之和 / 作业个数
  • 平均带权周转时间 = 带权周转总时间 / 作业个数

3.2 调度算法

几种基础的调度算法

先来先服务 短进程优先 优先级 时间片轮转

前三种调度算法可用于作业调度进程调度

先来先服务(FCFS)

规矩排队,效率是否高得看前面的人是否慢吞吞…

短作业优先(SJF)

抢占式和非抢占式调度算法之间的区别

抢占式

若一个进程突然到来,且它的执行时间 < 当前进程距离完成所需要的时间,那就抢过来,先执行这个新来的进程

非抢占式

哪个作业短就优先执行哪个,执行过程中不能被抢

  • 缺点 只考虑时间长短,不考虑紧迫程度,对长作业不利等

优先级(PR)

根据紧迫程度确定优先级,数字小的优先级大

静态优先级:固定的优先级

动态优先级:根据等待时间等因素动态更新优先级

高相应比优先调度算法(HRRN)

HRRN 是介于 FCFS(先来先服务算法)与 SJF(短作业优先算法)之间的折中算法

既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能

响应比
w a i t + r u n t i m e r u n t i m e = a l l t i m e r u n t i m e \frac {wait + runtime}{runtime} = \frac {alltime}{runtime} runtimewait+runtime​=runtimealltime​

折中合理考虑,但每次都要先计算优先级,增加系统开销

时间片轮转(RR)

切分时间片,轮流执行,没执行就插入队尾等待,轮到你再给你一个时间片单位

多级队列

每个队列有自己的调度算法

多级反馈队列

进程能够在不同队列间移动

基于公平规则

1.保证调度算法(对进程公平)

向用户所做的并不是优先运行保证,而是明确的性能保证,该算法可以做到调度的公平性。

2.公平分享调度算法(对用户公平)

如果各用户所拥有的进程数不同,就会发生对用户的不公平问题。

公平分享调度算法能让 所有用户能获得相同的处理机时间或所要求的时间比例

3.3 实时调度

由于在实时系统中都存在着若干个实施进程或任务,它们用来反应或控制某个(些)外部事件,往往带有某种程度的紧迫性

因而对实时系统中的调度提出了某些特殊要求,前面所介绍的多种调度算法,并不能很好的满足实时系统对调度的要求

为此,需要引入一种新的调度,即实时调度。

实时系统中包含两种任务:

硬实时任务(HRT)
指必须满足最后期限的限制,否则会给系统带来不可接受的破坏或者致命错误。
软实时任务(SRT)
也有一个与之关联的最后期限,并希望能满足这个期限的要求,但这并不是强制的,即使超过了最后期限,调度和完成这个任务仍然是有意义的。

实现实时调度的基本条件

1.提供与任务相关的必要信息

①就绪时间:指某任务的状态转换为就绪状态的起始时间,在周期任务的情况下,它是事先预知的 一串时间序列;

②开始截止时间和完成截止时间;

③处理时间:一个任务从开始执行直至完成所需的时间;

④资源要求:任务执行时所需的一组资源;

⑤优先级。

2.系统处理能力强

提高系统处理能力的途径有:

①采用单处理机系统,但须增强其处理能力,以显著减少对每个任务 的处理时间;

②采用多处理机系统

3.采用抢占式调度机制

在含有HRT任务的实时系统中,广泛采用抢占式调度机制,这样便可满足HRT任务对截止时间的要求。

4.采用快速切换机制

该机制应具有如下两方面的能力。

①对中断的快速响应能力。

②快速的任务分派能力

实时调度算法的分类

可按照不同方式对实时调度算法加以分类:

  • 根据实时任务性质的不同,分为 HRT 硬实时调度算法SRT 软实时调度算法
  • 根据调度方式的不同,分为 非抢占调度算法抢占调度算法
  • 根据调度程序调度时间的不同,分为 静态调度算法动态调度算法
  • 多处理机环境下,可分为 集中式调度分布式调度 两种算法

(非)抢占式的几种调度算法

非抢占式 轮转 调度算法               非抢占式 优先级 调度算法
基于 时钟中断 的抢占式优先级调度算法   立即抢占 的优先级调度算法

常用的几种实时调度算法

最早截止时间优先 EDF 算法

Earliest Deadline First

贪心算法(会议室问题:尽可能安排结束时间早的会议)

最低松弛度优先 LLF 算法

Least Laxity First

根据任务紧急程度(松弛度)确认优先级

优先级倒置

高优先级的任务被低优先级的任务阻塞或延迟执行的情况

解决办法

采用一些调度策略,比如优先级继承、优先级反转等

3.4 进程调度

包括上面的(非)抢占式调度、优先级调度、轮转、多队列等…

3.5 死锁概述

省流:只有一双筷子,两人吃饭都抢了一只筷子,都在等对方放下筷子好让自己吃饭 … 结果两人都饿死了 …

a用m时,b用了n,a 用 m 后等待用 n,b 用 n 后等待用 m ,但是n被b占用,而b同时也在等待a的m,均等待无结果陷入死锁

死锁的描述

死锁进程中的每个进程都在等待另一个死锁进程所占有的资源,但由于所有这些进程都已无法运行,因此它们谁都不会释放资源,导致这组进程只能无限期地等待下去。

资源问题

可重用资源
每个可重用资源中的单元,只能分配给一个进程使用

可消耗资源
每类可消耗性资源的单元数目在进程运行期间是可以不断变化的

可抢占资源
可抢占资源是指某进程在获得这类资源后,它可以再被其他进程或系统抢占,不会造成死锁,如处理机,内存

不可抢占资源
一直占用直到用好,会造成死锁,如磁带机、打印机

产生死锁的必要条件(考)

互斥条件:不能同时使用

请求和保持条件:有了资源还要请求别的资源,别的资源又被别人死拿着不放

不可抢占条件:拿得死死的,不会被抢

循环等待条件:拿不到就死等(我拿不到,其他人也别想抢到!)

互斥条件、请求和保持条件、不可抢占条件、循环等待条件

处理死锁方法

  1. 死锁预防与避免,确保不会产生死锁

  2. 死锁检测与恢复,允许死锁产生,检测到就恢复系统

  3. 忽略死锁,假装死锁不存在

3.6 预防死锁

破坏死锁的一个或多个必要条件,来防止其产生

由于互斥条件是 非共享设备 所必须具备的条件,不仅不能改变,还应加以保证
因此,预防死锁时主要是破坏产生死锁的后3个条件

破坏 请求和保持 条件

系统必须保证做到:当一个进程在请求资源时,它不能持有不可抢占资源 (该保证可通过以下两个不同的协议实现)

协议1

所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源

要啥资源就一次性说,不要断断续续的!若资源不够,就全都不分配,继续等

缺点 很明显啊,要是我要10000个资源,始终只有9999个资源可用,而我又得不到10000个而死等,那不就浪费了嘛!

协议2

允许一个进程只获得运行初期所需的资源后,便开始运行。进程运行过程中再逐步释放已分配 给自己的、且已用毕的全部资源,然后再请求新的所需资源

就是说你可以不一次性请求完,但是你要请求新的资源之前,要释放之前所占有的

破坏 不可抢占 条件

当一个已占有某些不可抢占资源的进程,请求新资源而不能得到满足时,它必须释放已经保持的所有资源,以后需要时再重新申请

就算说你拿不到就死等可以,先把东西留下,别tm一直死等还占用那些不可抢占资源!

缺点 方法实现比较复杂,且需要付出很大的代价

破坏 循环等待 条件

对系统的所有资源类型进行线性排序,并赋予它 们不同的序号

协议规定:定每个进程必须按序号递增的顺序请求资源,若要请求序号更低的资源,则需先释放序号高的资源

缺点 按顺序比较死板,不够灵活,资源利用率不高

3.7 避免死锁

在资源动态分配时,防止系统进入不安全状态

限制性较弱,无需破坏死锁产生的必要条件,一般会获得较好的系统性能

安全状态

能找到某种递推序列,给进程分配资源使其能顺利完成,必然不会进入死锁

不安全状态

有可能产生死锁,当在安全状态时,又有新的资源请求,就有可能产生不安全状态

死锁与安全状态之间的关系

安全状态下不会死锁;而不安全状态时,可能会进入死锁状态

银行家算法

① 每个新进程在进入系统时,其必须申明在运行过程中可能需要每种资源类型的最大单元数目,该数目<=系统所拥有的资源总量

② 当进程请求一组资源时,系统必须首先确定是否有足够的资源可分配给该进程

③ 若有,则进一步计算在将这些资源分配给该进程后,系统是否会处于不安全状态

④ 如果不会,则将资源分配给该进程,否则让该进程等待

省流:在安全进入不安全状态的情况下多了一层校验,先判断会不会进入不安全状态,再决定要不要给它分配资源

这个判断校验就要用到银行家算法,具体算法案例讲解:

b站银行家算法讲解

3.8 死锁的检测与解除

检测

画出资源分配图(有向图),若一个进程能够获得所有资源,则资源先给他运行,然后释放,即将其关联的所有边去掉

以此类推,若最终的图无边,则说明可简化,不会造成死锁

若最终的图还有边,说明是 不可完全简化图,说明会造成死锁

解除

终止所有死锁进程

简单粗暴代价高,有些进程可能都快结束了,就被直接秒了…

逐个终止死锁进程

逐步终止,知道资源足够为止,但是需要采用死锁检测算法,代价也不低

死锁检测算法:终止一个进程时,还要判断是否还有死锁,如果有,还要终止其他进程

选择策略最主要的依据:为解除死锁而付出的代价最小

标签:优先级,操作系统,处理机,死锁,调度,算法,进程,资源
From: https://blog.csdn.net/mydaily_/article/details/140186580

相关文章

  • Open-TeleVision:增强机器人学习的沉浸式遥开源操作系统 (https://robot-tv.github.io/
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • 关于Windows防火墙的漏洞,具体信息可能随着时间和操作系统版本的更新而变化。以下是一
    Windows防火墙,特别是WindowsDefender防火墙,是Windows操作系统中用于保护计算机免受网络攻击的关键组件。然而,像任何其他安全系统一样,Windows防火墙也可能存在漏洞或安全问题。以下是一些可能涉及Windows防火墙的具体漏洞或安全问题的讨论:1.默认配置和设置不当默认设置不安全:W......
  • 【学习笔记】操作系统--万字长文
    计算机操作系统文章目录计算机操作系统引言操作系统基本概念第一章引论目标和作用操作系统发展历程单道批处理系统多道批处理系统分时系统实时系统基本特征并发共享虚拟异步性(不确定性)操作系统主要功能处理机管理内存管理设备管理文件管理第二章进程进程和程序的......
  • 在 Windows 操作系统中,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tc
    在Windows操作系统中,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的两个重要参数控制着TCP/IP协议栈的行为。这些参数可以通过注册表来配置,影响网络连接和端口资源的管理。1.MaxUserPort路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe......
  • C语言字节对齐技术在嵌入式、网络与操作系统中的应用与优化
    第一部分:嵌入式系统中的字节对齐嵌入式系统通常对性能和资源有着严格的要求。在这些系统中,字节对齐的正确使用可以显著提高数据访问速度,减少内存占用,并提高系统的整体效率。一、嵌入式系统中的字节对齐挑战嵌入式系统中的微处理器和微控制器通常对数据访问的对齐有特定的要......
  • 《操作系统》第三章的重难点内容_补充笔记
    前言王道408书上很多内容是没有的,但是这些内容是超级重要的考点,也能加深理解,所以我将其补充一下。《25操作系统408王道》p184-185混淆点页框、页帧是指内存中。页框号同理。页面、页是指页表中。页号、页内偏移量同理。每个页表项占多少字节【经常考察】一个页表项占多少字......
  • 米尔瑞米派集聚5种操作系统,兼顾学习开发和项目产品需要的派
    米尔电子发布的瑞萨第一款MPU生态板卡-瑞米派(RemiPi),采用瑞萨RZ/G2L双核A55芯片,接口丰富,全面兼容树莓派的扩展模块。瑞米派支持五种系统,兼顾学习开发和项目产品需要。软件提供五种软件系统分别为:基于Yocto构建的两种系统,一种是支持通用功能的精简型系统,另一种是带有Qt和丰富Linux......
  • [操作系统]
    IO多路复用进程进程间通信六种方式管道/消息队列/信号/信号量/共享内存/socket/管道管道分为命名管道和无名管道,在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,都可以看成一种特殊的文件,具有固定的读端和写端,也可以使用普通的read、write等函数。但是它不是......
  • 探寻操作系统文件名字符限制的规则和历史
    引言从最早的电脑系统到现代的操作系统,文件命名的规则一直在不断发展,这些规则体现了不同操作系统设计哲学的差异。作为开发者,了解这些差异和背后的历史渊源非常有价值,本文将详细探讨Windows、macOS和Linux三大主流操作系统在文件名字符限制方面的差异和背后的历史原因。Wi......
  • 【持续更新】开发中的各操作系统的快捷操作你都知道了吗?
    希望文章能给到你启发和灵感~如果觉得文章对你有帮助的话,点赞+关注+收藏支持一下博主吧~阅读指南开篇说明一、基础环境说明1.1硬件环境1.2软件环境二、MacOS系统2.1基本操作2.2窗口和程序管理2.3浏览器操作2.4截图和屏幕控制2.5其他常用快......