操作系统学习笔记(3.内存管理 4.文件管理)

第三章 内存管理

内存的基础知识

在这里插入图片描述
什么是内存,有何作用
在这里插入图片描述
几个常用的数量单位
在这里插入图片描述
指令工作原理
在这里插入图片描述
在这里插入图片描述
装入的三种方式–绝对装入

  • 灵活性最差,换台电脑可能就不行了

在这里插入图片描述
装入的三种方式–可重定位装入

  • 运行期间不能再移动程序,也不能再申请空间

在这里插入图片描述
装入的三种方式–动态运行时装入
在这里插入图片描述
在这里插入图片描述
从写程序到程序运行

  • 链接的定义

在这里插入图片描述
链接的三种方式
在这里插入图片描述
知识点小结

  • 这里讨论的关于逻辑地址和物理地址,指的是,指令中包含操作码和操作参数,操作参数里的地址问题,不是指令本身的地址
  • 三种装入方式和三种链接方式,别搞混了;
    • 装入方式是关于逻辑地址转成物理地址的
    • 链接方式是将编译后的若干个目标模块和所需库函数链接在一起

在这里插入图片描述

内存管理的概念

操作系统如何对内存进行管理
在这里插入图片描述
内存空间的分配与回收

  • 知识点比较多,后面再详细探讨

在这里插入图片描述
内存空间的扩展

  • 虚拟技术,把物理上很小的空间扩展为逻辑上很大的空间

在这里插入图片描述
地址转换

  • 逻辑地址转为物理地址,即三种装入方式

在这里插入图片描述
内存保护

  • 让各个进程只能访问自己的内存空间
  • 两个方案

在这里插入图片描述
知识点小结
在这里插入图片描述

覆盖与交换

在这里插入图片描述
覆盖技术
在这里插入图片描述
覆盖技术举例

  • 这里举例的前提是,程序是依次调入执行的
  • 缺点:对用户不透明,增加编程负担

在这里插入图片描述
交换技术

  • 第二章讲的处理机的中级调度就是实现交换技术
  • 注意:换出到外存的是进程运行的相关程序和数据,但是进程的PCB仍然保留在内存,便于把进程换入内存

在这里插入图片描述
思考问题

  • 磁盘存储空间:对换区,文件区
  • 对换区追求换入换出速度,I/O速度比文件区更快
  • 文件区追求存储空间利用率,采用离散分配方式管理空间
  • 换出的数据主要放在对换区

在这里插入图片描述
知识点小结

  • 主要出选择题

在这里插入图片描述

连续分配管理方式

在这里插入图片描述
单一连续分配

  • 内存中只能有一道用户程序,独占,不可以多道用户程序
  • 不一定采取内存保护,因为只有一道用户程序
  • 无外部碎片,有内部碎片

在这里插入图片描述
固定分区分配

  • 将用户空间划分为若干个固定大小的分区,每个分区装入一道作业
  • 分区大小相等,分区大小不等

在这里插入图片描述
分区说明表

  • 操作系统用来记录各个分区的情况,是一个数据结构(链表或数组)
  • 无外部碎片,有内部碎片

在这里插入图片描述
动态分区分配

  • 进程装入内存时,才会根据进程大小动态的建立分区,因此分区大小和数目是可变的
  • 思考问题

在这里插入图片描述
动态分区分配–用什么数据结构记录分配情况

  • 空闲分区表,空闲分区链

在这里插入图片描述
动态分区分配–如何选择分区

  • 采用动态分区分配算法,下一节再展开

在这里插入图片描述
动态分区分配–如何进行分区的分配与回收

  • 分配:分完了,还有剩余空间,则修改分区表;没有剩余了,则去掉这个空间分区记录

在这里插入图片描述
动态分区分配–如何进行分区的分配与回收

  • 回收:回收区有相邻的空闲分区,则进行合并,修改表记录;没有相邻空闲分区,增加一个表记录
  • 各个表项的排序规则需要看具体的动态分区分配算法来确定

在这里插入图片描述
外部碎片,内部碎片

  • 某一进程需要一块大的连续内存空间,但这些外部碎片不满足需求,但这些外部碎片的总和满足
  • 采用紧凑技术解决外部碎片
  • 紧凑技术正好适合搭配装入技术中的动态重定位技术,因为程序可能会更换在内存中的位置
  • 紧凑之后需要修改各个进程的起始地址,进程起始地址保存在PCB中,

在这里插入图片描述
知识点小结

  • 外部碎片,内部碎片经常出选择题
  • 紧凑技术也出过选择题,回收内存分区的四种情况也出过真题

在这里插入图片描述

动态分区分配算法

在这里插入图片描述
首次适应算法

  • 空闲分区地址按照递增的顺序排列,保存在空闲分区表或空闲分区链
  • 分配或者回收空闲分区后,在修改对应的表或链

在这里插入图片描述
最佳适应算法

  • 空闲分区按照容量递增的顺序链接,每次分配内存时按照顺序查找空闲分区链或表
  • 如果分配会或回收空闲分区之后,还要修改表项或者链中记录,如果不在满足容量大小递增的顺序了,还要调整空间分区表或链的排列顺序,重新回到容量递增顺序
  • 缺点:会产生很多的外部碎片

在这里插入图片描述
最坏适应算法

  • 优先使用最大的连续空闲区
  • 空闲分区按照容量递减的顺序链接
  • 解决了最佳算法的隋品太多
  • 缺点:消耗了很多大的空闲分区,再有大进程来,就没有内存分区可用了,

在这里插入图片描述
临近适应算法

  • 每次从上一次查找结束的位置,开始检索
  • 可以将空闲分区地址排成一个循环链表,按照地址递增的顺序
  • 无需对链表进行重新排列,因为是按地址递增排列的,算法开销比较小;比最佳和最坏的算法开销小
  • 首次适应算法也有问题,每次都要从头查找,而临近算法不用从头查
  • 临近适应算法也导致了高地址部分的大分区更可能被使用,并划分为小分区,导致最后无大分区可用,
  • 四种算法,首次适应算法效果最好

在这里插入图片描述
知识点小结

  • 很容易出题
  • 理解算法思想,各个算法的优缺点;开销大是因为可能要排序
  • 邻近适应算法略难理解,再细品一下

在这里插入图片描述

基本分页存储管理的概念

本节是高频考点,也是难点

