三、操作系统

(一)概述

操作系统是管理整个系统的软、硬件资源的系统,既是人和硬件之间的一种接口,也是应用软件与硬件之间的接口。

image

image

(二)进程管理

1.进程的状态

进程的状态是操作系统对进程进行管理的时候设置的几种状态,进程的状态有三种:

  • 就绪:除了 CPU 资源,其它资源都已具备。

  • 运行:具备所有资源,包含 CPU 资源。

  • 等待:除了缺少 CPU 资源,还缺少其它起源。

image

image

2.前趋图

前趋图在考试中经常考到,往往和 PV 图结合起来考察。

image

image

3.进程的同步与互斥

进程的同步与互斥是进行 PV 操作的前提。注意:同步的反义词是异步,互斥的反义词是共享,所以同步与互斥并不是互为反义词。

  • 进程的互斥:在同一时刻,只允许某一个进程使用该资源,即一个资源不能同时服务于多个进程。当一个进程占用了某个资源时,其它进程就不能使用该资源,就需要等待。

  • 进程的同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。

image

image

4.PV 操作

PV 操作是一种实现进程互斥与同步的有效方法。PV 操作与信号量的处理相关,P(Passeren)表示通过的意思,V(Vrijgeven)表示释放的意思。PV 操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为 0 时,表示期望的消息尚未产生;当信号量的值非 0 时,表示期望的消息已经存在。用 PV 操作实现进程同步时,调用 P 操作测试消息是否到达,调用 V 操作发送消息。

PV 操作在整个操作系统中是最难的一部分。

image

从上图中可以看出,P 操作可以阻塞进程,而 V 操作可以激活进程。

image

下图中,系统里面有两个进程,一个是生产者,一个是消费者。生产者进程为负责生产产品并将产品送到缓冲区,消费者进程为负责从缓冲区中取出产品并将其消费掉。题目中提到的单缓冲区,即只有一个缓冲区(市场)。接下来分别分析没有 PV 操作和有 PV 操作的情况:

(1)假设没有 PV 操作,即没有 P(S1)、P(S2)、V(S2)、V(S1)这些操作。如果首先执行一次生产者进程,即生产一个产品并将产品送到单缓冲区,然后继续执行一次生产者进程,即又生产了一个产品并将产品送到单缓冲区,但是由于单缓冲区已经满了(已经装了上一次生产者进程生产的产品),所以如果继续将产品送到单缓冲区就会导致溢出错误。为了避免以上问题,所以需要 PV 操作。

(2)假设没有 PV 操作,如果首先执行一次消费者进程,即消费者从单缓冲区中取产品,但是此时单缓冲区中并没有任何产品,所以也会导致出错。所以不管是先执行生产者进程,还是先执行消费者进程,都有可能会导致错误。

(3)假设有 PV 操作,按原来的操作方式执行一遍。首先执行生产者进程,生产一个产品,然后执行 P(S1)操作,S1 的初值为 1,执行完 P(S1)操作后 S1=0,判断 S1<0 的结果为 False,所以继续往下执行,即将产品送到单缓冲区中。然后执行 V(S2) 操作,S2 的初值为 0,执行完 V(S2) 操作后 S2=1,判断 S2<=0 的结果为 False,所以继续执行下一步。如果下一步继续执行生产者进程,即生产一个产品,然后执行 P(S1)操作,S1 的值由 0 变成-1,判断 S1<0 的结果为 True,则当前的生产进程就会被放入进程等待队列,并且把当前的状态阻塞起来,所以第二次生产的产品在单缓冲区中的产品(第一次生产)还没有被消费掉之前,是不会再被送入单缓冲区的,就避免了溢出错误。由于生产进程被阻塞,所以现在来看消费者进程的执行情况。执行消费者进程,执行完 P(S2)后 S2 的值由 1 变成 0,判断 S2<0 的结果为 False,所以继续执行下一步,即消费者从单缓冲区中取出产品并消费掉,然后执行 V(S1)后 S1 的值由 -1 变成 0,判断 S1<=0 的结果为 True,则会从进程等待队列中找到一个进程并将其激活,这时候找到的队列就是最开始放入进程等待队列中的生产者进程,激活该进程后就会将生产的产品送到单缓冲区中,然后继续执行 V(S2)后 S2 的值由 0 变成 1,判断 S2<=0 的结果为 False,接着继续执行下一个进程,以此类推。

