操作系统 - 文件管理

文件系统层次结构

用户打开或者读写文件时,通过系统调用,读取文件的目录系统。通过读取FCB信息,判断是否有权限访问该文件。权限通过后,读取缓冲区中的信息,找到文件具体所在的逻辑块号,通过文件块号操作具体的文件。

目录实现

目录本质上是数据结构,有线性表和哈希表两种结构。

文件分配方式

和内存一样,对磁盘也进行分块管理,每个块一般4K大小。

连续分配

优点:支持直接和顺序访问,速度块

缺点:容易产生内部和外部碎片

内部碎片:0~2号块没有写满数据

外部碎片:比如文件需要4个块,0~2号块容量不够,而3、4号块又被使用了,则会从5号块开始写,存储到了5-8号块,此时0-2号则被称为外部碎片

链接分配

优点:支持顺序访问,方便扩展,不会造成外部碎片

缺点:不能直接访问,效率低;

隐式链接分配

每个盘块记录下一个盘快的指针,如果某一个盘块坏了,后续都读取不了,有数据丢失风险。

显示链接分配

指针数据单独拿出来,不再在块上存储下一个块号的地址。支持顺序访问,随机访问

索引分配

一级索引

以A文件为例,具体内容存储在块号为3、6、23上,使用一维数组来维护文件索引表中逻辑块号与物理块号的关系。再将文件索引表存储到物理块编号为1号的块上。读取文A文件时,先找到1号块,从中读取文件索引表,按序顺序读取文件。

由于每个块号假设为4K,一维数组中存储的是整形(4字节),也就意味着一个块号只能存1024个元素,每个元素指向一个物理块号,因此一级索引能够存储的最大文件只有4M(1024 * 4k =4M)

二级索引

一级索引的缺点在于不能存储大文件,通过二级索引解决该问题。

二级索引中,索引块中存储的不再是文件索引表信息,而是继续存储索引。通过文件块号找到一级索引,在通过一级索引找到二级索引。二级索引支持的单个文件大小为4G。(10241024 4K)

混合索引

二级索引虽然解决了大文件问题,但是由于需要两次索引,文件的读取效率也会有所下降。为了解决该问题,引入混合索引。

混合索引和二级索引类似,区别在于,将某些热点数据的物理块号直接存储在一级索引表中。即部分文件(热点数据)是通过一级索引表直接找到物理块号读取。

文件存储空间管理

一个物理磁盘尅分成多个逻辑盘,每个逻辑盘中又区分为目录区和文件区。

目录区存放FCB以及磁盘空间管理信息,文件区存放文件数据。

空闲表法 & 空闲链表法

空闲表法与空闲链表法在大文件场景下效率较低。

成组链接法

成组链接法借鉴了空闲链表法实现。为方便理解,下面将分布介绍成组链接法:

  • 先将所有空闲的块分成若干组存储到栈结构的数据结构中,如下所示,每个栈存储100个元素,最后一组若不足100,则存放实际数量即可,如下所示:
  • 每个栈底的元素存储了下一个节点的信息,如下一个栈有多少个元素,栈中存储的空闲数据块编号。
  • 当后续再无分组时,使用的特殊值0或-1表示。从栈中读取数据时,如果读取到的数据编号为0则代表后续再无空闲块
  • 由于是链表结构,只需要在操作系统中加载头部指针即可,因此有了超级块,超级块中存储的即为头部指针信息。

位式图法

二维数组中0代表空闲的磁盘块,1代表已使用的块。可以同给每个位置计算出磁盘的块号。

相关推荐
OpenPomeloxCommunity13 小时前
Linux驱动基础(三):firmware的声明与加载
linux·操作系统
云计算练习生14 小时前
什么是系统调用?为什么程序访问硬件必须经过它
linux·windows·操作系统·系统调用·操作系统原理
玄芯散人14 小时前
【筑基·059】Linux命令行入门:工程师的操作系统
linux·操作系统·命令行
云计算练习生2 天前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
流浪0014 天前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
布莱克6054 天前
理解虚拟内存:概念、动机与地址映射原理
操作系统·虚拟内存
Dovis(誓平步青云)5 天前
QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
服务器·人工智能·机器人·操作系统·电脑·智能化
个性小王5 天前
安装kali操作系统
网络安全·操作系统·渗透·kali
码农小韩6 天前
Linux应用开发(五)——线程
linux·操作系统·linux驱动·嵌入式软件开发·嵌入式操作系统·linux应用
TechEdu2026067 天前
[操作系统]操作系统04:进程间通信(IPC)-机制、模式与实践
操作系统·os