针对的是非连续分配管理方式
在这里插入图片描述
分页存储

  • 内存空间分成一个个大小相等的页框/页帧/内存块/物理块/物理页面
  • 一个进程的逻辑地址也分成页/页面,页的大小与内存块是一样的
  • 操作系统将进程的一个个页存放在内存的一个个内存块中,因此进程的页面与内存的内存块有一一对应关系
  • 进程的页可以不用连续存放到内存中
  • 注意区分概念:
    • 进程的逻辑地址划分:页,页面
    • 内存的物理地址划分:页框,页帧,内存块,物理块,物理页面

在这里插入图片描述
重要的数据结构–页表

  • 用于将逻辑地址的页与物理地址的内存块进行一一对应
  • 页表通常存放在PCB中

在这里插入图片描述
每个页表项占多少字节(先看块号)

  • 例题中,块号至少有20位,我们的计算机一般以字节为单位,因此就是至少3字节,24位
  • 重要考点,经常让我们通过内存块数量求出块号至少占多少字节

在这里插入图片描述
页号占多少字节

  • 类比数组,页表项是连续存放的,块号是固定的位数
  • 因此页号是隐含的,只需知道页表项的起始地址即可推算任意页号的存放地址

在这里插入图片描述
因此每个页表项的字节数就是块号的字节数
在这里插入图片描述
如何实现地址转换(复习连续存放时)

  • 逻辑地址+偏移量

在这里插入图片描述
如何实现地址转换(分页存放)

  • 进程的各个页面时离散存放的,但页面内部是连续存放的

在这里插入图片描述
举例
在这里插入图片描述
页面大小最好是2的整数次幂

  • 逻辑地址刚好可以划分为两部分,页号+页内偏移量
  • 页面大小=内存块大小
  • 物理地址也可以划分两部分,块号+块内偏移量(页内偏移量)
  • 如果页面大小是2的整数次幂,可以这样快速算出,也能提高计算机效率;如果不满足2的整数次幂,只能用土办法

在这里插入图片描述
在这里插入图片描述
为什么页面大小取2的整数次幂
在这里插入图片描述
逻辑地址结构
在这里插入图片描述
知识点小结
在这里插入图片描述

基地址变换机构

在这里插入图片描述
基本地址变换机构

  • 程序未执行时,页表起始地址和页表长度放在PCB中
  • 进程被调度时,操作系统内核将他们存放到页表寄存器中PTR

在这里插入图片描述
基地址变换过程

  • 进程切换时,内核程序PCB中取出必要信息,恢复进程数据,
  • 比如把页表起始地址和页表长度放到PTR中,把下一条指令的逻辑地址放到程序计数器PC中
  • 因此我们要把下一条指令的逻辑地址转为实际的物理地址
  • 考试经常出题,给出逻辑地址,页表,计算求物理地址

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

  • 理解也是管理中地址是一维的
  • 初学者经常忘记对页号的越界检查

在这里插入图片描述
对页表项大小的进一步探讨

  • 页表项也存放在内存中,也要面对内存块大小的影响
  • 本例中,开始用三个字节编址内存块号,因此一个页表项占三字节,因此页表项在一个内存块中存放最后会有剩余碎片的
  • 这不利于页表项的查询,因此用四个字节编址内存块号,即一个页表项占四字节,刚好在内存块中可以存满(考试一般不考,了解即可)
  • 做题时,我们依然按三字节这个思路求解,四字节的思路是实际应用的思路
  • 进程的页表也是装在连续的内存块中的

在这里插入图片描述

知识点小结

  • 本节十分重要,经常作为大题,小题考察
  • 地址变换过程最重要,掌握过程,熟练手算过程
  • 本节中介绍的基本地址变换方式一共访问了两次内存

在这里插入图片描述

具有快表的地址变换机构

在这里插入图片描述
什么是快表

  • 联想寄存器,TLB,是高速缓存,专门存放最近访问的页表项副本,不是内存,
  • 内存中的页表常称为慢表
  • CPU访问缓存的速度比内存快得多

在这里插入图片描述

能否把整个页表都放在TLB中
在这里插入图片描述
快表的作用

  • 快表是一个专门的硬件,当进程切换的时候,快表也会清空
  • 查询过程
    • 拿到逻辑地址,先检查是否越界
    • 根据页号查快表是否可以命中,如果命中直接内存块好+页内偏移=物理地址,访问内存(一次访存)
    • 如果快表不命中,访问慢表(一次访存),查询内存块号,将最近使用过的页表项存入快表;然后内存块好+页内偏移=物理地址,访问内存(二次访存)
  • 快表存放的是页表中的一部分

在这里插入图片描述
在这里插入图片描述
快表慢表同时查找

  • 做题时需要注意细节,究竟是快表慢表同时查找,还是先查快表再查慢表

在这里插入图片描述
局部性原理

  • 基于局部性原理,我们把访问过的慢表的页表项存到快表,下次需要访问的逻辑地址有很大几率还在原来的这个页表里
  • 因此这个页号的页表项存在快表里,有大概率会被命中

在这里插入图片描述
知识点小结

  • 理解TLB与普通Cache的区别

在这里插入图片描述

两级页表

在这里插入图片描述
单级页表存在的问题

  • 不要忘记,页表项中只保存了内存块好,页号是隐含的,因此这要求页表项必须是连续存放的
  • 如果把图中的2的20次方的页表项,一个页表项4B,需要2的10次方个页框(内存块)连续存放这些页表项,显然很吃力
  • 本来设计内存块就是为了离散存放数据,结果存放页表项需要这么多连续的页框(内存块),丧失了离散存储的优点
  • 局部性原理,没必要整个页表常驻内存

在这里插入图片描述
如何解决单级页表的问题

  • 之前用分页的方式解决进程数据的连续存放问题
  • 同样的思路,用分页的方式解决页表项连续存放的问题,给页表项分组,

在这里插入图片描述
两级页表的原理,地址结构

  • 给页表项分组,每个分组刚好装满一个页框(内存块),每个分组就是一个小页表
  • 再准备一个顶级页表,里面的每个页表项存放的就是,小页表号对应的页框(内存块)号
  • 个人理解:需要注意的是,不管是上层表中的页表项里的小页表号,还是下层表中的页表项的页号,都是隐含的,因为是顺序存储。其实里面存的只有内存块号
  • 对应的,将原来的页号编址,重新划分为两部分,一级页号(小页表号),二级页号(小页表内的页号)

