3_1 操作系统

news/2024/5/5 3:54:34/文章来源:https://blog.csdn.net/qq_40572023/article/details/126993792

3.01 操作系统概述

在这里插入图片描述
接口的区分:

  • 人机之间的接口:命令,窗口
  • 应用软件与硬件之间的接口:api的接口

在这里插入图片描述

进程管理

3.02 进程管理——进程状态转换图

进程的状态:操作系统当中对进程进行管理的时候,为进程指定了几种状态,以便于给进程分配相应的资源,把它管理起来。

在这里插入图片描述

最初的进程状态(三种)

最初的状态分类

  • 运行:指这个进程需要的所有资源都已经配足了,并且给他了cpu资源
  • 就绪:指这个进程除了cpu资源,其他需要的所有资源都已经配足了
  • 等待:指这个进程除了cpu资源,还缺其他需要的所有资源

各个状态之间的转换关系

  • 运行—(等待某个事件)—>等待:当进程缺少某一个资源的时候就会进入到等待
    • 但是当进行补充好相应资源后不能直接去运行,需要去排队等待cpu资源的调用
  • 等待—(等待事件发生)—>就绪:当补充好相应资源后就进入到就绪状态
  • 就绪—(调度)—>运行:当资源配足的进程排到cpu进程时
  • 运行—(时间片到)—>就绪:一个进程从就绪到运行只能执行一个时间片,当时间片到了就返回就绪状态继续排队。

注:三种状态成熟后发现并不能满足所有的情况(比如人为暂停),所以提出来五态模型

升级的进程状态(五种)

状态分类中:运行(运行),活跃阻塞(等待),活跃就绪(就绪)两两对应,一个意思

与三态的不同点

  • 多了一个静止就绪和静止阻塞
    • 挂起:就和有人给你打电话,你放下手中的工作
    • 恢复或激活:电话打完了,再开始手中的工作

3.03 进程管理——前趋图【考点】

考题考点:前趋图一般和PV操作结合考察
在这里插入图片描述
前趋图:用来表达要完成的一系列活动,它的先后的约束关系。

  • 想表达的内容:这样就可以看出那些任务可以并行,那些任务有先后关系
  • 比如:包饺子可以绞肉,切菜,搅拌,包饺子顺序执行,但是绞肉和切菜可以同时进行,但是搅拌要受前两部的约束,同理包饺子要受到搅拌的约束。

3.04 进程管理——进程的同步与互斥

学习目的:同步与互斥是进行PV操作一些分析的前提

在这里插入图片描述
互斥:

  • 概念:在同一时刻,只允许某一个进程去使用这个资源【同一个资源不能同时服务于多个进程】
  • 如果一个资源能同时服务于多个进程称为:共享

同步:

  • 概念:有速度匹配要求,当差距拉的比较大的时候,要求速度快的停下来等待速度慢的。
  • 官方:
    • 同步:是指一个进程在执行某个请求的时候,若这个请求没有执行完成,
      那么这个进程将会一直等待下去,直到这个请求执行完毕,才会继
      续执行下面的请求。
    • 异步:是指一个进程在执行某个请求的时候,如果这个请求没有执行完毕,进程不会等待,而是继续执行下面的请求。

讨论PV进程操作问题:生产者和消费者中关于同步,互斥问题

在这里插入图片描述
单缓冲区情况:

  • 互斥:生产者和消费者每次只能一位去市场操作
  • 同步:生产者在市场放入一个商品就不能再放入商品,直到消费者消费掉之后生产者才可以继续在市场里放东西

3.05 进程管理——PV操作

考察:难度大

在这里插入图片描述
一些概念:

  • 临界资源:独木桥
  • 临界区:是一个代码段【进程中访问临界资源的呢段代码】
  • 信号量:应用于PV操作的一种专属变量
    • 如:P(S)中的呢个S,就是信号量

PV操作:

  • 是两大原子操作的一个组合,分为P操作和V操作。
    • P(S):加锁的过程
      • 申请锁定资源操作:信号量-1,做判断
    • V(S):解锁的过程
      • 申请解锁资源操作:信号量+1,做判断

从例题体会PV操作的作用

在这里插入图片描述

  • 当不引入PV操作的时候,先执行生产者就会造成溢出的风险,同理先执行消费者也会出错。

引入PV操作之后:
首先执行生产者情况和循环执行生产者情况【不行,会进入进程队列】
在这里插入图片描述

  • 满足P,V操作判断语句的时候会进入进程队列,否则会继续执行

