当前位置: 首页 > backend >正文

操作系统——第四章(文件的物理结构以及与逻辑结构的对比)

一、文件的物理结构

1.知识总览

     

2.补:文件块和磁盘块

     

在内存管理中,进程的逻辑地址空间被分为一个一个页面同样的,在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”。
于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式。

3.连续分配

      

   

   

    

【总结】连续分配的优缺点:

4.链接分配

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显式链接两种。

(1)隐式链接

   

隐式链接一一除文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录
包括文件第一块的指针和最后一块的指针。

优点:很方便文件拓展,不会有碎片问题,外存利用率高。
缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量
的存储空间。

(2)显式链接

把用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表(FAT)。

(i)假设某个新创建的文件“aaa”依次存放在磁盘块2→5→0→1
(ii)假设某个新创建的文件“bbb”依次存放在磁盘块4→23→3

                        

【注】一个磁盘仅设置一张FAT。开机时,将FAT读入内存,并常驻内存。FAT的各个表项在物理上连续存储,且每一个表项长度相同,因此“物理块号”字段可以是隐含的。

优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接
来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
缺点:文件分配表的需要占用一定的存储空间。

若考试题目中遇到未指明显式或隐式的“链接分配”,默认为隐式链接分配。

5.索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表一一建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。  
 

       

可见,优点——索引分配方式可以支持随机访问。文件拓展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表项即可)。
缺点——索引表需要占用一定的存储空间。


思考?——若每个磁盘块1KB,一个索引表项4B,则一个磁盘块只能存放256个索引项。
如果一个文件的大小超过了256块,那么一个磁盘块是装不下文件的整张索引表的,如何解决这个问题?

(1)方案一 ——链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。

         

光是读磁盘就需要两百多次的操作,效率非常低。因此,提出方案二。

(2)方案二——多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。

         

多层索引也存在一个问题,假如一个文件本来很小,它的数据块只有1KB那么大,但它采用了两层索引的这种结构,读入文件的操作仍然需要三次,效率还不高,因此提出了方案三继续优化。

(3)方案三——混合索引:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)。

                  

总结下来,

           

超级超级超级重要考点①要会根据多层索引、混合索引的结构计算出文件的最大长度(Ky:各级索
引表最大不能超过一个块);②要能自己分析访问某个数据块所需要的读磁盘次数(Ky:FCB中会存有指向顶级索引块的指针,因此可以根据FCB读入顶级索引块。每次读入下一级的索引块都需要一次读磁盘操作。另外,要注意题目条件一一顶级索引块是否已调入内存)。

6.回顾总结

  


二、逻辑结构VS物理结构

1.两者知识回顾

           

2.两者分析

               

              

链式存储与链接分配?

         

索引文件与索引分配?

          

3.消化理解

       

复盘对比(* ̄︶ ̄),下一讲文件存储空间管理与文件的基本操作、文件保护等相关介绍。




 



 

http://www.xdnf.cn/news/4439.html

相关文章:

  • Redis相关命令详解与原理
  • 【Agent】使用 Python 结合 OpenAI 的 API 实现一个支持 Function Call 的程序,修改本机的 txt 文件
  • 如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】
  • 探寻程序开发的个人密码
  • excel 批量导出图片并指定命名
  • Excel点击单元格内容消失
  • 龙虎榜——20250507
  • LVGL -meter的应用
  • phpstudy升级新版apache
  • 如何在金仓数据库KingbaseES中新建一个数据库?新建一个表?给表添加一个字段?
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.1 基础图表绘制(折线图/柱状图/散点图)
  • 把本地的文件拷贝到wsl的文件夹下或者 wsl读取本地的文件
  • 使用node.js创建一个简单的服务器
  • WD5040L、 7V 至 37V 的宽输入电压,输出电压范围为 3.3V 至 36V,6A输出、保护功能强,电源管理利器!
  • Redis的缓存穿透、缓存击穿和缓存雪崩
  • ai说什么是注解,并以angular ts为例
  • Go——项目实战
  • 【强化学习】强化学习算法 - 多臂老虎机问题
  • 精益数据分析(47/126):深挖UGC商业模式的关键要点与指标
  • 多模态大语言模型arxiv论文略读(六十二)
  • uniapp自定义底部导航栏h5有效果小程序无效的解决方案
  • 鞅与停时 - 一种特别的概率论问题
  • 讲解什么是快充诱骗协议芯片及它的工作原理和应用场景
  • 构建生命大模型,开拓教育新境界——启智书院举办十二周年庆典暨教育新生态跨界共拓峰会
  • 【存储管理—动态不等长存储资源分配算法】
  • 可执行文件格式(ELF格式)以及进程地址空间第二讲【Linux操作系统】
  • 【django.db.utils.OperationalError: unable to open database file】
  • Redis-黑马点评
  • 固件测试:mac串口工具推荐
  • 第1章 算法设计基础