在这里插入图片描述
在这里插入图片描述
如何实现地址变换

  • 图中为二级页表
  • 1.根据逻辑地址一级页号查一级表(一次访存),得到内存块号(换成物理地址存的就是指定的二级表),表中内容给下一级查
  • 2.根据逻辑地址中二级页号查二级表(二次访存),得到内存块号
  • 3.内存块号+页内偏移=物理地址,找到指定数据(三次访存)

在这里插入图片描述
没必要让整个页表常驻内存

  • 需要访问页面时才把页面调入内存,虚拟存储技术
  • 页表项增加一个标志位,表示该页面是否已经调入内存
  • 如果要放的页面不在内存,则产生内中断,然后将目标页面从外存调入内存,后面详细介绍

在这里插入图片描述
需要注意细节

  • 若采用多级页表机制,则各级页表的大小不能超过一个页面,如果超出,就再分出层级
  • 比如题中的逻辑地址页号有28位
  • 经过计算,每个页面可以放2的10次方个页表项,因此每一个层级最多为10位编址
  • 28位的页号拆分为8+10+10
  • 这里很容易作为考点考察
  • 假设没有快表机构,n级页表的访存次数为n+1,其中前n次查表,最后一次访问真正的数据
  • 因此多级页表提高了内存空间的利用率,但是访存次数更多,速度降低

在这里插入图片描述
知识点小结

  • 术语:408中最长用页目录这个术语

在这里插入图片描述

基本分段存储管理方式

在这里插入图片描述
分段
在这里插入图片描述
分段系统的逻辑地址
在这里插入图片描述
段表

  • 记录各个段的存放位置,类似于页表
  • 每一条表项称为段表项
  • 页表项没有记录页长,因为都是定长;段表项有段长,因为每个段长度不等;
  • 基址表示几号端在内存中的起始地址
  • 整个段表项是定长的,因此段号也是隐含的,段表中不需要记录段号
  • 如何确定一个段表项的位数,看图中解释

在这里插入图片描述
地址变换

  • 过程与页表系统地址的转换大致相同
  • 段表系统需要在第四步,检查段内地址是否超过段长,因为段长不是定长,这是段表系统与页表系统的主要区别
  • 分页系统不需要对页内偏移地址检查是否超过最大长度,分页最大长度都是固定的

在这里插入图片描述
在这里插入图片描述
分段和分页管理的对比

  • 选择题常考,一维,二维
  • 分段比分页更容易实现信息的共享和保护

在这里插入图片描述
分段比分页更容易实现信息的共享和保护
在这里插入图片描述
在这里插入图片描述
分段和分页管理的访存次数

  • 与单页表系统的访存次数一样,都是两次
  • 分段系统也可以引入快表机构

在这里插入图片描述
知识点小结

  • 分页与分段管理的对比容易出题

在这里插入图片描述

段页式管理方式

在这里插入图片描述
分页,分段的优缺点分析
在这里插入图片描述
分段+分页=段页式管理

  • 先分段,再分页

在这里插入图片描述
段页式管理的逻辑地址结构

  • 分段对用户可见,分页对用户不可见
  • 因此,段页式管理的地址结构是二维的。对用户而言,像分段管理一样提供段号和段内地址信息即可。

在这里插入图片描述
段表,页表

  • 段表中每个段表项是长度相同的
  • 根据段号,查对应的段表项,段表项里记录了这个段对应的页表在哪个内存块上
  • 根据上面的内存块号,找到某一段对应的页表
  • 根据页表中也页号,找到对应的页表项,某一段某一页在哪个内存块上,
  • 内存块号+页内偏移=物理地址
  • 因此,一个进程有一个段表,段表里有几个段表项,就会对应几个页表

在这里插入图片描述
段页式管理的地址转换过程

  • 两次检查
    • 第一次越界检查:段号是否超过段表寄存器中的段表长度
    • 第二次越界检查:页号是否超过段表项的页表长度
  • 三次访存
    • 第一次,访问段表
    • 第二次,访问某一段对应的页表
    • 第三次,访问最终目标的内存单元
  • 可以引入快表机构,用段号和页号作为查询快表的关键字,如果命中,仅需一次访存

在这里插入图片描述
知识点小结
在这里插入图片描述

虚拟内存的基本概念

在这里插入图片描述
虚拟内存技术是基于高速缓存技术的发展
在这里插入图片描述
传统存储管理方式的特征,缺点

  • 一次性,驻留性
  • 用虚拟内存技术解决,虚拟内存技术基于局部性原理提出的

在这里插入图片描述
局部性原理
在这里插入图片描述
虚拟内存的定义和特征

  • 多次性和对换性,刚好对应了传统方案的一次性和驻留性

在这里插入图片描述
如何实现虚拟内存技术

  • 虚拟内存技术建立在离散分配基础上
  • 后面小结采用请求分页存储管理进行说明

在这里插入图片描述
知识点小结
在这里插入图片描述

请求分页管理方式

在这里插入图片描述
页表机制

  • 请求分页的页表比基本分页的页表多了几个字段
  • 个人理解:从这几个增加的字段可以推测,分页存储的页表应该是包含了当前进程所需要的全部页表项

在这里插入图片描述
缺页中断机构

  • 页面不在内存,缺页中断,进程阻塞,调页完成,唤醒进程
  • 内存有空闲块,为进程分配空闲块,装入页面到内存块,修改页表项
  • 内存没有空闲块,页面置换算法淘汰页面,如果被淘汰的页面修改过,则将页面写回外存,未被修改,不用写回外存,被淘汰的页面的页表项也要修改
  • 个人理解:从图中可以看出,如果页面不在内存,则页表中对应的页表项只有外存地址有数据,其他字段都是清空的

在这里插入图片描述
缺页中断机构

  • 缺页中断属于内中断,故障
  • 有了缺页中断才能实现请求调页

在这里插入图片描述
地址变换机构

  • 比基本分页存储管理多做了一些事情
    • 1.查找页面时,需要对页面是否在内存进行判断(看页表项状态位)
    • 2.需要调页,但是没有空闲内存块,需要页面置换,换出页面,腾出空间
    • 3.页面调入,调出,被访问,都需要修改对应页表项

