本章节目录
文件系统能够为用户提供在计算机系统中对数据信息进行长期、大量存储和访问的功能。
它包含了文件及管理文件的软件集合
1. 文件
文件系统的用户接口包括文件的命名、类型、属性和对文件的操作
1.1 文件命名
1. 有操作系统都允许用1~8个字母组成的字符串
2. 多数操作系统都支持文件名用圆点隔开分为两部分,圆点后面的部分称为文件扩展名
1.2 文件结构
1. 无结构字节序列,流式文件
2. 固定长度记录序列
3. 树形结构
1.3 文件类型
1. 正规文件,分为ASCII文件(可显示打印,通常的编辑器可编辑)和二进制文件(不能直接显示打印,需要专门的编辑器)
2. 目录文件,管理文件系统的系统文件
3. 字符设备文件,和输入输出有关
4. 块设备文件,用于磁盘类设备
1.4 文件存取
1. 顺序存取:从文件开始处读取信息,不能跳过
2. 随机存取:又称直接存取,可以以任意顺序读取文件信息
1.5 文件属性
除了文件名和文件数据外,其他与文件相关的信息,如创建日期、文件大小、修改时间等
1.6 文件操作
英文名字 | 含义 |
CREATE | 创建 |
DELETE | 删除 |
OPEN | 打开 |
CLOSE | 关闭 |
READ | 读 |
WRITE | 写 |
GETATTRIBUTES | 获取文件属性 |
SETATTRIBUTES | 设置文件属性 |
RENAME | 重命名 |
APPEND | 文件末尾添加数据 |
SEEK | 找到读取位置 |
2. 目录
目录是文件系统中实现按名访问的重要数据结构
2.1 层次目录结构
目录文件有两种常见的结构:属性放在目录项中和放在 i 结点中
2.1.1 单层目录
也就只有一个根目录,文件的命名、搜索效率很低的。
2.2.2 两级目录
包含根目录和用户目录以及用户文件
优点:解决重名问题,查找快
缺点:增加系统开销
2.2.3 树形目录
多层级的目录结构,和树的形状类似
优点:便于文件分类 层次结构清晰 便于管理和保护 解决了重名问题 查找速度加快
缺点:结构相对复杂
2.2.4 路径名
采用树形目录时,需要有某种方法指明文件
绝对路径名:从根目录到文件
相对路径名:从当前工作目录到文件
2.2.5 常见的目录操作
创建、删除、打开、关闭、读目录、重命名目录
3. 文件系统的实现
文件系统通常是以2的n次方个连续的扇区为单位对文件进行磁盘空间的分配
把分配给文件的连续扇区构成的磁盘块称为簇。
3.1 实现文件
文件存储的四种方式
3.1.1 连续分配
把每个文件作为一连串的数据块放在磁盘上
优点:
1. 实现简单,记录每个文件用到的簇仅需存储两个数字即可:第一块的磁盘地址和文件的块数。
2. 读操作性能好,在单个操作中就能从磁盘上读取整个文件。
缺点:
磁盘变得零碎,空闲的连续簇形成“空洞”。
3.1.2 磁盘链接表
为每个文件构造簇的链接表,每个簇开始的几个字节用于存放下一个簇的簇号
簇的其他部分存放数据,每个文件可以存放在不连续的簇中。
优点:充分利用每个簇,不会因为磁盘碎片而浪费空间,管理也比较简单。
缺点:随机存取相当缓慢,要获得文件的第n块,每一次都要从头开始读取前面的n-1块。
3.1.3 内存的链接分配表
将文件所在的磁盘的簇号放在内存的表(文件分配表)中
缺点:必须把整个表都存放在内存中,磁盘容量很大时,表占的内存比较大
3.1.4 i - 结点
为每个文件赋予一个被称为i结点的数据结构,其中列出了文件属性和文件块的磁盘地址
3.2 实现目录
1. CP / M中的目录
CP/M以簇而不是以字节为单位来记录文件长度的
2. MS-DOS中的目录
使用文件分配表FAT作为索引表来存放文件数据所在簇的簇号
3. UNIX中的目录
3.3 磁盘空间管理
簇大小:文件系统为文件分配磁盘空间以簇为单位
簇大小过大:容易造成空间浪费
簇大小过小:文件跨越簇,访问文件时间延长
记录空闲块:跟踪记录空闲块的两种常用方法
空闲簇链接表:用一些空闲簇存放空闲簇的簇号