4.2.1 文件系统层次结构
1、用户调用接口
4.2.2 目录实现
1、线性列表
把文件名组织成一个线性表,查找的时候依次与线性表中每个表项进行比较。
2、哈希表
文件名通过哈希函数得到一个指向文件的指针,这种方法非常迅速,但是要注意避免冲突。
4.2.3 文件实现
1、文件分配方式
1)连续分配方式
把每个文件作为一连串连续数据块存储在磁盘上。所以,在块大小为1KB的磁盘上,50KB的文件要分配50个连续的块。块大小为2KB的磁盘,要分配25个连续的块。
优点:
实现简单,存取速度快
缺点:
不利于增删,反复增删会产生外部碎片
2)链接分配
连接分配采用 离散分配方式,有 隐式链接
和 显式链接
两种方式。
(1)隐式链接
优点: 消除了外部碎片,显著提高了磁盘利用率,对增删改也非常方便
缺点: 无法直接访问盘块,只能通过指针顺序访问文件
(2)显式链接
显式链接是把隐式链接各物理块的指针,从每个物理块的块末尾提取出来,显式的存放在内存的一张链接表中 该表为 文件分配表(FAT)
表项与磁盘块一一对应 整个磁盘仅有一张表
-1
表示 文件的最后一块
-2
表示 磁盘块 空闲
FAT表在系统启动时 就被装入内存
优点:
不仅记录了文件各块之间的先后联系,也记录了空闲盘块,不会有碎片,支持随机访问
3)索引分配
为了解决链接分配不能支持直接访问(FAT除外)
索引分配解决了这个问题。
把所有文件的磁盘块号集中存放在一起
构成索引表
2、文件存储空间管理
1、空闲表法
(连续分配)
把所有空闲块组织成表
2、空闲链表法
主要有两种形式:空闲盘块链
空闲盘区链
空闲盘块链
(适用于离散)
空闲盘区链
(适用于离散、连续均可)
- 空闲盘区链将磁盘上的所有 空闲盘区 拉成一条链
(每个空闲盘区可包含若干盘块)
3、位示图法
一个字长为16bit,每个bit代表一个盘块
0 表示 空闲
1 表示 已分配
4、成组链接法
空闲链表法
和 空闲表法
都不适用于 大型文件系统
UINIX系统采用的是 成组链接法