文件系统

第五章 文件系统

文件

文件系统的用户接口包括文件的 命名类型属性对文件的操作

文件命名

所有操作系统都允许使用 1-8个字母组成的字符串

多数操作系统都支持文件名用 圆点 隔开分为两部分,圆点后面的部分称为 文件扩展名

文件结构

  1. 无结构字节序列(流式文件):
    • 代表:Windows、Unix;
    • 优点:提供灵活性
  2. 固定长度记录序列:
    • 中心思想:读操作返回一个记录,写操作重写或追加一个记录
  3. 树形结构:
    • 记录长度不定;
    • 在记录的固定位置包含一个 关键字域
    • 记录树 按关键字域排序

文件类型

  1. 正规文件,分类:
    • ASCII文件:可显示和打印,通常的文件编辑器可边际;
    • 二进制文件,不能直接显示和打印,需要专门编辑器;
  2. 目录 文件:管理文件系统的 系统文件
  3. 字符设备 文件:和 输入输出 有关;
  4. 块设备 文件:用于 磁盘类 设备;

文件存取

  1. 顺序存取:早期,从文件开始处读取信息,不能跳过;
  2. 随机存取:又称直接存取,可以以任意顺序读取文件信息;

文件属性

除了文件名和文件数据外,其他与文件相关的信息,如创建日期、文件大小、修改时间等。

文件操作

命令 功能
CREATE 创建
DELETE 删除(释放磁盘空间)
OPEN 打开
CLOSE 关闭
READ
WRITE
APPEND 在末尾写
SEEK 找到读取位置
GETATTRIBUTES 获取文件属性
SETATTRIBUTES 设置文件属性
RENAME 重命名

目录

目录是文件系统中实现 按名访问 的重要数据结构。

目录文件的结构

目录文件有两种常见的结构:属性放在 目录项 中和放在 i结点 中。

i结点:包含 文件属性文件块的磁盘地址 的数据结构。

目录文件的结构.png

目录结构

单层目录(根目录)

问题:文件命名、搜索效率低

单层目录(根目录).png

两级目录

优点:解决重名问题,查找快

问题:增加系统开销

两级目录.png

树形目录

优点:

  1. 便于文件分类
  2. 层级结构清晰
  3. 便于管理和保护
  4. 解决重名问题
  5. 查找速度快

问题:结构相对复杂

树形目录.png

路径名

采用 树形目录 时,需要有某种方法指明文件。

绝对路径名:从根目录到文件

相对路径名:从当前工作目录到文件

目录操作

命令 功能
CREATE 创建
DELETE 删除
OPENDIR 打开,列出目录中的文件和子目录的前提
CLOSEDIR 关闭
READDIR 以标准格式返回打开目录的下一级目录项
RENAME 重命名

文件系统的实现

实现文件

文件系统通常是以 2的n次方个连续的扇区 为单位对文件进行磁盘空间的分配,把 分配给文件的连续扇区 构成的 磁盘块 称为

文件存储的常用方式:

  1. 连续分配;
  2. 磁盘链接表;
  3. 内存的链接分配表;
  4. i-结点;

连续分配

把每个文件作为一连串的数据块放在磁盘上。

优点:

  1. 实现简单,记录每个文件用到的簇仅需存储两个数字即可:第一块的磁盘地址文件的块数
  2. 读操作性能好,在单个操作中就能从磁盘上读取整个文件;

缺点:磁盘变得零碎,空闲的连续簇形成 空洞

文件存储方式-连续分配.png

磁盘链接表

为每个文件构造簇的 链接表,每个簇开始的几个字节用于存放下一个簇的簇号,簇的其他部分存放数据,每个文件可以存放在不连续的簇中。

缺点:随机存取相当缓慢,要获得文件的第n块,每一次都要从头开始读取前面的n-1块。

文件存储方式-磁盘链接表.png

内存的链接分配表

将文件所在的磁盘的簇号放在内存的表(文件分配表)中。

典型:MS-DOS

缺点:必须把 整个表都存放在内存 中,磁盘容量大时,表占的内存比较大。

文件存储方式-内存的链接分配.png

i-结点

为每个文件赋予一个被称为 i结点 的数据结构,其中列出了 文件属性文件块的磁盘地址

文件存储方式-i-结点.png
文件存储方式-i-结点例题.png

实现目录

  1. CP/M 中的目录:以 为单位来记录文件长度;
  2. MS-DOS 中的目录:使用 文件分配表FAT 作为索引表来存放文件数据所在簇的簇号;
  3. UNIX 中的目录;
文件系统的目录实现.png

磁盘空间管理

磁盘空间管理是文件系统的重要功能,包括记录空闲磁盘信息、设计文件的存放方式,以及规定文件系统的 簇大小 等内容。

簇大小:文件系统为文件分配磁盘空间以 为单位。

簇大小过大:容易造成空间浪费。

簇大小过小:文件跨越簇,访问文件时间延长。

一般簇大小是 2的整数次幂连续的扇区

记录空闲块,跟踪记录空闲块的两种常用方法:

  1. 空闲簇链接表:用一些空闲簇存放空闲簇的簇号;
  2. 位图:用 n位 位图对应磁盘的 n个簇
    • 1:表示空闲簇;
    • 0:表示已分配簇;

你可能感兴趣的:(文件系统)