在这里插入图片描述
地址变换过程

  • 同样检查页号是否越界,查快表是否命中
  • 查慢表的时候,如果页面不在内存,则缺页中断,等等;当然也要根据情况的不同,对页表项进行修改
  • 关于快表
    • 进程的页表项应该是完整的,包含了所需的全部页表项
    • 快表中的包含的是页表项中的一部分
    • 如果页面被调出内存,那么快表中的快表项也应该被删除,(都调出了,意味着近期可能不需要了)
    • 如果快表项被删除,也要修改对应页表项,

在这里插入图片描述
王道书上的插图

  • 红框,补充细节

在这里插入图片描述
知识点小结

  • 中断在理解,不需要死记硬别
  • 重点关注与基本分页不同的地方

在这里插入图片描述

页面置换算法

在这里插入图片描述
最佳置换算法

  • 举例说明
    • 如图,箭头所指,需要访问3页面,此时内存块有201页面,因此需要置换
    • 内存块中的已有的201,其中0和2接下来都会访问,只有1是距离最远将要访问的,因此换1
  • 可以保证最低缺页率,但是是理想化的,因为操作系统无法预判页面访问序列,实际应用无法实现

在这里插入图片描述
先进先出置换算法

  • 按照顺序给调入内存的页面排成一个队列,换出页面时,选队头换出;队列的最大长度取决于系统为进程分配了多少内存块
  • 举例说明
    • 如图,箭头将要访问0页面,此时队列内存块有321页面,队列为3-2-1,把队头3换成0号页面,同时调整队列,3出队,0入队

在这里插入图片描述
先进先出置换算法问题

  • 存在贝拉迪异常,只有先进先出算法才会产生贝拉迪异常
  • 实现简单,但是,先进入的页面也可能被经常访问,因此,算法性能最差

在这里插入图片描述
最近最久未使用置换算法

  • 需要检查页表项的访问字段,可以反映最近多久没有被使用
  • 举例说明(手算思路)
    • 如图,箭头所指,访问3号页面,内存块中没有,需要置换
    • 此时的内存块为1872,从3往前推,812分别出现了,因此相当于7是最近最久没有使用的,因此,用3号页面置换7号页面
  • 性能最接近最佳置换算法的,但是需要硬件支持,实现困难,开销大

在这里插入图片描述
时钟置换算法

  • 性能和开销比较均衡的算法,又称为最近未用算法
  • 需要检查页表项中的访问为,1表示最近被访问过,0表示最近没有别访问过
  • 内存中的页面通过链接指针形成一个循环队列,需要置换时就循环扫描检查
  • 遇到访问位为1,就变为0,扫描下一个;遇到为0的,就置换这个页面
  • 如果所有页面访问都是1,就是都变为0,在扫描一轮,遇到0则置换
  • 简单时钟算法举例
    • 如图,需要访问6,此时队列中的所有页面访问为都为1,
    • 全部变为0,再扫描,遇到1号页为0,则6号页置换1号页,同时指针指向下一个页面(以备需要置换的时候继续扫)
    • 6号后面的3和4内存块里都有,不需要置换,但是被访问了,访问位需要变为1
    • 访问最后的7号时,需要继续扫描并置换,3和4的访问位为1,因此扫描过以后变为0
    • 扫描到2号页时,访问位为0,7号替换2号页,同时7号页标记为访问1,指针指向下一个(5号页)

在这里插入图片描述
改进型的时钟置换算法

  • 除了考虑最近是否被访问过,还要考虑页面是否被修改过,需要访问位,修改位
  • 被修改过,以为这淘汰时,要执行I/O写回外存,增加系统开销
  • 为了提高性能,其他条件相同时,优先淘汰没有被修改的页面
  • 算法规则
    • 访问位为0是优先级最高的,其次是修改位为0,
    • 仔细看图中的每轮扫描,仔细阅读,不难理解,四轮足以找到可以置换的页面

在这里插入图片描述
知识点小结

  • 重要知识点,理解算法规则
  • 出题时,给序列,能手算模拟算法过程;各个算法的优缺点考选择题

在这里插入图片描述

页面分配策略

在这里插入图片描述
页面分配,置换策略

  • 驻留集的定义,大小的选取
  • 局部置换,全局置换
  • 全局置换和固定分配不可能同时存在,全局置换意味着所有进程的页面都可能被置换,则进程的物理块数发生改变,也就不可能固定分配了

在这里插入图片描述
三种组合

  • 第一种,不好把握进程分配多少物理块
  • 第二种,只要缺页,进程就会获得新的物理块,可能是操作系统给的空闲的,也可能是抢来的,但是会导致一个进程物理块数增加,另一个进程物理块数减少,也不太合理
  • 第三种,比较合理,只能置换自己的物理块,而且可以根据缺页率,动态调整物理块数

在这里插入图片描述
何时调入页面

  • 预调页策略,用于进程首次调入,运行前就调入,成功率不高,不好预测
  • 请求调页策略,我们之前一直学的就是这个,运行时调入,进程运行期间发现缺页则调入,一次只能调一页,I/O开销大
  • 实际中,二者经常结合使用

在这里插入图片描述
从何处调入页面

  • 外存分,对换区,文件区
  • 对换方案:对换区足够时,对换区空间不足时,

在这里插入图片描述
抖动(颠簸现象)

  • 刚换入的马上要换出,刚换出的马上要换入,
  • 原因在于分配给进程的物理块数量不够

在这里插入图片描述
工作集

  • 区分工作集和驻留集的概念
  • 操作系统根据窗口尺寸,算出工作集,根据当前访问的页面往前画出窗口大小个访问的页面
  • 工作集大小可能小于窗口,因为一个窗口可能由页面被重复访问,局部性越好,工作集就会比窗口小的更多
  • 驻留集大小一般不能小于工作集,否则导致进程运行频繁缺页,产生抖动

在这里插入图片描述
知识点小结

  • 系统为某进程分配了n个物理块,也可以表述为某进程的驻留集大小为n
  • 三种分配置换策略真题考察过,如果大题中给出某一个分配置换策略,要知道背后的隐含信息
  • 主要以选择题考察为主

在这里插入图片描述

内存映射文件

在这里插入图片描述
在这里插入图片描述
传统的而文件访问方式

  • 文件分成多个部分,保存在各个磁盘块上
  • 程序员需要使用系统调用,打开文件,指定读写指针移到哪个位置,读或者写
  • 需要读的数据会被读入内存,接下来,读或者写,如果是写指令,这个块数据会被写回磁盘块
  • 这样的操作很麻烦