首先执行消费者情况
在这里插入图片描述

  • 满足P,V操作判断语句的时候会进入进程队列,否则会继续执行

总结

  • PV操作其实是并发进程之间某些约束关系之间问题的解决。

3.06 进程管理——PV操作练习题

在这里插入图片描述

  • 先从收银员进程入手
  • 解题时可以先假设没有这些操作,会面临什么样的问题,从而找出约束关系

3.07 进程管理——PV操作与前趋图【重点考点

将一个前趋图转为PV操作的形式,都转成相应的进程,让这些进程在并发执行的时候依然按前趋图约束的先后顺序去执行。

在这里插入图片描述

  • 进程D开头要有,进程A,B,C的加锁过程P【都解锁之后才能进行下面的操作】
  • 每一个进程A,B,C都有一个解锁过程V

例题演示

在这里插入图片描述
解题步骤

  1. 先在前趋图中标出信号量S,遵循从左到右,从上到下。
  2. 则可以通过前趋图箭头指向写出P与V的分布【如p1箭尾是V(s1),p2箭尾是V(s2),p3箭头是P(s1)和P(s2);箭尾是V(s3)和V(s4)】
    • 箭头为P操作,箭尾为V操作
  3. 将所有的操作具体写到(p1-p5示意图)中,问题就解决了

3.08 进程管理——死锁问题

考察考点:

  • 计算不会死锁的情况
  • 死锁预防与避免问题
    • 会涉及到银行家算法

概念:

  • 死锁:指系统当中有一系列的资源,有一系列需要用到这些资源的进程,这些进程需要系统给分配资源才能进行。如果系统在某一时刻发现所有可用的资源都已经分配出去了,而所有的进程都没有办法完成它本身的职责和任务,从而没办法释放占用的资源。

具体例题:
在这里插入图片描述

  • 求最少多少个资源不会发生死锁的情况:
    • 先给每个进程分配它所需的总数-1个资源
    • 然后有几个进程就乘几个
    • 最后+1之后就是:最少多少个资源不会发生死锁的情

3.09 进程管理——银行家算法

本节讲:死锁的预防和避免

在这里插入图片描述

死锁的预防【了解】

发生死锁的四种情况:

  1. 互斥
  2. 环路等待
  3. 不剥夺
  4. 保持和等待

死锁的预防:打破会发生死锁的四种情况

死锁避免的解决方案【掌握】

两种解决方案:

  1. 有序资源分配法【效率低】
  2. 银行家算法【常用,也是考点】

银行家算法

在这里插入图片描述
思想:以银行房贷的思路,来做资源分配。

具体实例

在这里插入图片描述

  • 选B
    在这里插入图片描述
    在这里插入图片描述
  • 考试就从A选项进行模拟,看能否走通,如果走不通就进行B选项的模拟。

存储管理

3.10 存储管理——分区存储组织

本章从软件的层次,来考虑存储机制
在这里插入图片描述

  • 分配前的空白区域是因为:前面作业做完了内存资源返回造成的
  • 此时再分配作业4的时候,会有多种动态分配的方式

几种内存资源分配方式:【了解思想】

  1. 首次适应法:顺次找下来,找到第一个符合的空间
  2. 最佳适应法:将空闲区块按照从小到大顺序,练成一个链
    • 在分配的时候先用作业4的大小和的空闲区块做比较,如果小于该空闲区块就将作业4分配到这里
    • 缺陷:系统运行一段时间,空闲碎块会非常多
  3. 最差适应法:将空闲区块按照从小到大顺序,练成一个链
    • 在分配的时候先用作业4的大小和的空闲区块做比较,如果小于该空闲区块就将作业4分配到这里,切出来一个9k的内存出来
  4. 循环首次适应算法:将空闲的区域按顺序连成一个环,每次按顺序比较,分配完再对下一个空白区块进行比较,以此类推。
    • 优点:分配均匀,不会老是分配同一个块

3.11 存储管理——页式存储、段式存储、段页式存储

考点掌握:

  • 页式存储当中的逻辑地址和物理地址之间的转化
  • 页式存储、段式存储、段页式存储它们基本的特点,以及运作的方式

页式存储【掌握】

  • 页式存储有了页表的中间件,而不是直接在用户程序和内存之间转换,从而增加了系统开销。
    在这里插入图片描述
  • 物理块号又称页帧号

