三、操作系统

news2024/11/26 20:25:45

(一)概述

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

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.coloradmin.cn/o/1173187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CLion2022安装

1. CLion下载 地址&#xff1a;https://www.jetbrains.com.cn/clion/download/other.html 下载你需要的版本&#xff0c;这里以2022.2.4为例 之后获取到对应的安装包 2. 安装 1、双击运行安装包&#xff0c;next 2、选择安装路径&#xff0c;建议非系统盘&#xff0c;nex…

Jetpack:029-Jetpack中的网格布局

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了Jetpack中Card相关的内容&#xff0c;本章回中主要介 网格布局。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01; 1. 概念介绍 我们在本章回中…

第九章《搞懂算法:决策树是怎么回事》笔记

决策树算法是机器学习中很经典的一个算法&#xff0c;它既可以作为分类算法&#xff0c;也可以作为回归算法。 9.1 典型的决策树是什么样的 决策树算法是依据“分而治之”的思想&#xff0c;每次根据某属性的值对样本进行分类&#xff0c;然后传递给下个属性继续进行分类判断…

【CMU15445】Fall 2019, Project 3: Query Execution 实验记录

目录 实验准备实验测试Task 1: CREATING A CATALOG TABLE SQL 执行是由数据库解析器转化为一个由多个 executor 组成的 Query Plan 来完成的&#xff0c;本实验选择了火山模型来完成 query execution&#xff0c;这一次的 project 就是实现各种 exeutor&#xff0c;从而可以通过…

2014年亚太杯APMCM数学建模大赛C题公共基础课教师专业化培养方式研究求解全过程文档及程序

2014年亚太杯APMCM数学建模大赛 C题 公共基础课教师专业化培养方式研究 原题再现 近年来&#xff0c;世界基础工业、信息产业、服务业的跨越式发展引发了大量人才需求&#xff0c;导致了职业教育的飞速发展&#xff0c;除原有专科层次高等职业教育院校外&#xff0c;大量普通…

行业安卓主板-基于RK3568/3288/3588的电子班牌/人脸识别门禁/室内对讲门禁方案解决方案(二)

电子班牌 智能电子班牌可在主页实时显示班级全面的基本信息&#xff0c;包括天气、班名、课程表、值日表等&#xff0c;并发布学校通知、班级通知。学生可刷卡自动登陆系统进行课堂反馈&#xff0c;教师和家长可及时了解教学反馈&#xff0c;打通学校、教师、学生之间的互动通…

逆向学习记录(2)windows常用基本操作及用环境变量配置上多个python版本

1、如何打开cmd 第一种方法&#xff1a;按下winr&#xff0c;运行cmd 第二种方法&#xff1a;进入一个目录&#xff0c;点击路径处&#xff08;显示蓝色背景&#xff09;&#xff0c;然后直接键盘输入cmd&#xff0c;回车&#xff0c;运行cmd并直接进入此目录。 2、命令dir&am…

OpenFeign 的超时重试机制以及底层实现原理

目录 1. 什么是 OpenFeign&#xff1f; 2. OpenFeign 的功能升级 3. OpenFeign 内置的超时重试机制 3.1 配置超时重试 3.2 覆盖 Retryer 对象 4. 自定义超时重试机制 4.1 为什么需要自定义超时重试机制 4.2 如何自定义超时重试机制 5. OpenFeign 超时重试的底层原理 5…

04-附注 三维空间中的线性变换

附注 三维空间中的线性变换 三维空间线性变换 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 三维空间线性变换 图1 绕y轴旋转90 绕y轴旋转90后&#xff0c;各基向量所在的坐标如图1所示。用旋转后的各基向量作为矩阵的列&#xff0c;就得到变换矩阵。变换矩阵…

简单代理模式

代理模式 代理模式(Proxy)&#xff0c;为其他对象提供一种代理以控制对这个对象的访问。 结构图如下&#xff1a; ISubject接口&#xff0c;定义了RealSubject和Proxy的共用接口方法&#xff0c;这样就可以在任何使用RealSubject的地方使用Proxy代理。 ISubject接口 public…

心脏骤停急救赋能

文章目录 0. 背景知识1. 遇到有人突然倒地怎么办1.1 应急反应系统1.2 高质量CPR1.2.1 胸外按压1.2.2 人工呼吸 1.3 AED除颤1.3.1 AED用法 1.4 高级心肺复苏1.5 入院治疗1.6 康复 0. 背景知识 中国每30s就有人倒地&#xff0c;他们可能是工作压力大的年轻人&#xff08;工程师群…

用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

目录 一、冒泡排序 1.冒泡排序介绍 2.排序的思路 3.完整代码 二、折半查找 1.折半查找介绍 2.查找的思路 3.完整代码 三、逆序数组 1.逆序思路 2..完整代码 一、冒泡排序 冒泡排序是众多排序的一种&#xff0c;无论在C语言或者Java中都很常见&#xff0c;后续在数据…

CleanMyMac X2024试用版下载及使用教程

CleanMyMac X是一款颇受欢迎的专业清理软件&#xff0c;拥有十多项强大的功能&#xff0c;可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等&#xff0c;并且这款清理软件操作简易&#xff0c;非常好上手&#xff0c;特别适用于那些刚入手苹…

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

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

【Linux】 基础命令 第一篇

目录 ls​编辑 ls -l ls -a ls -i ls ./* cd指令&&pwd cd . && cd .. 绝对路径&#xff1a; dir/Linux/2023/10 相对路径&#xff1a; 跳转至另一路径​编辑 cd~ cd - touch指令(创建文件) stat指令&#xff1a; mkdir 指令(创建文件夹) tree指…

win10设置windows永不更新

以下方法能全部设置都要全部设置。 方法一&#xff1a;Windows设置 要想关闭Win10自动更新&#xff0c;比较简单的一种方法就是进入到Windows设置中&#xff0c;将Windows更新直接关闭。步骤如下&#xff1a; 1、按“Windows I”键&#xff0c;打开Windows设置&#xff0c;再…

【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

文章目录 前言一. 二级指针1.1 二级指针是什么&#xff1f;1.2 二级指针使用示例1.3 拓展&#xff1a;n级指针 二. 一维数组与指针:2.1 利用指针遍历数组:2.2 指针数组2.3 数组指针 三、 二维数组指针3.1 二维数组指针是什么&#xff1f;示例代码 3.2 指针数组示例代码 3.3 利用…

【Hadoop】Apache Hadoop YARN

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01; 目录 一、YARN概述 二、YARN基础架构 2.1 ResourceManager&#x…

Java 正则表达式分组匹配

前几篇文章都是简单判断是否满足匹配规则&#xff0c;当需要提取匹配结果时就用到分组匹配。 分组匹配 可以判断是否满足正则表达式&#xff0c;然后提取出子串。 有些时候电话号码是以 123-4567-8899 这样显示的&#xff0c;我们要判断某个字符串是这种形式的并分别提起三段…