在这里插入图片描述
内存映射文件(方便程序员访问)

  • 系统调用打开文件
  • mmap系统调用,将文件映射到进程的虚拟地址空间,给程序员返回一个 虚拟地址空间里对应的起始地址
  • 接下来用访问内存的方式,访问文件数据,
  • 期初,操作系统只是建立了文件数据和内存的映射关系,数据并没有读入到内存
  • 当需要虚拟地址访问某一部分数据时,操作系统发现没有数据,就会出现缺页异常,操作系统自动将数据读入内存
  • 程序员无需执行前面的read和write指令
  • 如果程序员对虚拟地址空间里的文件修改,关闭文件时,操作系统自动将被修改的数据写回磁盘

在这里插入图片描述

内存映射文件(方便多个进程共享同一文件)

  • 多个进程想要访问同一个文件,操作系统把这些进程的虚拟地址映射到同一个物理地址上,(其实就是修改页表)
  • 相当于两个进程共享同一个文件数据

在这里插入图片描述
知识点小结
在这里插入图片描述

第四章 文件管理

初识文件管理

在这里插入图片描述
文件属性

  • 文件名:方便用户找,同一目录不能文件重名
  • 标识符:系统内文件的唯一标识,对用户来说无可读性
  • 类型:指明类型,操作系统可以根据文件类型设置默认的打开方式
  • 位置:文件存放路径(用户使用),外存中的地址(操作系统使用)
  • 大小:文件大小
  • 创建时间,上次修改时间,文件所有者信息
  • 保护信息:

在这里插入图片描述
文件内部的数据怎样组织起来

  • 无结构文件,有结构文件

在这里插入图片描述
在这里插入图片描述
文件之间怎样组织起来
在这里插入图片描述
操作系统向上层提供哪些功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上往下看,文件如何存放在外存

  • 外存由一个个存储单元组成,一个存储单元对应一个物理地址
  • 外存也分磁盘块,磁盘块大小一般为2的整数次幂
  • 文件的逻辑地址也分成逻辑块号+块内地址
  • 操作系统以块为单位分配存储空间

在这里插入图片描述
在这里插入图片描述
其他需要由操作系统实现的文件管理功能
在这里插入图片描述
知识点小结
在这里插入图片描述

文件的逻辑结构

在这里插入图片描述
无结构文件
在这里插入图片描述
有结构文件

  • 又称记录式文件
  • 可以有数据项作为关键字
  • 每条记录有若干个数据项
  • 定长记录,可变长记录;

在这里插入图片描述
顺序文件

  • 顺序文件相当于线性表,顺序存储相当于顺序表,链式存储相当于链表

在这里插入图片描述
顺序文件的串结构增删相对简单些,没有关键字和顺序有关,只需把新增记录插到末尾即可
在这里插入图片描述
索引文件

  • 顺序文件要想实现随机存取,必须采用顺序存储,定长记录,不太方便
  • 索引文件解决了问题,索引表的记录是定长的,索引表可以实现随机存取,找到索引记录,再找对应的物理存放位置
  • 一个文件可以根据不同的数据项建立多个索引表

在这里插入图片描述
索引顺序文件

  • 索引文件一条记录对应一个索引记录,太浪费空间
  • 索引顺序文件,将逻辑文件归类,索引表中只记录一个分组的地址信息
  • 索引顺序文件的索引表中的索引项也不需要按关键字排列,方便增删操作
  • 相当于分两次查找,索引表查找一次,逻辑文件的某一分组中查找一次
  • 索引文件中的索引表,相当于一个定长的串结构的顺序文件

在这里插入图片描述
索引顺序文件检索举例
在这里插入图片描述
多级索引顺序文件

  • 如果索引表记录仍然很多,可以对索引表记录再分组提取更高一级索引表,原理类似

在这里插入图片描述
知识点小结
在这里插入图片描述

文件目录

在这里插入图片描述
在这里插入图片描述
文件控制块

  • 打开并访问目录就是在访问目录文件
  • 打开当前目录下的文件或目录就是访问对应的文件或目录文件
  • 操作系统根据目录我们选择文件名,查当前目录文件下的目录项(根据文件名),找到外存物理地址,调入文件或目录文件
  • 目录文件的一条记录也称为文件控制块FCB,一个FCB就是一个文件目录项
  • FCB最重要的就是文件名,文件存放的物理地址,

在这里插入图片描述
在这里插入图片描述
需要对文件目录进行哪些操作
在这里插入图片描述
单级目录结构
在这里插入图片描述
两级目录结构
在这里插入图片描述
多级目录结构

  • 绝对路径:从根目录出发,每一层目录都需要一次读磁盘I/O操作
  • 相对路径:从当前路径出发,每一层目录都需要依次读磁盘操作I/O,当前目录这几层不算
  • 引入相对路径后,磁盘I/O次数减少了,提高访问文件效率
  • 个人理解:不能说相对路径的读磁盘次数一定少了,关键还是要看哪一种方式的访问层级更少吧??

在这里插入图片描述
树形结构不便于实现文件共享

  • 选择题经常出

在这里插入图片描述
无环图目录结构

  • 多个用户的不同目录指向同一个文件,表示这个文件是共享的
  • 删除操作:用户删除自己目录下的共享文件,只会删除该用户的PCB,让共享计数器-1,不会直接删除共享节点,当共享计数器变为0时,才会真正删除节点
  • 共享文件是同一个文件,复制文件是得到了一个新的文件

在这里插入图片描述
索引节点(FCB改进)

  • 为了提高查找效率,减少磁盘I/O次数,给目录表瘦身
  • 一个目录项只存放文件名,索引节点指针,指针指向索引节点,保存着其文件名以外的其他信息
  • 查找时只检索目录表,找到FCB之后再进一步读取指针指向的索引节点
  • 这样一个磁盘块可以存放更多的FCB,降低读磁盘块的次数
  • 外存索引节点,内存索引节点(增加一些信息)

在这里插入图片描述
在这里插入图片描述
知识点小结

  • 本小结很重要,容易出小题考察

在这里插入图片描述

文件的物理结构(文件分配方式)

本节十分重要,历年都出题
在这里插入图片描述
在这里插入图片描述
文件块,磁盘块

  • 很多操作系统将磁盘块的大小与内存块,页面的大小相同,方便数据交换

在这里插入图片描述
文件块,磁盘块

  • 文件的逻辑地址空间也被分成一个一个的文件块
  • 操作系统为文件分配存储空间以块为单位
  • 用户提供逻辑地址,操作系统负责逻辑地址映射到物理地址