如何通过逻辑地址来求物理地址呢?

  • 先知道逻辑地址当中那些是页号,那些是页内地址
  • 页内地址直接就对应,物理地址中的页内地址
  • 再通过页号去查找相应的块号
  • 将查到的块号和页内地址组合起来就是物理地址了

习题讲解

在这里插入图片描述

段式存储

在这里插入图片描述

  • 按逻辑结构来划分的
  • 段的大小不要求一致【页式存储不允许】
  • 段号包括:段长和基址

优点:

  • 便于共享

缺点:

  • 内存利用率低

段页式存储

在这里插入图片描述

  • 先分段,再分页

优缺点折中:

  • 优点:空间小,存储共享容易
  • 缺点:复杂性和开销增加,执行速度下降

快表与慢表

快表

  • 页式,段式,段页式存储放到Cache【高速缓存器】当中称为快表

慢表

  • 页式,段式,段页式存储放到内存当中称为慢表

3.12 存储管理——【页面置换算法】页面淘汰算法

  • 应用到:分层存储体系当中

由来:内存体系面临的问题,比如页式存储有100个页,但是内存有限只有3个页,这时候就不可避免的要淘汰不用的页和将用的页存调入进去,这就需要用的一些淘汰算法【共有四种】

在这里插入图片描述

  • 考点:先进先出,最近最少使用
  • 抖动:我分配给你更多资源,想要更好的结果,但是给你更多资源反而结果并不好【如下图就出现了抖动现象】
    • 第一行黄色,要访问的页面序列
    • 第一列黄色,内存上的三个页面
    • 当内存里没有相应页面序列就调入到内存当中
    • 内存里没有就称为缺页
      在这里插入图片描述

例题讲解淘汰机制

在这里插入图片描述

  • FIFO淘汰机制:先进入内存的先淘汰【只考虑谁先进来】
    • 本题3的页面序列位置,对于FIFO来说内存空间为【0,1,2】先进来的是0,则淘汰0
  • LRU淘汰机制:最近最少使用的先淘汰【考虑访问的情况,最近被访问到了就不会被淘汰】
    • 本题3的页面序列位置,对于LRU视角来说内存空间为【1,2,0】,0刚刚被访问,1最久没被访问,则淘汰1

3.13 存储管理——页面淘汰算法练习题

在这里插入图片描述
第一问内存访问次数解题思路:

  1. 没有使用快表说明每读一次程序的块,先在内存上查一下表,查一下表之后才能够读取相应的内存块
    • 所以每一个内存块要进行2次的访问
  2. 题目中说明有6个页面块,则需要访问12次内存

第二问缺页中断次数解题思路:

  1. 这里有个约定俗成:
    • 默认指令无论占几个块,都会一次性调入。
      • 本题占了两个块,所以缺页中断一次
    • 但是操作数是占几个块,就会调入几次
      • 本题也是占了两个块,缺页中断两次
  2. 本题一个指令,两个操作数都占用2个块,根据上面约定俗成的规则得出结果1+2+2=5
    • 占用2个块的原因:指令从内存的1023单元开始存储(1单元=1字节),题中给出页面大小为1kb(1kb=1024字节),在8位计算机系统中存16位的指令(1字节=8位,则只存了一半,另一半存到了下一块当中),则该指令一半存到了0页号中,一半存到了1页号中

文件管理

3.14 文件管理——索引文件结构

文件的一种扩展机制

在这里插入图片描述
索引文件结构:直接索引,一级,二级,三级间接索引

  • 一般是以13个结点的结构,对应的是地址,连接的是物理盘块(用来存内容)
  • 在10这个结点位置链接的物理盘块不在存文件内容,而是存的地址
  • 间接索引级别越高,访问效率越低

实例演示

在这里插入图片描述

3.15 文件管理——文件和树型目录结构

考察:相对路径,绝对路径,全文件名的概念

在这里插入图片描述

  • 根目录一般是盘符,而Linux和unix是用/来做根文件
  • 可以在不同的文件下面,存在相同的文件名【同级目录不行】
  • 绝对路径:是从盘符开始的路径
  • 相对路径:是从当前目录开始的路径
  • 全文件名:绝对路径+文件名(包括格式扩展名)
  • 注:上面打开访问磁盘的次数都只要一次,通过命令打开,并不是一层一层的进入【相对路径先进入,才进行的打开命令】

例题讲解

在这里插入图片描述
在这里插入图片描述

  • 第一空选:C
  • 第二空选:B

3.16 文件管理——空闲存储空间的管理【位示图】

掌握:位示图法的计算问题

