OS-李治军-L29-从生磁盘到文件
从生磁盘到文件
我们是如何使用磁盘的?反正不是根据盘块号,而是根据文件。这里引出了问题:如何从文件得到盘块号呢?
这是第三层抽象,也就是将盘块号抽象为文件,这层抽象后叫做cooked disk。
用户眼中的文件就是一堆字符~,所以要建立字符流到盘块的映射关系。
-
连续结构下的文件:字符在盘块上连续存放,要查找某个文件的字符,则对应的盘块号=字符序号 % 盘块大小 + 文件对应的起始盘块号。这些信息放在FCB内。
![]()
这样就建立好了映射关系~。
连续也很有问题,如果后续需要添加字符,而空间不够用了,就要整块添加到一块新的空闲区上。所以,这种实现的文件不适合动态变化,比较适合只读文件,毕竟查找的速度非常快。 -
链式结构下的文件:文件在盘块上以链式结构保存~,FCB中保存头个盘块,而每个盘块找得到下一个盘块。性质与连续结构恰恰好相反。
![]()
-
索引结构下的文件:就是用一个盘块专门来做索引,在FCB中放置这个盘块号就行了~,速度较快,然后也适合增改。
![]()
实际系统中使用的基本都是基于索引结构,做了一些变化,成为多级索引。
小的-直接映射。
中等的-映射到一个新的表上。
大的-多次映射。
![]()





浙公网安备 33010602011771号