4.2 文件系统的实现

在这里插入图片描述

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系统采用的是 成组链接法

猜你喜欢

转载自blog.csdn.net/weixin_38220799/article/details/109263374
4.2
今日推荐