在这里插入图片描述
文件分配方式–连续分配

  • 文件在磁盘上占有一组连续的块
  • 物理块号=起始块号+逻辑块号,当然也要检查用户提供的逻辑块号是否超过文件的长度
  • 连续分配支持顺序访问,随机访问

在这里插入图片描述
连续分配的优缺点
在这里插入图片描述
在这里插入图片描述
文件分配方式–链接分配

  • 离散分配的方式,为文件分配离散的磁盘块
  • 分隐式链接和显示连接

在这里插入图片描述
隐式链接

  • 目录项中包含起始块号,结束块号
  • 只支持顺序访问,不支持随机访问,查找效率低,每个块内需要分配空间保存下一个块的指针

在这里插入图片描述
显示链接

  • 目录项中只需记录起始块号
  • 准备一个FAT分配表,记录一个物理块的下一个块是几号
  • 一个磁盘只需要一个FAT,记录磁盘所有磁盘块链接信息,FAT的表项是连续存储,长度相同,因此物理块号是隐含的
  • 开机时,FAT读入内存,常驻内存

在这里插入图片描述
显示链接

  • 地址转换过程,目录向起始块号,查内存中FAT,找到对应的起始物理块号
  • 块号转换不需要访问磁盘,比隐式链接的访问速度快得多
  • 一个磁盘对应一个FAT,开机就加载到内存

在这里插入图片描述
在这里插入图片描述
链接分配总结

  • 考试中只说链接分配,默认为隐式链接

在这里插入图片描述

文件的物理结构(文件分配方式)

在这里插入图片描述
索引分配

  • 索引表功能有点像页表
  • 存放索引表的磁盘块叫索引块,存放数据的磁盘块叫数据块
  • 每个文件都有自己对应的索引表
  • 索引表表项可以定长,因此索引表中逻辑块号可以隐含

在这里插入图片描述
索引分配,地址的转换

  • 支持随机访问,文件拓展容易实现

在这里插入图片描述
索引分配–链接方案

  • 索引表太大,一个索引快装不下,可以用多个索引快存放,索引块之间链接起来
  • 如果,要访问的物理块在第二索引表里,必须先访问第一个索引快,通过指针访问第二个索引快,再根据表项访问数据
  • 如果,文件太大,索引块太多,读磁盘次数会非常多,操作会变得低效

在这里插入图片描述
索引分配–多层索引

  • 类似于多级页表,建立多层索引表
  • 多层索引分配中的索引表,大小不能超过一个磁盘块
  • 根据需求建立二层,三层,四层索引块
  • n层索引分配方式,访问目标数据块需要n+1次磁盘I/O,顶级索引表没有调入内存
  • 缺点,如果遇到了小文件,也要好几层索引读磁盘

在这里插入图片描述
索引分配–混合索引

  • 一个顶级索引表,既有直接地址索引,又有一级间接索引,还有两级间接索引
  • 8+256+256*256=65800
  • 对于小文件可以降低读磁盘次数

在这里插入图片描述
知识点小结

  • 根据顶级索引表结构计算文件的最大长度,考试中很常见
  • 红色字,重要考点!重要考点!

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

逻辑结构和物理结构

在这里插入图片描述
无结构文件举例
在这里插入图片描述
逻辑结构(从用户视角看)
在这里插入图片描述
物理结构(从操作系统视角看)
在这里插入图片描述
C语言创建顺序文件举例
在这里插入图片描述
物理结构(从操作系统视角看)
在这里插入图片描述
懵逼点:顺序文件采用顺序存储/链式存储

  • 用户自己决定顺序还是链式,用户视角觉得就是占用连续的地址空间

在这里插入图片描述
链式存储的顺序文件采用连续分配

  • 操作系统可以选择连续分配,也可以选择链接分配,

在这里插入图片描述
逻辑结构:所以文件
在这里插入图片描述
索引文件采用索引分配
在这里插入图片描述

知识点小结

  • 个人理解:
    • 逻辑结构里的,无结构,有结构,顺序文件(顺序存储,链式存储),索引文件,索引顺序文件是给用户使用的
    • 物理结构里的,连续分配,链接分配,索引分配,是给操作系统用的
    • 二者各玩各的,各自做好自己的事情,用户选好了逻辑结构,至于操作系统选什么分配方式(逻辑转物理),那是操作系统的事情,用户无法知道,也没必要知道
    • 用户再怎么选择逻辑层面的文件结构,到了操作系统这里,都是一堆二进制数据,都要按照磁盘块的大小进行拆分,然后选择分配方式,二者不是一个层面的东西

在这里插入图片描述

文件存储空间管理

在这里插入图片描述
在这里插入图片描述
存储空间的划分与初始化

  • 磁盘分区,一个物理磁盘划分为多个逻辑磁盘
  • 一个磁盘分区包含目录区,文件区
    • 目录区保存文件目录相关信息,比如,FCB,索引节点,磁盘管理信息(空闲表,位示图)
    • 文件区存放普通数据
  • 多个物理磁盘也可以合成一个逻辑磁盘,文件卷

在这里插入图片描述
空闲表法

  • 类似于内存管理的动态分区分配的空闲表
  • 空闲盘块表记录每个空闲的起始位置,空闲盘块数量
  • 适用于文件物理结构为连续分配方式的场景
  • 如何分配磁盘块
    • 与内存管理动态分区分配类似,可采取首次适应,最佳适应,最坏适应
    • 分配空闲磁盘块以后,修改对应表项
  • 回收时需要注意表项合并问题,与内存的套路一样

在这里插入图片描述
空闲链表法

  • 空闲盘块链,空闲盘区链

在这里插入图片描述
空闲盘块链
在这里插入图片描述
空闲盘区链
在这里插入图片描述
位示图法

  • 考试最常考的方法,如何根据字号位号求出盘块号,或者根据盘块号求出字号位号,注意到底是从0开始的还是从1开始的
  • 本例中,从0开始的,n表示字长,则(i,j)的二进制位对应盘块号b=ni+j
  • 王道书上是以1开头的,注意区分
  • 用矩阵的方式描述每个盘块的情况
  • 矩阵横向一般就是一个字,本例中一个字长16位,则横向16位
  • 矩阵的纵向有若干个连续的字
  • 用每一个位,对应一个磁盘块的情况,比如0为空闲,1为已分配
  • 用(字号,位号)或者叫(行号,列号)定位一个磁盘块号

