「软件设计师」操作系统基本原理

操作系统概述

  1. 操作系统与计算机体系结构之间的关系

  2. 操作系统具备的管理职能
    1. 进程管理
      1. 进程的状态
      2. 前趋图
      3. pv操作
      4. 死锁问题
    2. 存储管理
      1. 段页式存储
      2. 页面置换算法
    3. 文件管理
      1. 索引文件
      2. 位示图
    4. 作业管理
    5. 设备管理
      1. 数据传输控制方式
    6. 微内核操作系统
      1. 虚设备与SPOOLING技术

进程管理

进程的状态

进程的同步与互斥

  1. 互斥:千军外马过独木桥
  2. 同步:速度有差异,在一定情况停下等待

PV操作

  1. 临界资源:诸程序间需要互斥方式对其进行共享的资源,如打印机、磁带机等
  2. 临界区:每个进程中访问临界资源的那段代码称为临界区
  3. 信息量:是一种特殊的变量

  • 解题技巧
    • 每一个箭头看成一个资源
    • 箭头的起点是V操作
    • 箭头的终点是P操作

死锁问题

  1. 如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁

假设有k个进程,每个进程需要n个资源
则不发生死锁所需要的最小资源为$k*(n-1)+1$

  1. 死锁的条件
    1. 互斥
    2. 保持和等待
    3. 不剥夺
    4. 环路等待
  2. 死锁的避免
    1. 有序的资源分配:资源利用率较低
    2. 银行家算法
      1. 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
      2. 进程可以分期请求资源,但请求的总数不能超过最大需求量
      3. 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配但总能使进程在有限的时间里得到资源

存储管理

分区存储组织
:某计算机系统的内存大小为128k,采用可变分区分配方式进行内存分配,现有作业4申请内存9k,几种不同的存储分配算法在分配中,会产生什么样的结果呢?

  1. 首次适应法:把即将执行的作业安排在第一个能够容纳它的空间

  2. 最佳适应法:把即将执行的作业安排在内存空间与它最接近的空间进行存放,如该例子中,作业4占据空间9k,通过该算法,计算机就将其存放在了空间为10的地址中;由于在每次存放作业以后内存空间剩余量极低,长期以后该算法会造成内存空间碎片化,降低内存地址的利用率

  3. 最差适应法:该算法能够解决内存空间碎片化的问题,如图所示:该算法优先将作业存放至内存空间最大的地址

  4. 循环首次适应法:该算法是将空闲的区域连成环状,将作业在环状区域内顺次进行分配(从第二个空闲区域开始分配)

页式存储

  1. 提出背景:为了解决碎片化的存储
  2. 概念:把用户程序分成等分大小的n个“页”(并将其编号),再在地址空间中以nk为基数划分等大小的块(同样将其编号,块号又称页帧号),运行用户程序时不再将整个程序进行运行,而是根据需要分批次将页调入到块中运行,而页和块之间的对应关系用页表来记录
  3. 优点:利用率高,碎片小,分配及管理简单
  4. 缺点:增加了系统开销(系统每次读取程序都需要先读取页表将其定位,再进行程序的读取);可能产生抖动现象
  5. 页号与页帧号的关系必须通过表来进行查询

  6. 逻辑地址和物理地址:要求物理地址,先把逻辑地址(逻辑地址由页号和页内地址组成)当中的页号和页内地址分开,要把它们分开,首先将页面大小写成二进制的形式,等于$2^n$;则说明一个页的页内地址有n位,而在逻辑地址中高于(从右往左)n位的部分就是页号,得到页号之后进行查表,得到相应的页帧号,而物理地址=页帧号+页内地址(该式子中的“+“是拼接,并非做加法)

段式存储

  1. 概念:按逻辑结构进行内存的划分,划分为n个段,每一个段的大小无要求,可以相等也可以不等,包括段号和段内地址,例如:可以将main主函数作为一个段,然后将第一个子函数作为一个段,然后将第二个子函数作为一个段……
  2. 段式存储按函数之间的逻辑对内存进行划分,大小差异较大,存在段表,段表的内容包括段号,段长以及基址
    1. 基址:就是该段在地址的起始位置
    2. 优点:多道程序共享内存,各段程序修改互不影响
    3. 缺点:内存利用率低,内存碎片浪费大

段页式存储

  1. 段页式存储是结合了段式和页式的一种存储组织,将内存先分段,再分页

    1. 优点:空间浪费小,存储共享容易,存储保护容易,能够动态连接
    2. 缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降(程序在执行时要先查段表,再查页表,使得系统资源消耗增加)

  2. 快表:快表是一块小容量的相联存储器,由高速缓存器(放在cache之中)组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号

