操作系统知识-存储管理+文件管理管理-嵌入式系统设计师备考笔记

0、前言

  本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。

本章的主要内容见下图:

1、存储管理(有计算题)

1.1分区存储

分区存储是指将存储介质分割成多个独立的存储区域,每个存储区域可以单独管理和使用。在存储管理中,分区存储是通过以下步骤实现的:

  1. 确定分区的大小和数量:根据需求确定每个分区的大小和数量,通常会考虑到数据的类型、访问频率、备份需求等因素。

  2. 创建分区:通过存储管理软件或操作系统的工具,将存储介质按照预先确定的大小和数量进行分区划分。

  3. 分配存储空间:为每个分区分配存储空间,并确定其访问权限和管理策略,如读写权限、备份策略等。

  4. 管理分区:对每个分区进行管理,包括监控存储空间的使用情况、定期清理无用数据、备份重要数据等操作。

  5. 提供访问接口:为用户或应用程序提供访问分区的接口,使其可以对存储空间进行读写操作。

通过以上步骤,分区存储可以实现对存储空间的有效管理和利用,提高数据的安全性和可靠性。

 

可变分区分配算法举例:

1.2页式存储 

页式存储是一种基于页面(Page)的存储管理技术,将存储介质划分成固定大小的页面(通常为4KB或8KB),并将数据按照页面的单位进行存储和管理。页式存储通常用于虚拟存储系统和操作系统中,其主要特点包括:

  1. 分页管理:将存储介质划分成大小固定的页面,每个页面都有唯一的地址。数据被分割成页面大小的块进行存储,便于管理和访问。

  2. 页面映射:通过页表(Page Table)将逻辑地址映射到物理地址,实现虚拟地址空间到物理地址空间的转换。页表记录了每个页面在物理地址空间中的位置。

  3. 页面置换:当物理内存不足时,需要进行页面置换(Page Replacement)操作,将一部分页面从内存中换出到磁盘上,以释放空间给新的页面。常用的页面置换算法包括最近最少使用(LRU)和先进先出(FIFO)等。

  4. 快速访问:由于页面大小固定,可以通过页表快速定位到存储数据的物理地址,提高数据访问的效率。

  5. 内存保护:通过页表可以实现内存保护,限制程序对其他进程或系统资源的访问。

页式存储可以提高存储管理的效率和灵活性,同时也有利于实现虚拟存储和内存保护等功能。然而,页式存储也会引入一定的开销,如页表维护和页面置换操作可能会增加系统的负担。

优点:利用率高,碎片小,分配及管理简单

缺点:增加了系统开销,可能产生抖动现象

1.3段式存储 

段式存储是一种存储管理技术,将存储空间划分成不同大小的段(Segment),每个段用于存储一组相关的数据或程序段。段式存储与页式存储相比,更注重数据和程序的逻辑结构,而不是物理地址的顺序。

在段式存储中,每个段都有自己的段号和段长度,可以存储不同类型的数据或程序段,如代码段、数据段、堆栈段等。段式存储的主要特点包括:

  1. 分段管理:将存储空间划分成多个段,每个段具有独立的段号和段长度。不同的段用于存储不同类型的数据或程序,使得数据和程序可以更灵活地组织和管理。

  2. 段映射:通过段表(Segment Table)将逻辑地址映射到物理地址,实现逻辑地址空间到物理地址空间的转换。段表记录了每个段在物理地址空间中的起始地址和长度。

  3. 动态增长:每个段的长度可以根据需要动态增长,适应不同大小的数据或程序段。

  4. 内存保护:通过段表可以实现内存保护,限制程序对其他段或系统资源的访问。

  5. 碎片问题:段式存储可能会导致内部碎片(Internal Fragmentation),即段长度不是页面大小的整数倍时,会浪费一部分存储空间。

段式存储适用于需要灵活管理数据和程序段的场景,如操作系统、数据库管理系统等。通过合理划分和管理段,可以提高存储管理的效率和灵活性。

优点:多道程序共享内存,各段程序修改互不影响

缺点:内存利用率低,内存碎片浪费大

 1.4段页式存储

段页式存储是将段式存储和页式存储结合起来的一种存储管理技术,旨在克服段式存储和页式存储各自的缺点,提高存储管理的效率和灵活性。在段页式存储中,存储空间被划分成多个段和多个页面,每个段包含多个页面,每个页面属于一个段。

段页式存储的主要特点包括:

  1. 分段管理:将存储空间划分成多个段,每个段用于存储一组相关的数据或程序段。不同的段可以有不同的长度和权限。

  2. 分页管理:每个段被划分成多个页面,每个页面具有固定大小。数据和程序按页面的单位进行存储和管理,便于页面置换和内存管理。

  3. 段页映射:通过段表和页表将逻辑地址映射到物理地址,实现逻辑地址空间到物理地址空间的转换。段表记录了每个段的基地址和长度,页表记录了每个页面在物理地址空间中的位置。

  4. 动态增长:每个段和页面的长度可以根据需要动态增长,适应不同大小的数据或程序段。

  5. 内存保护:通过段表和页表可以实现内存保护,限制程序对其他段或页面的访问。