在这里插入图片描述
空闲存储空间的管理:

  • 指的是磁盘上有大量的空间,需要把空闲的空间管理起来,以便在某个文件要申请空间的时候,能有依据的分配空间。
    • 有很多的方法,我们重点掌握位示图法
      • 空闲区表法:用一个表来记录那些是空闲的
      • 空闲链表法:把空闲区域都链起来,形成一个链表
      • 位示图法:
      • 成组链接法:分组也分链的方式

位示图法

  • 画一个位示图【把整个存储空间分成了很多个物理块】,其中1表示已经被占用,0表示空闲

试题讲解

在这里插入图片描述
在这里插入图片描述

  • 由题知,一个字是32位
  • 注:字的概念
  • 4195号物理块,其实有4196个物理块(0开始)
  • 字是从1开始算
  • 位置是从0开始算

设备管理

3.17 设备管理——数据传输控制方式

掌握:前三种方式

在这里插入图片描述
数据传输控制方式:

  • 指的是内存外设之间的数据的传输控制问题

几种程序控制方式的介绍:

程序控制方式:

  • 程序控制方式也称为程序查询方式
  • 最低级,也是cpu介入最多的方式,与外设的完成查询形成时间差

程序中断方式:

  • 机制一样,但是主动性变强了,加入了一些中断方式
  • 外设完成了程序的数据的一些传输,就会发出一个中断,系统就会做下一步的处理

DMA方式:

  • 也称为直接存取控制方式
  • 会有专门的DMA控制器,只要是外设和内存的数据交换,过程中就会由控制器来管控,CPU只要在开头的时候做一些记录,之后都有DMA来管控,做完之后再由CPU接管

3.18 设备管理——虚设备与SPOOLING技术

考察:了解基本原则即可

在这里插入图片描述
SPOOLING技术:核心就是开辟了缓冲区,将输出和输入的数据先缓冲起来

  • 比如打印a,b,打印a的时候就把b缓冲起来了,打印完a就会自动开始b,这样打印者等着拿打印的文件即可。

3.19 微内核操作系统

掌握:用户态和核心态都有那些
在这里插入图片描述

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

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

相关文章

一个项目的整个流程

1.基本配置 基础配置包括 1.Vuex------------作用:存储公共的数据 2.Vue-router---------作用:配置页面的映射关系 3.node_modules--------作用:包的管理工具 npm i 包的名字 4.vue.config.js-----------配置一些信息 例如配置跨域的问题 5.assets 放一些静态的资源…

JAVA毕设项目酒店员工管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

JAVA毕设项目酒店员工管理系统(VueMybatisMavenMysqlsprnigSpringMVC) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

DoIP协议:通用DoIP首部否定确认码02和03的区别

通用DoIP首部否定确认消息 当外部测试设备(诊断仪)发送DoIP消息给DoIP实体时,DoIP实体的传输层把DoIP消息(传输层payload,即DoIP header + DoIP payload)上发给DoIP协议层。DoIP协议层取到数据后,不管它是什么类型的DoIP消息,首先都需要被DoIP通用首部处理程序按照规定…

【统计学习|书籍阅读】第六章 logistics回国和最大熵模型 p77-p88

文章目录思路logistic回归模型最大熵模型最大熵模型定义最大熵模型的学习极大似然估计模型学习的最优化算法思路 logistic 回归是统计学习的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型。 logistic回归模型 logistic分布&am…

# 二叉树和线索二叉树相关问题v1

文章目录二叉树和线索二叉树相关问题v1遍历算法遍历顺序分类遍历要点核心递归方式非递归方式线索二叉树二叉树vs线索二叉树(逻辑结构OR存储结构)线索二叉树的空指针剩余问题线索二叉树的遍历二叉树和线索二叉树相关问题v1 遍历算法 pre (NLR)A{B(DHI)(EJK)}{C(FLM)(GNO)}:∠\a…

【云原生 • Kubernetes】配置管理 - Secret ConfigMap

本文导读一、机密配置抽象 Secret1. 认识 Secret2. Secret 的使用(1) 创建 Secret 加密数据(2) 将 Secret 以变量形式挂载到 pod 容器二、配置抽象 ConfigMap1. 认识 ConfigMap2. ConfigMap 的使用(1) 创建配置文件(2) 创建 ConfigMap(3) 将 ConfigMap 以变量形式挂载到 pod 容…

如何保存el-pagination组件的分页状态。