页面置换算法

  1. 产生背景:当程序的需要与系统资源的供给发生矛盾时的一种解决方案,即将不用的页面淘汰掉,置换为需要执行的页面
  2. 页面置换算法的四种算法
    1. 最优算法:尚处于理论层面
    2. 随机算法:随机淘汰一个页面
    3. 先进先出算法(FIFO):即淘汰时按照之前执行的先后顺序进行淘汰,有可能产生“抖动”
      1. 抖动:把经常用到的页置换出去,要用的时候发现没有内存了,造成进程中断
    4. 最近最少使用算法(LRU):在保证最近使用的页面不被中断的情况下,将最少使用的页面淘汰,不会产生“抖动”

“没有使用快表”即表示每读一次程序的块,需要先在内存上面查表,才能读取相应的内存块,所以每一个块需要两次内存的访问,所以6个块(在页式存储结构中,每一个页面对应一个块)总共会产生12次对内存的访问;一个内存单元占据1b的内存,所有的指令(无论占据了几个页面)都只产生一次缺页中断,而操作数A和操作数B则各自产生两次缺页中断,因此总共产生了5次缺页中断

文件管理

索引文件结构

索引一般会有13个节点(默认情况下),从0开始编号,其中索引0到9这十个索引称为直接索引,直接对应物理盘块,每一个物理盘块都对应了索引文件的内容,而索引10则称为间接索引,里面只存储地址,如一个物理盘块的地址大小为4个字节,而一个物理盘块的大小为4k,则4k/4字节等于1024,代表着1024个物理盘块的地址,因此该索引内可以存储的文件大小为$4k1024$;该10号索引称之为一级间接索引;索引11则是二级间接索引,即索引的内容还是索引,再索引的内容才是物理盘块,二级简介索引存储的文件大小即为$4k1024*1024$;虽然分级越多存储的内容越多,但相应的,效率也会更低

文件和树型目录结构

  1. 绝对路径:是从盘符开始的路径
  2. 相对路径:是从当前路径开始的路径

:在该文件树型图中,若文件目录的位置是D1,若要求f2的路径,则绝对路径:/D1/W2/F2;相对路径:W2/F2

  1. 文件属性
    1. R:只读文件属性
    2. A:存档属性
    3. S:系统文件
    4. H:隐藏文件
  2. 文件名的组成
    1. 驱动器号
    2. 路径
    3. 主文件名
    4. 扩展名

空闲存储空间的管理

  1. 空闲区表法:用一个表来记录哪些地方是空闲的,以便将其管理起来
  2. 空闲链表法:把空闲区域都链起来,链成一条链表,然后需要空间分配的时候,从这条链表中划出一部分出来即可
  3. 位示图法:将所有存储区域分成无数个物理块,然后以1表示被占用,0表示空闲,将所有空间进行标记

:4195号是第4196个位,因此$4196/32=131.125$,因此物理块的使用情况应该在第132个字中描述

  1. 成组链接法

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

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

  1. 程序控制方式(程序查询方式):这种方式是最为低级的,也是CPU介入最多的一种机制,即整个数据的传输控制很多时候都要CPU的介入,此时外设会处于非常被动的位置,即不会主动的去返回信息,如是否完成等信息,而是由CPU主动发出查询指令,进而对信息进行查询
  2. 程序中断方式:大部分与程序控制方式相同,但相较于程序控制方式,增加了中断方式,主动性更强,即如果外设完成了数据的传输等操作,外设会发出中断指令,效率比程序控制方式更高
  3. DMA方式(直接存储器存取方式):有专门的DMA控制器,只要是外设和内存之间的数据交换过程,就由这个控制器进行管控,CPU只需要在开头的时候做一些介入,如初始化等操作
  4. 设备管理的五个层次
    1. 由上到下依次是:用户进程、与设备无关的系统软件、设备驱动程序、中断处理程序、硬件

SPOOLING技术

  1. 概念:例如:四个人通过远程手段准备使用一台打印机,而这台打印机在同一段时间内只能让一个用户使用,若一个用户正在使用该打印机,另一名用户试图使用该打印机时就会提示该打印机被占用,事实上这样做使得打印机的效率非常的低,而面对这个问题,采用了SPOOLING技术的打印机会进行如下操作:给打印机创建一个缓存区,每一个用户在打印时都会进入缓存区,而从缓存区到真正打印则需要挨个排队,即打印机在打印时不再排斥其他用户的打印操作,而是将其缓存起来,在将当前操作完成后立即进行第二个操作,这样做不仅使得用户的操作界面变得更为友好,也极大的提高了打印机的打印效率

微内核操作系统

  1. 概念:把内核做的更小具有许多好处与优势,如提高了可靠性,稳定性,安全性;因为操作系统作为核心的系统软件,如果操作系统出现故障,就会影响整个系统的运行,将内核做的更小就会降低故障的发生率

  2. 单体内核和微内核的区别及优缺点

  3. Linux系统的常用命令

    1. attrib:声明
    2. modify:修改
    3. chmod:修改文件权限
    4. change:改变

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

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

相关文章

【OrangePi Zero2 智能家居】智能家居项目的软件实现

