知识结构
- 目录物理实现
- 哈希
- 线性表
- 文件实现
- 文件分配方式
- 连续分配
- 链接分配
- 隐式
- 显式
- 索引分配
- 链接
- 多层索引
- 混合索引
- 文件存储空间管理
- 空闲表法
- 空闲链表法
- 位示图法
- 成组链接法
- 文件分配方式
目录物理实现
按名搜索,按照路径找到相应表项;
线性列表
一个被存储的表项包括存储文件名和数据块指针,以此组织成线性表;
创建新文件需要搜索目录确定没有重名的文件,之后添加一个表项;
哈希
根据文件名映射到一个文件;
特点
- 线性表:实现简单,采用链表还可以减少删除文件的时间,但是比较费时
- 哈希:查找迅速,插入和删除简单,但是需要避免冲突;
文件实现
文件分配方式
连续分配
每个文件在磁盘上占有一组连续块,一个目录项包含开始块的地址和文件占有的块数目;
链接分配
- 隐式链接:每个文件对应一个磁盘块的链表,抽象为目录项就是,一个目录项包含文件第一块的指针和最后一块的指针
- 显式链接:使用一个FAT,其中每一项指示当前盘块所链接的下一盘块的盘块号,-1表示文件最后一块,-2表示空闲块(所以FAT其实也可以用来管理空闲磁盘存储空间),一般默认FAT在内存中;
索引分配
一般每个文件有一个索引块(索引节点、inode),也就是一个磁盘块,它存储着很多目录项(也就是索引),每一项用来指示一个逻辑块到物理块的地址;
- 链接方案,为了支持大文件,使用多个磁盘块(索引块)链接在一起,来实现逻辑块号到物理块号的映射;
- 多层索引,能支持大文件,又一定程度的减少了索引块的开销;第一层索引指向第二层索引,依次类推;
- 混合索引;文件目录逻辑结构中,为了减少I/O磁盘开销,将FCB(一个目录项)划分为文件索引和索引节点,其中索引节点中使用的就是混合索引(13个地址项);
特点
- 连续分配,支持顺序访问和随机访问,实现简单、存取速度最快(一次),但不支持文件扩展,并且存在外部碎片;
- 链接分配,便于实现文件的扩展(增删改),隐式链接仅支持顺序访问,显示链接(FAT)支持随机、顺序访问,没有外部碎片;
- 索引分配,支持顺序访问和随机访问,文件易于增删,没有外部碎片,但是索引表增加了系统存储开销,索引表的查找策略对系统效率影响较大;
空闲存储空间管理
空闲表法
连续分配,系统为外存上的所有空闲区建立一张空闲盘块表,表项包含空闲区的第一个盘块号,所占盘块数等;分配与内存的动态分配类似,为每个文件分配一块连续的存储空间,分配策略与内存动态分配一样,有首次适应算法、最佳适应算法等;
空闲链表法
所有空闲区形成一条链,形成的链有两种形式,空闲盘块链,每个结点是一个空闲盘块,空闲盘区链,每个结点是一个包含若干块盘块的空闲区,分配策略与内存的动态分配相似;
位示图法
用一个二进制位表示一个盘块是否被使用;
成组链接法
见课本,出现频率似乎非常低;
特点
- 空闲表法:分配顺序的存储空间,不支持大文件系统,会使空闲表很大;
- 空闲链表法:可以不连续,不支持大文件系统,会使空闲链表很大;分配回收较方便;
- 成组链接法:支持大文件系统。