文件系统
文件系统概念
文件系统是操作系统中管理持久数据的核心子系统。它提供了一种抽象机制,使用户能够方便地在磁盘上存储和检索信息,而无需了解底层存储细节。
文件
文件定义
文件是字节序列的抽象,为操作系统提供了最大的灵活性。
文件命名
不同操作系统采用不同的文件系统和命名约定:
- FAT16/32: MS-DOS和早期Windows系统
- NTFS: 较新的Windows系统
- exFAT: 微软优化的FAT系统
- ext2/3/4: Linux系统常用文件系统
文件结构
- 字节序列: 最简单和最灵活的结构
- 记录序列: 具有固定长度记录的序列
- 树状结构: 按键字段排序的记录树
文件类型
- 普通文件: 用户创建的数据文件
- 目录: 包含其他文件信息的特殊文件
- 字符特殊文件: 用于I/O的设备文件(UNIX系统)
- 块特殊文件: 用于块设备的文件(UNIX系统)
文件访问方法
- 顺序访问: 按顺序读取所有字节,早期操作系统只有这种类型
- 随机访问: 可以直接访问文件中的任意位置
文件属性
包括创建日期、修改时间、所有者、大小等元数据信息。
文件操作
主要的文件操作系统调用包括:create
, delete
, open
, close
, read
, write
, append
, seek
, get attributes
, set attributes
, rename
。
目录
在很多操作系统中,目录本身也是文件
目录结构
- 一级目录系统: 所有文件都在一个目录中
- 层级目录系统: 树状结构,允许更好的文件组织
路径名
- 绝对路径: 从根目录开始的完整路径
- 相对路径: 相对于当前工作目录的路径
目录操作
主要的目录操作包括:create
, delete
, opendir
, closedir
, readdir
, rename
, link
, unlink
。
文件系统实现
文件存储实现的关键问题是记录各个文件分别用到哪些磁盘块。不同的操作系统用到不同的方法
文件系统布局
- 主引导记录(MBR): 包含分区表和引导代码。结尾是分区表。该表给出每个分区的起始结束地 址
- 分区: 每个分区包含独立的文件系统
文件实现方式
定义 | 优点 | 缺点 | |
---|---|---|---|
连续分配 | 文件占用连续的磁盘块 | 实现简单&操作性能较好 | |
链表分配 | 文件块通过链表连接 | 充分利用磁盘块&随机访问快 | 占用字节,每个磁盘块存储数据的字节数不再是2的整数次幂</ |