OS-李治军-L29-从生磁盘到文件

从生磁盘到文件

我们是如何使用磁盘的?反正不是根据盘块号,而是根据文件。这里引出了问题:如何从文件得到盘块号呢?
这是第三层抽象,也就是将盘块号抽象为文件,这层抽象后叫做cooked disk。
用户眼中的文件就是一堆字符~,所以要建立字符流到盘块的映射关系。

  • 连续结构下的文件:字符在盘块上连续存放,要查找某个文件的字符,则对应的盘块号=字符序号 % 盘块大小 + 文件对应的起始盘块号。这些信息放在FCB内。

    这样就建立好了映射关系~。
    连续也很有问题,如果后续需要添加字符,而空间不够用了,就要整块添加到一块新的空闲区上。所以,这种实现的文件不适合动态变化,比较适合只读文件,毕竟查找的速度非常快。

  • 链式结构下的文件:文件在盘块上以链式结构保存~,FCB中保存头个盘块,而每个盘块找得到下一个盘块。性质与连续结构恰恰好相反。

  • 索引结构下的文件:就是用一个盘块专门来做索引,在FCB中放置这个盘块号就行了~,速度较快,然后也适合增改。

    实际系统中使用的基本都是基于索引结构,做了一些变化,成为多级索引。
    小的-直接映射。
    中等的-映射到一个新的表上。
    大的-多次映射。

posted @ 2020-11-07 23:54  HermioneGranger  阅读(280)  评论(0)    收藏  举报