一、项目整体设计 二、项目代码的前期准备 三、实现语音监听接口 四、实现socket监听接口 五、实现烟雾报警监听接口 六、实现设备节点代码 七、实现接收消息处理接口 一、项目整体设计 整体的软件框架大致如下: 整个项目开启4个监听线程, 分别是&…

奇异值分解(SVD)

对于一个方阵而言,采用的是特征分解,参考《矩阵特征值分解(EVD)-CSDN博客》

高程 | 数据的共享与保护(c++)

文章目录 📚标识符的作用域与可见性🐇作用域🐇可见性 📚对象的生存期🐇静态生存期🐇动态生存期 📚类的静态成员🐇静态数据成员🐇静态函数成员 📚类的友元&…

你的电脑关机吗

目录 程序员为什么不喜欢关电脑? 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑? 大部分人都会选择将电脑进行关机操作。其实这不难理解,毕竟人类都需要…

MyBatis篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、MyBatis 实现一对一有几种方式?具体怎么操作的?二、MyBatis 实现一对多有几种方式,怎么操作的?三、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?四、Mybatis 的一级、二级缓存前言 前些天发现了一个巨牛的人工智能…

【数据库_MySQL】MySQL彻底卸载

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 卸载 要是你的…

【机器学习案例3】从科学论文图片中提取标题、作者和摘要【含源码】

在这个项目中,我的目标是从科学论文图片中提取某些部分(标题、作者和摘要)。预期提取部分是科学论文中常见的部分,例如标题、摘要和作者。输入与最终结果。我的输入是将第一页纸转换成图像。最终结果是一个 txt 文件,其中包含标题、作者和摘要部分,如下图1和图2所示。我将…

SpringBoot整合第三方技术-缓存

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

每日OJ题_递归①_力扣面试题 08.06. 汉诺塔问题

目录 递归算法原理 力扣面试题 08.06. 汉诺塔问题 解析代码 递归算法原理 递归算法个人经验:给定一个任务,相信递归函数一定能解决这个任务,根据任务所需的东西,给出函数参数,然后实现函数内容,最后找出…

linux内核原理--用户态线性地址空间,mmap,malloc,缺页异常

1.概述 前面我们介绍了内核态线性地址空间划分,及在内核态运行时,如何利用伙伴系统完成连续可用物理页框申请和释放。如何利用小块内存分配器实现高效的动态内存分配和释放。如何利用vmalloc,vfree完成线性地址连续但物理地址不连续的多个页框…

什么是 Flet?

什么是 Flet? Flet 是一个框架,允许使用您喜欢的语言构建交互式多用户 Web、桌面和移动应用程序,而无需前端开发经验。 您可以使用基于 Google 的 Flutter 的 Flet 控件为程序构建 UI。Flet 不只是“包装”Flutter 小部件,而是…

上位机图像处理和嵌入式模块部署(上位机主要功能)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自…

使用 Chainlit, Langchain 及 Elasticsearch 轻松实现对 PDF 文件的查询

在我之前的文章 “Elasticsearch:与多个 PDF 聊天 | LangChain Python 应用教程(免费 LLMs 和嵌入)” 里,我详述如何使用 Streamlit,Langchain, Elasticsearch 及 OpenAI 来针对 PDF 进行聊天。在今天的文章中&#xf…

[缓存] - 2.分布式缓存重磅中间件 Redis

1. 高性能 尽量使用短key 不要存过大的数据 避免使用keys *:使用SCAN,来代替 在存到Redis之前压缩数据 设置 key 有效期 选择回收策略(maxmemory-policy) 减少不必要的连接 限制redis的内存大小(防止swap,OOM) slowLog …

Swift Combine 网络受限时从备用 URL 请求数据 从入门到精通十四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

数据结构.图的存储

一、邻接矩阵法 二、邻列表法 三、十字链表法

例39:使用List控件

建立一个EXE工程,在窗体上放一个文本框,一个列表框和三个按钮输入如下的代码: Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)List1.AddItem(Text1.Text)End SubSub Form1_Command2_BN_Clicked(hWndForm As hWnd, h…

【python之美】减少人工成本之批量拿取文件名保存_4

获取文件名保存 准备工作: 上代码: import ospath "C:\\Users\\Administrator\\Desktop\\text\\" file_names os.listdir(path) print(file_names)i 1 for file_name in file_names:name file_name.split(_)[0]print(name)new_name name "_修改后第&qu…

一周学会Django5 Python Web开发-项目配置settings.py文件-基本配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…

Linux第54步_根文件系统第1步_编译busybox并安装_然后添加“根文件系统”的库

学习编译busybox,并安装,然后添加“根文件系统”的库。有人说busybox构建根文件系统,只适合学习,不适合做项目。 1、了解ubuntu的根文件系统 根文件系统的目录名为“/”,就是一个斜杠。 1)、输入“cd /回车”&…