北航OS课程笔记--七、文件系统
文件系统
文件系统基本概念
文件是对用户数据的逻辑抽象,是数据存储和访问的单位。对用户而言,这样可以屏蔽访问外存上数据的复杂性。
文件可以视为一个单独的连续逻辑地址空间,其大小与文件的大小相同,与进程的地址空间无关。
文件的定义:一组带标识的、在逻辑上有完整意义的信息项的序列。
包括两部分:文件体(文件本身的内容)和文件说明。
文件管理的需求:
- 用户视角:使用逻辑文件。关心文件系统所提供的用户接口
- 操作系统视角:组织和管理物理文件。
文件系统要完成的任务:
文件系统是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并方便用户使用。
- 统一管理磁盘空间,实现磁盘空间的分配与回收
- 实现文件按名存取:名字空间映射到磁盘空间。
3.实现文件信息共享,并提供文件的保护、保密手段;
4.向用户提供一个方便使用、易于维护的接口,并向用 户提供有关统计信息;
5.提高文件系统的性能;
6.提供与IO系统的统一接口
文件系统的三个层次
- 文件系统的接口
- 对象操作管理的软件集合
- 对象及其属性
文件
文件名(略)
文件类型:
- 按性质和用途:系统文件、库文件、用户文件
- 按数据形式:源文件、目标文件、可执行文件
- 按对文件实施的保护级别:只读、读写、执行、不保护文件
文件的逻辑结构:
-
以字节为单位的流式结构(无结构文件):源程序文件、目标代码文件等
-
记录式文件结构:按信息在逻辑上的独立含义所划分的信息单位,如每个职工的工资信息是一个逻辑记录,整个单位的工资信息便组成了该单位工资信息的记录式文件。(xml文件)
对于记录式文件,操作系统为用户存取文件信息的最小单位是记录。
-
树形结构
文件存取方式:
- 顺序存取
- 随机存取
文件存储介质:
- 典型的存储介质:磁盘、磁带、光盘等;
- 物理块:数据存储、传输和分配的单位,存储设备通常划分为大小相等的物理块,统一编号。
目录
目录的提出:
- 要能迅速定位一个文件
- 要方便用户命名,能有重名和别名
- 分组功能
目录内容
目录是由文件说明索引组成的用于文件检索的特殊文件,文件目录的内容主要是文件访问和控制的信息。
目录的结构
- 单级目录结构
- 两级目录结构:分用户
- 多级目录结构:根目录&当前目录
- 树形
- 无环图目录结构:方便共享
目录的实现
直接法:目录项=文件名+文件控制块。如Windows。
间接法:目录项=文件名+文件控制块地址(索引号)。如Unix(inode)。
inode是文件控制块的一种,也就是索引表。
其中包含了:作为FCB的各种信息(见下),以及直接索引、一级间接索引等等。
文件系统实现方法

文件控制块
注意与文件目录内容区分。
- 基本信息:
- 文件名
- 物理位置
- 文件逻辑结构:有无结构(记录文件、流式文件)
- 文件物理结构:顺序、索引等
- 访问控制信息
- 文件所有者
- 访问权限
- 使用信息
- 创建时间,上一次修改时间,当前使用信息等。
- 实例:DOS中的文件控制块FCB;Unix的inode。
文件逻辑结构
- 提高检索效率
- 便于修改
- 降低文件存储代价
文件物理结构
- 文件字存储介质上的存放方式,表示了一个文件在文件存储介质上的位置、链接和编目方法。
- 主要解决的问题:
- 主要结构:连续结构、串联结构、索引结构
连续结构
容易出现磁盘碎片。
优点:
- 结构简单,实现容易,不需要额外的空间开销
- 顺序存取和随机存取的效率高
缺点:
- 文件长度一经固定便不易改变
- 不利于文件的动态增加和修改
所以适用于变化不大的文件(系统文件)。
串联(链接)结构
把文件的信息按存储介质的物理特性存于若干块中,并使用物理块中的最后一个字(或第一个字)作为链接字,指向后续块的物理地址。
- 只支持顺序访问,不支持随机访问,查找效率很低。
- 方便拓展文件。
索引结构
- 一个文件的信息存放在若干个不连续的物理块中,系统为每个文件建立一个专用数据结构:索引表(即inode)
- 索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块。
每个文件索引表长度是不一样的,不能存放在FCB中,FCB中只记录索引表的地址。
上一级目录的一个目录项中,只记录某个下一级目录(文件)的索引表(inode)的物理位置;
索引表中的每一个表项 再指向下一级目录(文件)的每一个物理块的位置;(直接索引)
下一级为目录时,每个物理块中包含若干个目录项;
索引表中的表项还可能指向下一级索引表。(多级索引表,每个索引表只占一块)
索引文件:系统为每个文件建立逻辑块号与物理块号的对照表称为文件的索引表。文件由数据文件和索引表构成,被称为索引文件。
索引表位置:文件目录中,文件的开头等。
索引表大小:固定&非固定。

索引文件的操作
索引文件在存储区中展两个区:索引区和数据区。
索引区存放索引表,数据区存放数据文件本身。
访问索引文件的步骤:
- 读取文件索引区,由逻辑块号查得物理块号
- 访问物理块号获得所需信息。
文件保护
- 建立副本:把同一文件保存在多个存储介质上
- 定时转储
- 规定文件权限
文件系统性能提升方法
-
目录项分解
-
当前目录
-
磁盘碎片整理
-
块高速缓存(即磁盘高速缓存),在内存中
-
磁盘调度
-
并行化(RAID)
-
优化数据布局
-
提前读、延迟写
文件系统实例
FAT文件系统
文件系统的数据记录在引导扇区中。
FAT:文件分配表,用于描述块的分配状态、标注下一块的块号等。
FAT表项:2字节。
目录项:32字节。
根目录大小固定。
Ext2文件系统
Linux文件系统,使用了索引节点。
超块
包含了文件系统的基本大小和形式,其中的数据由文件系统管理程序来进行文件系统的维护。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)