段页式存储综合了段式存储和页式存储的优点,同时也克服了它们各自的缺点,提高了存储管理的效率和灵活性。段页式存储常用于现代操作系统和虚拟存储系统中,为应用程序提供高效的存储管理机制。

优点:空间浪费小、存储共享容易、存储保护容易、能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降

 1.5虚拟存储

  • 具有部分装入和部分对换功能,能从逻辑上对内容容量进行大幅度扩充,使用方便的一种存储器系统
  • 实际上是为扩大主存而采用的一种设计技巧
  • 虚拟存储器的容量与主存大小无关
  • 虚拟存储器的实现对用户来说是透明的

 实现方式:

  • 请求分页系统
  • 请求分段系统
  • 请求段页式系统

1.6磁盘结构及调度算法

2、文件管理

2.1文件组织结构

2.2空闲存储空间管理

 位示图法:直观表示存储空间是否被占用的方法,

位示图法是一种用于管理磁盘空间的技术,通过使用位图(Bitmap)来表示磁盘上每个数据块(或扇区)的使用情况。在位示图法中,每个数据块都对应位图中的一个位(通常用0或1表示),用于表示该数据块的使用状态。

位示图法的实现方式如下:

  1. 初始化位示图:在磁盘上创建一个位示图,位示图的每一位对应磁盘上一个数据块。初始状态下,所有位都是0,表示对应的数据块都是空闲的。

  2. 分配数据块:当需要存储数据时,系统会查找位示图中第一个为0的位,表示一个空闲的数据块。然后将该位设置为1,表示该数据块已被分配。

  3. 释放数据块:当数据块不再被使用时,系统会将对应的位设置为0,表示该数据块已被释放,可以重新被分配。

  4. 查询空闲数据块:系统可以通过扫描位示图找到所有为0的位,从而获取空闲的数据块列表。

  5. 碎片问题:位示图法可能会导致碎片问题,即数据块的空闲空间被分割成多个小块,难以有效利用。

位示图法是一种简单有效的磁盘空间管理技术,可以快速查询和分配数据块。然而,随着磁盘容量的增大,位示图的大小也会增加,可能会占用较多的存储空间。因此,在实际应用中,位示图法通常会与其他磁盘空间管理技术结合使用,以提高磁盘空间的利用率和管理效率。

例子见下图:

 块号有时候是从0开始的,如果没有规定默认从1开始。

3、设备管理

虚设备与SPOOLING技术

技术流程

 A,B,C,D共用一台打印机X,要进行资料打印时,很容易出现“打印机正在使
用!”如何处理该问题?

4、操作系统知识总结

本章着重考查操作系统基础知识,考查形式主要是概念区分以及部分计算题型,只出现在上午的选择题当中。复习时注意对于相关概念联系并区别记忆,固定题和计司型多做练习熟能生巧(计算要仔细哦~)。

4.1选择题常考

1、操作系统的作用
2、进程、程序、线程对比
3、进程的三态模型
4、PV操作
5、死锁条件、死锁预防、死锁避免

6、 存储管理的基本概念

7、页式/段式/段页式存储特点对比
8、磁盘相关概念
9、文件相关概念
10、1/0设备和I/0软件11、虚设备和假脱机技术

4.2计算题常考 

1、PV操作分析
2、PV与前趋图结合

3、死锁资源数计算
4、银行家算法
5、页式存储地址转换和页面置换
6、段式存储合法段地址判断

7、磁盘存取时间和优化存储
8、索引目录结构计算
9、树形目录结构(绝对路径和相对路径)
10、位示图计算

尾言

        本专栏我总结了大量的思维导图,但是因为思维导图太大与CSDN的排版不匹配,故我会把每篇博文绘制的思维导图上传到我的资源里,有需要的自取,我会设置为0积分下载的,创作不易还望各位大佬点赞支持一下谢谢

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

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

相关文章

【算法与数据结构】二叉树(前中后)序遍历

文章目录 📝前言🌠 创建简单二叉树🌉二叉树的三种遍历🌠前序🌉中序遍历 🌠后序遍历 🌠二叉树节点个数🌉二叉树节点个数注意点 🚩总结 📝前言 一棵二叉树是结…

6-181 统计无向图的连通分量