一文细解如何保存组件的分页状态。 文章目录一文细解如何保存组件的分页状态。背景一、实现原理二、代码展示1.分页组件模板背景 使用element-plus的分页组件搭建页面的时候,经常会出现这样一种情况:分页为列表页,当从列表页点击某一项进入详…

HTTP协议4)----对于数据链路层的详细讲解

꧁ 大家好,我是 兔7 ,一位努力学习C的博主~ ꧂ ☙ 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步❧ 🚀 如有不懂,可以随时向我提问,我会全力讲解~💬 &…

Springboot2.x仿B站项目第五章查询Es和内容推荐功能实现笔记及源码

文章目录系统全局模块的开发1.系统全文搜索1.1docker 下安装ES以及kibana1.2 配置Es的相关的yaml和configuration1.3 ES全文检索需求视频投稿搜索查询2.观看记录的统计2.1观看视频的添加信息2.2查询观看记录3.用户视频推荐4.视频弹幕遮罩其他章节系统全局模块的开发 本章主要实…

嵌入式分享合集67

一、CAN的接口保护电路 在一个模块上,由于是中转的CAN,需要从两个不同的连接器上连接出去(这种情况是根据客户的需求而定的)。 一般的设计如图: 一般的,我们最多使用两个电压斜坡控制电容(C2和…

Windows如何生成公钥和私钥

Windows如何生成公钥和私钥 方法一)使用git命令 一. 首先安装git二. 桌面上右键 Git Bash Here三. 命令ssh-keygen -t rsa然后 一直enter 四. 将公钥放到服务器上就可以使用SSH链接了. 方法二)使用openssl生成公钥和私钥 参考链接:https://blog.csdn.net/cduoa/article/deta…

组播路由协议——PIM DM工作机制

目录 扩散、剪枝机制 嫁接机制 状态刷新机制 断言机制 采用“推(Push)”的方式转发组播报文并生成组播表,建立SPT(最短路径树)转发组播报文。它假定每条链路都有接收者,在每条链路上都直接推送组播流量…

大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业

🌩️ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套…

Oracle 常用的经典SQL查询

/*1、查看表空间的名称及大小*/ select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name d.tablespace_namegroup by t.tablespace_name; /*2、查看表空间物理文件的名称及大小*/ select…

vue3 模版语法

App.vue 注释掉首页的文本内容&#xff0c;只剩下对应的图标即可。 <div class"wrapper"><!-- <HelloWorld msg"You did it!day day up 自己更新" /> --></div></header><main><!-- <TheWelcome /> -->&…

“发展与治理”2022元宇宙共治大会成功举行

2022年9月24日下午&#xff0c;“发展与治理”2022元宇宙共治大会暨《元宇宙发展与治理》课题征求意见会、元宇宙产业委数字藏品发展研讨会议&#xff0c;在央链直播平台线上召开&#xff0c;本次会议汇聚众多高科技产业引领者和建设者&#xff0c;以及数权藏品众多流量平台共聚…

Navicat设置utf8mb4后保存emoji仍然报错的解决方法

一、前言 最近遇到一个问题&#xff0c;需要查库并导出报表&#xff1b; 由于报表比较特殊&#xff0c;程序没有实现&#xff0c;因此准备先查询生产库、复制为insert语句&#xff0c;然后在本地Navicat里执行、处理、再导出xls&#xff0c;这样快一些。 但是&#xff0c;没想…

SwiftUI AR教程之如何使用 SwiftUI 按钮在 RealityKit 中切换前后摄像头(教程含源码)

iOS AR 开发快速指南 如果您正在为 iOS 构建增强现实体验,您可能希望让您的用户能够在前置(又称“自拍”或“正面”)摄像头和后置(又称“世界侧”)摄像头之间切换。这是有关如何将此功能添加到您的应用程序的基本教程。 基本设置 首先,让我们从 Xcode 中的 Augmented …

Nginx系列之反向代理过程

nginx通过proxy模块对上游服务使用http/https协议进行反向代理&#xff0c;下图是反向代理处理过程 在读取客户端发送的请求时&#xff0c;如果proxy_request_bufferringon,那么读取完整的包体后再发送给后端服务&#xff0c;如果 proxy_request_bufferringoff&#xff0c;则是…

DDL操作表-查询和DDL操作表-创建

DDL操作表-查询 1.C(Create):创建 2.R(Retrieve):查询 3.U(Update):修改 4.D(Delete):删除 R(Retrieve):查询 查询某个数据库中所有的表名称show tables;查询表结构desc 表名; DDL操作表-创建 C(Create):创建 1.语法:create table 表名(列名  数据类型1,列…