在这里插入图片描述
位示图如何进行磁盘分配和回收

  • 分配:顺序扫描位示图,找到满足条件的位,算出对应的盘块号,将对应磁盘块分配给文件,修改位示图
  • 回收:根据回收的盘块号求出对应的字号位号,修改位示图
  • 连续分配离散分配都适用

在这里插入图片描述
成组链接法

  • 适合于大型文件系统,UNIX系统采用了此法
  • 不太好理解,不好用文字描述,也不是考试重点,不大可能出题
  • 本人看了一遍视频也是一脸蒙,感觉咸鱼的配图和讲解稀里糊涂的,先不看了,以后有时间再说

在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

文件的基本操作

在这里插入图片描述
创建文件
在这里插入图片描述
删除文件
在这里插入图片描述
打开文件

  • 很多操作系统对文件进行操作之前,需要进行打开操作
  • 将目录项复制到内存中的打开文件表中,这么做可以大幅提高文件的访问速度

在这里插入图片描述
打开文件表

  • 系统打开文件表,
    • 只有一张,记录全部的打开文件信息,打开计数器记录了有多少进程正在打开这个文件
  • 用户进程的打开文件表,
    • 记录了进程自己打开的文件信息,通过系统表索引号指向系统打开文件表对应的表项
    • 读写指针记录进程对文件操作进行到的位置
    • 标明进程对这个文件操作的权限
  • 个人理解:打开文件是系统和进程要对文件进行操作,因此需要登记信息,并不是真正的操作文件,真正的操作文件当完成了打开文件后,进程开始对文件进行读写的操作

在这里插入图片描述
关闭文件

  • 进程删除自己的表项,回收内存空间等资源
  • 系统的打开文件表项计数器-1,如果显示计数器变为0,说明没有进程在打开文件,系统也删除这个表项

在这里插入图片描述
读文件

  • 先进行打开文件的操作,才能对文件执行读操作
  • 进程想要读文件,也是需要调用操作系统的读命令

在这里插入图片描述
写文件

  • 我们在记事本应用程序中编辑好新的内容,点击保存,调用操作系统写的命令
  • 也要先对文件执行了打开文件的操作,这里都能编辑了,肯定是已经代开了,不再赘述

在这里插入图片描述
知识点小结

  • 打开文件操作不会把文件数据直接读入内存,只是复制了文件的目录项,索引号返回给用户
  • 索引号也成文件描述符
  • 读文件操作才会把文件数据读入到内存
  • 写操作不需要提供文件名,只需要文件描述符
  • 打开文件和读文件最容易出选择题

在这里插入图片描述

文件共享

在这里插入图片描述
基于索引节点的共享方式(硬链接)

  • 使用索引节点
  • 用户目录中,文件名对应索引节点指针,索引节点存放文件物理地址
  • 多个用户的用户目录项指向同一个索引节点,这个文件就是共享的
  • 索引节点中记录被链接的次数,一个用户删除目录项,索引节点计数-1,只有计数为0时,才真正删除共享文件

在这里插入图片描述
基于符号链的共享方式(软链接)

  • 图中的user3中的ccc文件就是采用了软链接
  • ccc文件名在目录项对应索引节点指针,指向的文件物理地址,这个文件是一个link类型文件,文件内存放了user1的aaa文件逻辑存放路径,最终找到文件本体
  • 原理类似windows的快捷方式
  • link类型的文件名可以不同,因为文件里保存的路径才决定了如何找到目标文件
  • 如果aaa文件的目录项被删除,即使bbb没有被删除,目标文件本体还在,ccc文件也将找不到目标文件,指针悬空
  • 软链接方式增加了查询目录的次数,查找效率会降低

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

文件保护

在这里插入图片描述
口令保护

  • 用户访问文件需要输入口令,操作系统将用户输入的口令与FCB中保存的口令进行对比,正确才能访问
  • 开销比较小,方便,速度快
  • 正确的口令保存在系统内部,不安全

在这里插入图片描述
加密保护

  • 系统使用密码对文件进行加密,只有用户访问时提供正确的密码,才能通过解密算法对文件进行解密
  • 保密性强,系统中无需保存密码,加密解密需要一定时间

在这里插入图片描述
访问控制

  • 给每个文件的FCB增加一个访问控制表,记录了哪些用户可以进行哪些操作
  • 如果用户过多,访问控制表项也会数量增多
  • 改进,将用户分为不同的组,不同的组可以对文件执行不同的操作
  • 想要改变用户的访问权限,只需要把用户放到对应的分组即可

在这里插入图片描述
windows的访问控制

  • 如果对一个文件进行访问控制,那么这个文件及内部的所有文件都会改为这个类型的访问控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

文件系统的层次结构

408不要求考察本节内容,仅作为理解
在这里插入图片描述
文件系统的层次结构

  • 用户接口:对应文件基本操作小节
  • 文件目录系统:对应文件目录小节
  • 存取控制模块:对应文件保护小节
  • 逻辑文件系统与文件信息缓冲区:对应文件逻辑结构小节
  • 物理文件系统:对应文件物理结构小节
  • 辅助分配模块:对应文件存储空间管理小节
  • 设备管理模块:对应磁盘管理小节

在这里插入图片描述
知识点小结

  • 举例说明

在这里插入图片描述

文件系统的全局结构(布局)

新考点

低级格式化

  • 原始磁盘生产出来后,先低级格式化(物理格式化),
  • 将磁盘划分为一个个扇区,检测坏扇区
  • 如果有坏扇区,则用备用扇区顶替
  • 坏扇区对操作系统是透明的,即操作系统是无感的。操作系统访问这个扇区时,磁盘驱动器会悄悄用备用扇区替代

在这里插入图片描述
高级格式化

  • 又叫逻辑格式化,把磁盘分区(卷),通过分区表记录每个分区的大小和地址
  • 每个分区建立各自独立的文件系统
  • 图中的C盘既有超级快,又有位示图。二者的功能是有一定重合的。但超级快更适合查找若干个空闲块,位示图更适合查找特定的一个磁盘块是否空闲
  • i节点就是我们说的索引节点,每个文件都有对应的索引节点;Unix中的索引节点都是连续存放在i结点取的,每个索引节点大小相等,支持随机访问
  • 完成高级格式化,灰色部分就有实际数据了,后序再有操作,会在白色继续填充数据

