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

操作系统-文件的物理结构(文件分配方式)

文章目录

  • 总览
  • 文件块和磁盘块
  • 连续分配
      • 顺序访问
      • 直接访问(随机访问)
      • 为什么连续分配同时支持这两种访问模式?
  • 链接分配
    • 隐式链接
    • 显示链接
    • 小结
    • 索引分配
    • 链接方案
    • 多层索引
    • 混合索引
    • 小结
  • 总结

总览

在这里插入图片描述
文件数据存放在外存中
在这里插入图片描述

文件块和磁盘块

在这里插入图片描述
文件内通过逻辑块号和块内地址定位到文件内的任何位置
在这里插入图片描述

连续分配

逻辑块号类似偏移

连续分配是一种文件存储策略,在这种策略下,文件的各个部分被存储在磁盘或其他存储介质上的连续块中。这种存储方式支持两种类型的访问:顺序访问和直接访问。

顺序访问

连续分配非常适合顺序访问,因为在连续分配中,文件的块是连续的,这意味着当从文件的开头开始读取时,磁头可以从第一个块一直连续读取到文件的末尾,而不需要在磁盘上进行额外的寻道动作。由于磁盘寻道时间是磁盘访问延迟的主要来源之一,连续访问减少了这种延迟,从而提高了读取速度。

直接访问(随机访问)

直接访问是指能够立即访问文件中的任意位置的能力。在连续分配中,如果知道了文件的第一个块的地址,那么文件中任何块的地址都可以通过简单的数学计算得出。这是因为每个块都有固定的大小,所以只需要知道块的编号(相对于文件起始块的偏移量),乘以块的大小,就可以计算出该块在磁盘上的绝对位置。这使得即使是在文件的中间或末尾读取数据,也可以快速定位到正确的磁盘位置,而无需从文件的开头开始顺序读取。

为什么连续分配同时支持这两种访问模式?

连续分配之所以能同时支持顺序访问和直接访问,是因为它的数据布局特性。文件的连续存储允许顺序读取时避免不必要的寻道,而固定的块大小和位置关系使得可以根据块号直接计算出物理地址,从而支持直接访问。这种灵活性使得连续分配在很多应用中非常有效,尤其是那些既需要快速顺序读取又需要随机访问的场景,如数据库和多媒体文件。

在这里插入图片描述
连续分配的 文件磁盘块相邻,移动距离短
在这里插入图片描述扩展也需要连续,有时需要迁移
在这里插入图片描述
紧凑需要移动磁盘块内容,耗费时间
在这里插入图片描述
在这里插入图片描述

链接分配

隐式链接

访问第几个逻辑块就是第几个指针,零号逻辑块就是起始块
在这里插入图片描述
尾部增加一个链表节点就行,然后修改FCB
在这里插入图片描述

显示链接

链接各个文件的指针没放在块里,而放到一张表
隐含的原因就是按顺序存储每个物理块对应的下一块,所以不需要再标明物理块号了
在这里插入图片描述

零号代表起始块号对应的物理块,大于零意味着需要寻找下一块

在这里插入图片描述

小结

在这里插入图片描述

索引分配

文件名->FCB中的索引块->内存中的索引表->逻辑块号(隐藏)->物理块号

24位<2的30次方<32位
在这里插入图片描述
拓展通过往索引表添加即可
在这里插入图片描述
当一个磁盘块对应的索引表装不下文件所有物理块时
在这里插入图片描述

链接方案

一个文件对应多个索引块,通过链表形式连接,FCB只需记录第一个索引块号
读入索引块然后确定嗲一个索引块

在这里插入图片描述

多层索引

在这里插入图片描述
但文件的块比较暗小的时候,多层索引有点浪费了,而且还需要多次读磁盘

混合索引

在这里插入图片描述

小结

在这里插入图片描述

总结

FCB就是目录项内容在这里插入图片描述

http://www.lryc.cn/news/386958.html

相关文章:

  • Spring Boot集成jsoup实现html解析
  • [240629] 阿里云揭秘其数据中心设计和自研网络,用于大语言模型训练 | Jina AI 发布最新的神经网络重排序模型
  • 【Docker0】网络更改
  • IDEA中导入Maven项目
  • px、em、rem、rpx 作用和用法详解
  • Linux 常用命令 - dd 【复制及转换文件内容】
  • 全网唯一免费无水印AI视频工具!
  • kafka(四)消息类型
  • Emacs之显示blame插件:blamer、git-messenger(一百四十四)
  • 【10分钟速通webpack,全流程打包,编译,发包,全干货,附代码 】
  • 设计模式深入解析与实例应用
  • 服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例
  • 前端工程化08-新的包管理工具pnpm
  • 章十九、JavaVUE —— 框架、指令、声明周期、Vue-cli、组件路由、Element
  • 正则表达式阅读理解
  • Apache Calcite Linq4j学习
  • FPGA SATA高速存储设计
  • MySQL----为什么选择使用MySQL
  • 01.音视频小白系统入门(新专栏)
  • C++:enum枚举共用体union
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-47转置卷积
  • LinkedIn被封原因和解封方法
  • redis sentinel 部署
  • spring boot (shiro)+ websocket测试连接不上的简单检测处理
  • Jenkins - Python 虚拟环境
  • 每日一道算法题 面试题 08.08. 有重复字符串的排列组合
  • Apache Kylin资源管理全指南:优化你的大数据架构
  • 计算机网络微课堂(湖科大教书匠)TCP部分
  • C++ 字符串介绍
  • [Cloud Networking] BGP