(4)假设有 PV 操作,如果先执行消费者进程,执行 P(S2)操作后 S2 的值由初值 0 变成-1,判断 S2<0 的结果为 True,所以该进程就会被放入进程等待队列中(即进程被阻塞,因为此时单缓冲区中是空的,没有产品可以被消费),所以也可以避免错误。

image

如下图所示的 PV 操作实例,解题的关键点是找出约束关系。

image

image

5.PV 操作与前趋图

前趋图主要用来表达需要进程的这些活动之间的依赖关系。接下来要将前趋图转为 PV 操作的形式,实际上是把前趋图的每一个活动都转成相应的进程,然后为了保证这些进程在并发执行的时候仍然按照前趋图规定的先后顺序执行。这种类型的题目经常考到,所以必须要掌握。

如下图所示,对于 A、B、C 而言,这三个都是一开始就可以执行,所以不受任何约束。对于 D,如果要执行 D,则必须先要执行完 A 或 B 或 C。对于 E,如果要执行 E,则必须先执行完 A 或 B 或 C,且执行完 D。

image

image

image

如下图所示,先在前趋图中按照从左到右、从上到下的规则依次将信号量 S1、S2、S3、S4 标注在连接线上。S1 所在的连接线的开始位置(P1 执行完)为 V(S1),结束位置(P3 执行前)为 P(S1)。S2 所在的连接线的开始位置(P2 执行完)为 V(S2),结束位置(P3 执行前)为 P(S2)。S3 所在的连接线的开始位置(P3 执行完)为 V(S3),结束位置(P4 执行前)为 P(S3)。S4 所在的连接线的开始位置(P3 执行完)为 V(S4),结束位置(P5 执行前)为 P(S4)。可以得出,a 就是 P1 执行完即 V(S1),b 就是 P2 执行完即 V(S2),c 就是 P3 执行前即 P(S1)和 P(S2),d 就是 P3 执行完即 V(S3)和 V(S4),e 就是 P4 执行前即 P(S3),f 就是 P5 执行前即 P(S4)。

image

6.死锁问题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

6.1 不发生死锁的最少资源数

如下图所示,假设系统有 5 个资源,A 分配 2 个资源,B 分配 2 个资源,C 分配 1 个资源,肯定会导致出现死锁问题。假设系统有 10 个资源,A 分配 4 个资源,B 分配 4 个资源,C 分配 2 个资源,也会出现死锁问题。如果系统有 13 个资源,则先分别给 A、B、C 每个分配 4 个资源,此时系统还剩 1 个资源,可以分别给 A、B、C 使用,这样就不会导致死锁出现了。当需要求出系统最少需要多少个资源才不会导致死锁时,可以先用每个进程需要的资源数量-1,累加后再加 1 即可得到不发生死锁的最少资源数。例如有 k 个进程,每个进程需要的资源数为 n,则不发生死锁的最少资源数为:k x (n-1) + 1。

image

6.2 死锁的预防与避免

死锁有四大条件,这四大条件缺一个都不会导致死锁。死锁的四大条件如下:

  • **互斥条件:**指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用完释放。

  • **请求和保持条件:**指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

  • **不剥夺条件:**指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

  • **环路等待条件:**指在发生死锁时,必然存在一个进程—资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源,P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

image

银行家算法是模拟银行房贷的思路,即银行在放贷前,先判断放贷对象是否有偿还能力。

image

image

image

image

7.存储管理

7.1 分区存储组织

image

image

7.2 段页式存储
  1. 段式存储

在程序中,是将函数分割成段的,比如将主函数作为一个段,将函数 1 作为一个段,将函数 2 作为另一个段,不同段的段长是可以不同的。

image

  1. 页式存储

在段页式存储中,需要掌握的是页式存储中逻辑地址与物理地址之间的转换。高级程序语言使用逻辑地址,而运行状态内存中使用的是物理地址。

image

image

image

  1. 段页式存储

段页式存储是先分段、再分页。

image

7.3 快表

快表是放在 Cache 中,而放在内存中的成为慢表。

image

7.4 页面置换算法

页面置换算法广泛应用于分层的存储体系之中。对于 Cache,由于 Cache 的容量有限,当 Cache 的块都被占用,要调入新的块进入 Cache 的时候,就会用到页面置换算法。在页面置换算法中,最常用的两种算法是先进先出(FIFO)算法、最近最少使用(LRU)算法。

