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

【操作系统学习笔记】文件管理1.4

【操作系统学习笔记】文件管理1.4

参考书籍: 王道考研
视频地址: Bilibili

文件的物理结构

文件快、磁盘块

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

用户操作文件时使用逻辑块号,操作系统负责将逻辑块号映射为物理块号

连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块

(逻辑地址,块内地址)->(物理地址,块内地址): 需要转换块号。用户给出要访问的逻辑块号,操作系统找到该文件对应的目录项 FCB。物理块号 = 起始块号 + 起始块号

  • 优点
    • 可以直接计算出逻辑块号对应的物理块号,因此连续分配支持顺序访问和直接访问(即随机访问)
    • 读取某个磁盘块时,需要移动磁头。访问两个磁盘块相隔越远,移动磁头所需的时间越长。连续分配的文件在顺序读/写的速度最快
  • 缺点
    • 物理上采用连续分配的文件拓展不方便
    • 存储空间利用率低,会产生难以利用的磁盘碎片

链接分配

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

  • 隐式分配

目录中记录了文件存放的起始块号和结束块号。当然,也可以增加一个字段来表示文件的长度。除了文件的最后一个磁盘外,每个磁盘中都会保存指向下一个磁盘块的指针,这些指针对用户是透明的

用户给出要访问的逻辑块号,操作系统查找该文件对应的目录 FCB。从目录项中找到起始块号,将其读入内存,并根据指针访问下一块,知道访问到结束块号才停止

  • 优点

    • 物理上离散分配,便于拓展
    • 外存利用率高,不会产生文档碎片
  • 缺点

    • 只支持顺序访问,不支持随机访问,查找效率低
  • 显式分配

把用于连接文件各物理块的指针显式地存放在一张表中。即文件分配表 FAT。一个磁盘仅设置一张 FAT。开机时,将 FAT 读入内存,并常驻内存。FAT 的各个表项在物理上连续存储,且每一个表项长度相同,因此物理块号字段可以是隐含的

  • 优点
    • 很方便文件拓展
    • 不会产生文档碎片
    • 支持随机访问
    • 地址转换不需要访问磁盘,效率更高
  • 缺点
    • FAT 需要占用一定存储空间

索引分配

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

  • 优点
    • 支持随机访问
    • 很方便文件拓展
  • 缺点
    • 索引表需要占据一定的存储空间

若一个文件的大小超过 256 块,那么一个磁盘表是装不下整张索引表的,如何解决

  • 链接方案: 如果索引表太大,一个索引表装不下,那么可以将多个索引块链接起来存放
  • 多层索引: 建立多级索引,类似多级页表。使第一层索引块指向第二层索引块,还可以第三层、第四层…
  • 混合索引: 多级索引分配方式的结合有。例如一个文件的顶级索引表中,即包含直接地址索引,又包含一级间接索引、还包含两级间接索引
http://www.lryc.cn/news/312895.html

相关文章:

  • 快递包装展|2024上海国际电商物流包装产业展览会
  • vue页面刷新问题:返回之前打开的页面,走了create方法(解决)
  • IJCAI23 - Continual Learning Tutorial
  • 【YOLO v5 v7 v8 v9小目标改进】HTA:自注意力 + 通道注意力 + 重叠交叉注意力,提高细节识别、颜色表达、边缘清晰度
  • 外包干了10天,技术退步明显。。。。。
  • 如何在Win系统本地部署Jupyter Notbook交互笔记并结合内网穿透实现公网远程使用
  • 【自动化测试】之PO模式介绍及案例
  • 3D-Genome | Hi-C互作矩阵归一化指南
  • 【设计者模式】单例模式
  • Windows7缺失api-ms-win-crt-runtime-l1-1-0.dll的解决方法
  • coqui-ai/TTS 安装使用
  • Spring AOP相关注解及执行顺序
  • C++从零开始的打怪升级之路(day44)
  • [C++核心编程](七):类和对象——运算符重载*
  • 什么是MVC和MVVM
  • 物体检测-系列教程23:YOLOV5 源码解析13 (SPP层、Flatten模块、Concat模块、Classify模块)
  • 2024.3.6每日一题
  • YOLOSHOW - YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 基于 Pyside6 的图形化界面
  • sql高级
  • 更快更强,Claude 3全面超越GPT4,能归纳15万单词
  • devc++小游戏3.8.5
  • Java网络通信TCP
  • 层级锁笔记
  • 基于SpringBoot+Vue 的专家医院预约挂号系统
  • 计算机基础专升本笔记十二-Excel常用快捷键大全
  • 制作耳机壳的UV树脂和塑料材质相比优势有哪些?
  • JS(JavaScript)中如何实现,复选框checkbox多选功能
  • 直接修改zynq petalinux编译出来的rootfs.cpio.gz文件内容
  • 什么是 Golang 类型断言
  • mysql数据库root权限读写文件