要求实现函数,能够统计并返回无向图(顶点数不超过100)的连通分量(极大连通子图)数,可增加自定义函数或借助STL(标准模板库)之queue(队列)。无向图采用邻接矩阵存储,输入的顶点从1开始编号,但顶点下标从0开始使用。 函数接口定义: int CountSubGraph(int mat[][N…

C++提高笔记(六)---STL函数对象、STL常用算法(遍历、查找)

1、STL-函数对象 1.1函数对象 1.1.1函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质:函数对象(仿函数)是一个类,不是一个…

linux常用指令

前言 大家好我是jiantaoyab,这篇文章给大家介绍Linux下常用的命令。 指令的本质也是Linux上的一些程序。 cd cd - 回到最近从哪来的路径 cd ~ 当前用户对应的工作目录(普通用户:/home/xx root用户:/root) cd / 去…

C语言经典面试题目(十九)

1、什么是C语言?简要介绍一下其历史和特点。 C语言是一种通用的高级计算机编程语言,最初由贝尔实验室的Dennis Ritchie在1972年至1973年间设计和实现。C语言被广泛应用于系统编程、应用程序开发、嵌入式系统和操作系统等领域。它具有高效、灵活、可移植…

【vscode】vscode重命名变量后多了很多空白行

这种情况,一般出现在重新安装 vscode 后出现。 原因大概率是语言服务器没设置好或设置对。 以 Python 为例,到设置里搜索 "python.languageServer",将 Python 的语言服务器设置为 Pylance 即可。

React全家桶及原理解析-lesson4-Redux

lesson4-react全家桶及原理解析.mov React全家桶及原理解析 React全家桶及原理解析 课堂⽬标资源起步Reducer 什么是reducer什么是reduceRedux 上⼿ 安装reduxredux上⼿检查点react-redux 异步代码抽取Redux拓展 redux原理 核⼼实现中间件实现redux-thunk原理react-redux原理 实…

AI和信号处理推荐书单

推荐AI书单 1、《动手学深度学习-pytorch版》 https://item.m.jd.com/product/10068173196371.html?utm_sourceiosapp&utm_mediumappshare&utm_campaignt_335139774&utm_termCopyURL&ad_odshare&gxRnAomTM2bWfQmswcp40mDrUkxA7sLkk&gxdRnAoymFZOTXe…

【数据可视化】Echarts官方文档及常用组件

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. Echarts官方文档介绍3. ECharts基础架构及常用术语3.1 ECharts的基础架构3.2 ECharts的常用术语3.2.1 ECharts的基本名词3.2.2 ECharts的图表名词 4. 直角坐标系下的网格及坐标轴4.1 直角坐标系下的网格4.2…

关于BFF

BFF(Backend For Frontend)是一种架构设计模式,用于解决多端(如Web、移动端等)共用一个后端服务时的问题。BFF的主要目标是将前端与后端的业务逻辑分离,使得前端可以根据自身的需求定制接口和数据&#xff…

C++的语法

可能需要用到存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等) 下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。 注意:不同系统会有所差异 #inc…

CentOS7 操作firewall防火墙

常用命令 开启关闭防火墙 systemctl start/status/stop/disable firewalld查看默认区域名称 $ firewall-cmd --get-default-zone public查看区域信息 firewall-cmd --get-active-zones查看指定接口所属区域 firewall-cmd --get-zone-of-interfaceeth0查看防火墙配置 # 查…

Qt Excel文件读写

QAxObject是Qt框架中用于与ActiveX控件和COM对象进行交互的类。它使得在Qt应用程序中嵌入和使用ActiveX控件,或者操作COM对象成为可能。通过QAxObject,你可以在Qt中方便地操作Excel、Word等Office应用程序,以及许多其他支持ActiveX或COM技术的…

AI人工智能小程序系统开发

开发AI人工智能小程序系统需要以下步骤: 1. 确定需求:了解客户对人工智能小程序的期望,并分析系统的实际应用场景。 2. 设计架构:选择合适的技术框架和人工智能算法,进行小程序系统架构的设计。 3. 数据采集和处理&…

诺视科技完成亿元Pre-A2轮融资,加速Micro-LED微显示芯片商业化落地

近日,Micro-LED微显示芯片研发商诺视科技(苏州)有限公司(以下简称“诺视科技”)宣布完成亿元Pre-A2轮融资,本轮融资由力合资本领投,老股东盛景嘉成、汕韩基金以及九合创投持续加码,这…

【漏洞复现】北京新网医讯技术有限公司云端客服管理系统存在SQL注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【Linux】cat vim 命令存在着什么区别?

Linux 中的 cat 命令和 vim 命令之间存在一些显著的区别! cat 命令 首先,cat命令主要用于连接并显示文件的内容。它的原含义是“连接(concatenate)”,可以将多个文件的内容连接起来,并输出到标准输出流中&…

python模块

模块导入方式 模块需要在使用前进行导入 语法:[from 模块名] import [ 模块 | 类 | 函数 | *] [ as 别名 ] * 代表全部将该模块全部导入 from 模块名 import 功能名 #导入时间模块中的sleep方法 from time import sleep 注意:from可以省略 直接…

python使用appium在指定的坐标位置点击

在Appium中,要在指定的坐标位置执行点击操作,你可以使用TouchAction类配合press和release方法。下面是一个简单的示例代码,展示了如何在指定的(x, y)坐标位置执行点击操作: from appium import webdriver from appium.webdriver.…

掘根宝典之C++正向迭代器和反向迭代器详解

简介 迭代器是一种用于遍历容器元素的对象。它提供了一种统一的访问方式,使程序员可以对容器中的元素进行逐个访问和操作,而不需要了解容器的内部实现细节。 C标准库里每个容器都定义了迭代器,这迭代器的名字就叫容器迭代器 迭代器的作用类…