image

image

imageimage

8.文件管理

8.1 索引文件结构

标准的索引文件结构一般是有 13 个节点,编号是从 0 到 12。

imageimage

image

8.2 文件和树型目录结构

主要考察相对路径和绝对路径的概念。不管是 DOS 系统,还是 Windows 系统、Linux 系统,其文件的目录结构都是树型结构。

image

8.3 空闲存储空间的管理

主要考察位示图法。位示图中的每一个 bit,对应磁盘上一个物理块的使用状态,取值 0 和 1 分别表示空闲和占用。

image

image

image

9.设备管理

9.1 数据传输控制方式

数据传输控制方式,主要是指内存和外设之间的数据传输控制问题,主要有以下几种方式:

  • 程序控制方式:又称为程序查询方式,是 CPU 介入最多的方式。外设不会主动反馈信息,处于一种非常被动的状态。

  • 程序中断方式:基本上和程序控制方式一样,不同之处在于外设的主动性要强些,当外设完成了数据传输时,会主动发送中断信息。

  • DMA 方式:又称为直接存储控制方式,有专门的 DMA 控制器。DMA 传输方式是让存储器与外设、或外设与外设之间直接交换数据,不需要经过 CPU 的介入,减少了中间环节,并且内存地址的修改、传送完毕后的结束报告都是由硬件电路实现,因此大大地提高了数据的传输速度。一个 DMA 传送只需要执行一个 DMA 周期,相当于一个总线读写周期。采用 DMA 方式传送数据时,每传送一个数据都需要占用一个总线周期。(2021 年上半年上午题)

  • 通道:用专用计算机来进行控制,所以不在讨论范围内。

  • 输入输出处理机:用专用计算机来进行控制,所以不在讨论范围内。

image

9.2 虚设备和 Spooling 技术

Spooling 技术的核心思想是在磁盘上设置了一个缓冲区,把要输出或输入的数据先缓存起来,这样就可以解决外设的低速与内设的高速之间的差异。

image

10.微内核操作系统

微内核由一群尽可能将数量最小化的软件程序组成,它们负责提供实现一个操作系统所需要的各种机制与功能,微内核操作系统就是一种基于微内核架构的操作系统。微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口,如DOS、Workplace OS、Workplace UNIX等。IBM、Microsoft、开放软件基金会(OSF)和UNIX系统实验室(USL)、鸿蒙OS等新操作系统都采用了这一研究成果的优点。

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180856.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gopro hero5运动相机格式化后恢复案例

Gopro运动相机以稳定著称&#xff0c;旗下的Hero系列销售全球。下面我们来看一个Hero5格式化后拍了少量素材的恢复案例。 故障存储:64G MicroSD卡 Exfat文件系统 故障现象: 64G的卡没备份数据时做了格式化操作又拍了一条&#xff0c;发现数据没有备份&#xff0c;客户自行使…

c语言经典算法—二分查找,冒泡,选择,插入,归并,快排,堆排

一、二分查找 1、前提条件&#xff1a;数据有序&#xff0c;随机访问&#xff1b; 2、实现&#xff1a;递归实现&#xff0c;非递归实现 3、注意事项&#xff1a; 循环退出条件:low <high,low high.说明还有一个元素&#xff0c;该元素还要与key进行比较 mid的取值&#xf…

C# list<T>去重

文章目录 C# list<T>去重值类型去重List<object>object is intobject is decimalobject is charobject is boolobject is string List<int>List<string> 引用类型去重 C# list去重 值类型去重 List object is int //object is intList<object&g…

Redis-命令操作Redis

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.Redis简介 1.1.什么是Redis Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据…

unittest 通过TextTestRunner(buffer=True)打印断言失败case的输出内容

buffer是unittest.TextTestRunner的一个参数&#xff0c;它决定了测试运行时是否将输出结果缓存&#xff0c;并在测试完成后一次性打印。 当buffer设置为True时&#xff0c;测试运行期间的输出结果会被缓存起来&#xff0c;并在测试完成后一次性打印。这对于一些输出频繁的测试…

SPSS多因素方差分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

MongoDB安装及开发系例全教程

一、系列文章目录 一、MongoDB安装教程—官方原版 二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控 三、MongoDB 基于角色的访问控制 四、MongoDB用户管理 五、MongoDB基础知识详解 六、MongoDB—Indexs 七、MongoDB事务详解 八、MongoDB分片教程 九、Mo…

