文件的物理结构探讨的是文件数据应该怎样存放在外存中
文件块
与内存管理类似,外存也进行块进行划分。文件也进行块进行划分。那么一个文件的地址就可以表示为
(块号,块内地址)
(块号,块内地址)
(块号,块内地址)
文件的分配方式
为文件分配外存的块
- 连续分配
连续分配方式就是每个文件在磁盘上占用一组连续的块。
那么FCB关于外存地址保存的就需要的起始的物理块号与块数。
支持顺序访问与随机访问。在顺序读写的时候速度是最快的。
文件的拓展不方便。连续分配存储空间利用率低。 - 隐式链接
每一块保存下一块的块号。FCB中记录起始块号与结束块号。
好处是拓展文件简单。
但只支持顺序查找,不支持随机访问。 - 显示链接FAT
维护一个特定的数据结构,每一项保存物理块号与下一块块号,用-1表示这个块是最后一个块。FCB保存起始块号就行。一个磁盘只设置一个FAT并且常驻内存。
好处是支持随机访问也支持顺序访问。同时查找块号只需要访问FAT表而不需要访问磁盘。速度也快。
缺点FAT占空间 - 索引分配
为每一个文件设置一张索引表,索引表中记录了文件各个逻辑块对应的物理块号。FCB中保存一个字段表示这个文件的索引文件所在的物理块号
如果文件太大可以使用连接的方式,将几个索引块链接起来。但文件太大,每一块都要读入。
另外一种方式是多级索引。但对大文件有利,小文件要像大文件读多次磁盘。
混合索引:开放部分直接索引地址,这部分直接指向地址块。以及间接索引指向一个索引表。二级间接索引表指向一个索引表,但这个索引表表象也指向新的索引表。
存储空间管理
还没有分配的块怎么进行管理
- 空闲表法
维护一个空闲表,每一项存储第一个空闲盘块号与空闲盘块数。
与内存管理类似,如果需要分配。可以采用首次适应等算法。
需要注意的是在回收磁盘块如何维护这个数据结构 - 空闲链表法
操作系统保存链头与链尾指针。空闲的块会保存指向下一个空闲块的指针。 - 位示图法
利用二进制为表示块是空闲的还是非空闲的。 - 成组链接法
一个块内部由下一组空闲盘块数以及空闲块号组成。一般空闲块号第一个都会保存这些信息。其他块号可以不保存信息。内存会保存一个这一个信息,成为超级块。
如果需要分配,就在超级块查找是否还有空闲块,如果有分配即可。如果这个是最后一个块,那么在将自己这个块分配出去之前,将指向下一个块的块内容复制到超级块当中。