在这里插入图片描述
文件系统在内存中的结构

  • 目录的缓存保存了最近访问过的目录,这样可以降低磁盘I/O的次数
  • 系统打开文件表,整个系统只有一个;进程打开文件表,每个进程只有一个,存放在进程PCB中;
  • 执行打开文件过程(绿色文字)
    • 进程打开文件表中无需存放文件的FCB,而是保存索引,通过索引指向系统打开文件表中的对应表项,里面就有对应的FCB
    • 操作系统返回文件描述符,相当于一个指向进程打开文件表的指针,
    • 接下来的操作将通过文件描述符找到文件并操作
  • 对文件执行read操作(红色流程)

在这里插入图片描述

虚拟文件系统,文件系统挂载

普通的文件系统

  • 不同的文件系统向上层提供了不同的函数调用接口,不利于上层用户的开发使用

在这里插入图片描述
虚拟文件系统

  • 用户进程只需要调用虚拟文件系统的函数接口即可
  • 虚拟文件系统的特点

在这里插入图片描述
存在的问题

  • 不同的文件系统,表示文件数据结构不同,打开文件后,其在内存中的表示就不同
  • 为了解决这样的问题,虚拟文件系统使用vnode统一的数据结构来存放各种文件系统的加载数据
  • 虚拟文件系统打开文件系统,现在内存加载这个文件系统的数据,在复制一份到虚拟文件系统vnode上
  • 注意区分vnode与inode

在这里插入图片描述
在这里插入图片描述
函数功能指针

  • vnode中有函数功能指针,指向对应的具体文件系统的函数功能

在这里插入图片描述
文件系统的挂载(mounting)

  • 又称文件系统的安装,装载,
  • 比如U盘插到电脑上,就完成文件系统的挂载
  • 使用macos系统的应该知道,如果外接的移动硬盘跟自己电脑上硬盘文件系统不一致的,插上也不能正常使用,因此我们经常会使用一个叫做mount的软件,用来正常使用不同文件系统的硬盘

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

磁盘的结构

在这里插入图片描述
在这里插入图片描述
磁盘,磁道,扇区
在这里插入图片描述
如何在磁盘中读写数据
在这里插入图片描述
盘面,柱面,磁盘物理地址
在这里插入图片描述
磁盘的分类
在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

磁盘调度算法

高频考点
在这里插入图片描述
一次磁盘读写操作需要的时间

  • 寻道时间,延迟时间,传输时间
  • 延迟时间和传输时间都和磁盘转速有关,操作系统无法优化
  • 操作系统可以优化寻道时间,采用不同的寻道算法

在这里插入图片描述
先来先服务(FCFS)
在这里插入图片描述
最短寻找时间优先(SSTF)
在这里插入图片描述
扫描算法(SCAN)

  • 磁头必须到到最边上才能调头
  • 对各磁道响应频率不平均,边缘的磁道可能很快就有响应,中间的响应时间略长一些
  • 因此扫描算法需要改进

在这里插入图片描述
LOOK调度算法

  • 针对扫描算第一个问题的改进
  • 磁头不用必须移动到边上了
  • 如果磁头的移动方向上没有新的访问请求了,就可以立即改变磁头移动方向

在这里插入图片描述
循环扫描算法(C-SCAN)

  • 针对扫描算法的第二个问题的改进
  • 磁头只能在磁道号增大的的方向上扫描,到达一端后,重新移动到开头重新扫

在这里插入图片描述
C-LOOK调度算法

  • 基于C-SCAN的优化,磁头无需一定要移动到两个边缘的磁道上

在这里插入图片描述
知识点小结
在这里插入图片描述

减少延迟时间的方法

前情回顾

  • 读完一个扇区,磁头需要时间处理数据,来不及立刻读下一个扇区,
  • 如果逻辑上连续的扇区,物理上也连续,磁头就不得不等下一圈才能读下一个扇区,增加了延迟时间

在这里插入图片描述
减少延迟时间的方法–交替编号

  • 逻辑上连续的扇区在物理上有间隔,形成交替编号的形态
  • 留出处理数据的时间,减少了延迟时间

在这里插入图片描述
减少延迟时间的方法–优化磁盘地址结构的设计

  • 如果磁盘物理地址是(盘面号,柱面号,扇区号)
    • 连续读取物理地址的时候,扇区号读满,需要切换下一个柱面(磁道),一个盘面的各个柱面读满,切换盘面,再重复前面
    • 结果,每读完一个盘面上的柱面,就要移动磁头,切换磁道,磁头移动过于频繁
  • 如果磁盘物理地址是(柱面号,盘面号,扇区号)
    • 连续读取物理地址的时候,扇区号读满,切换到下一个盘面的同一个柱面上,无需移动磁头臂,只需要切换激活对应磁头即可
    • 结果,如果有三个盘面,则读完三个盘面同一柱面,才移动磁头,切换磁道,减少磁头移动次数

在这里插入图片描述
在这里插入图片描述
减少延迟时间的方法–错位命名

  • 基于上面优化磁盘地址结构的设计,一个盘面上的柱面读满,需要读取下一个盘面上的柱面
  • 如果前一个磁盘块和下一个磁盘块在相对位置上是紧挨着,磁头需要处理时间,还是要等磁盘转一圈,才能读取下一个磁盘块
  • 如果二者错位命名,给磁头留出时间处理,则可以不用等再转一圈,接着读下一个磁盘块
  • 本质上可以第一点的交替编号是一个原理

在这里插入图片描述
知识点小结
在这里插入图片描述

磁盘的管理

理解,有印象,可以应对选择题即可
在这里插入图片描述
磁盘初始化

  • 数据区域就是我们能看到的磁盘空间大小

在这里插入图片描述
引导块

  • 计算机开机需要执行初始化程序,初始化程序放在ROM中
  • 但是这样导致后续不方便修改更新
  • 解决办法:现代计算机,ROM只存放很小的自举装入程序,完整的自举程序放在磁盘的启动块上,
  • 拥有启动分区的磁盘成为启动磁盘或系统磁盘

在这里插入图片描述
在这里插入图片描述
坏块管理
在这里插入图片描述
知识点小结
在这里插入图片描述

固态硬盘SSD

新增考点

  • 固态硬盘与机械硬盘的特点对比,磨损均衡技术,是考纲明确要求的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    固态硬盘里读写以页为单位,对应了机械硬盘里的一个磁盘块
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值