炸了!CVPR 2024投稿ID突破18000

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉和Transformer】交流群 扫码加入CVer知识星球&#xff0c;可以最快学习到最新顶会顶刊上的论文idea和CV从入门到精通资料&#xff0c;以及最前沿项目和应用&…

分析报告有样板了-奥威BI数据可视化报表模板

述职报告、月度数据分析报告、季度数据分析报告、区域数据分析报告……人在职场&#xff0c;数据分析报告少不了。那么&#xff0c;怎么才能在极短的时间内做出一张既好看又突出重点、分析逻辑在线的数据可视化分析报表&#xff1f;奥威BI软件的建议是采用BI数据可视化报表模板…

0-1矩阵列互斥问题——回溯法 Python实现

三、 0-1 矩阵的列集互斥问题。给定一个 m n m \times n mn 的 0-1 矩阵 A \mathrm{A} A 。定义列互斥为: 对于矩阵 A A A 中的任意两列 i i i 和 j j j, 如果在对应的每一行上, i i i 和 j j j 不存在同时为 1 的情况, 则称列 i \mathrm{i} i 和 j \mathrm{j} j 互斥…

unity工程

1首先我们来熟悉一下Unity每个文件夹的作用 1.assets&#xff1a;工程资源文件夹 2.library&#xff1a;库文件夹 3.logs&#xff1a;日志文件夹 4.obj&#xff1a;编译产生中间文件 5.packages&#xff1a;包配置信息 6&#xff1a;projectsettings&#xff1a;工程设置…

Sync Folders Pro(文件夹数据同步工具)

Sync Folders Pro for Mac 是一款功能强大的文件夹同步工具&#xff0c;旨在帮助用户在 Mac 计算机和移动设备之间创建双向同步。这款软件支持各种文件系统和设备&#xff0c;如 iPhone&#xff0c;iPad&#xff0c;iPod&#xff0c;Android 等。通过这款软件&#xff0c;用户可…

【入门Flink】- 03Flink部署

集群角色 Flik提交作业和执行任务&#xff0c;需要几个关键组件&#xff1a; 客户端(Client)&#xff1a;代码由客户端获取并做转换&#xff0c;之后提交给JobManger JobManager&#xff1a;就是Fink集群里的“管事人”&#xff0c;对作业进行中央调度管理&#xff1b;而它获…

uni-app华为审核被拒,驳回原因:您的应用在运行时,未见向用户告知权限申请的目的

华为审核被拒&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取(相机存)等权限&#xff0c;不符合华为应用市场审核标准。 <uni-popup ref"perpopup" type"center" :mask-clickfalse><view class&qu…

Leetcode—421.数组中两个数的最大异或值【中等】明天写一下字典树做法!!!

2023每日刷题&#xff08;十九&#xff09; Leetcode—421.数组中两个数的最大异或值 算法思想 参考自灵茶山艾府 实现代码 class Solution { public:int findMaximumXOR(vector<int>& nums) {int maxValue *max_element(nums.begin(), nums.end());int highId…

1. PPT高效初始化设置

1. PPT高效初始化设置 软件安装&#xff1a;Office 2019 主题和颜色 颜色可以在白天与黑夜切换&#xff0c;护眼 切换成了黑色 撤回次数 撤回次数太少&#xff0c;只有20次怎么办 自动保存 有时忘记保存就突然关闭&#xff0c;很需要一个自动保存功能 图片压缩 图…

Android和JNI交互 : 常见的图像格式转换 : NV21、RGBA、Bitmap等

1. 前言 最近在使用OpenCV处理图片的时候&#xff0c;经常会遇到需要转换图像的情况&#xff0c;网上相关资料比较少&#xff0c;也不全&#xff0c;有时候得费劲老半天才能搞定。 自己踩了坑后&#xff0c;在这里记录下&#xff0c;都是我在项目中遇到的图像转化操作&#xf…

【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

uni-app小程序使用vant

步骤一&#xff1a;安装 Vant Weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production步骤二&#xff1a;在根目录下创建“wxcomponents”文件夹 步骤三&#xff1a;找…

分享86个工作总结PPT,总有一款适合您

分享86个工作总结PPT&#xff0c;总有一款适合您 PPT下载链接&#xff1a;https://pan.baidu.com/s/12aRTr5NKG5YTnMnwNbqOrQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知…