【操作系统复习】文件 & 文件目录 & 索引结点

文件系统

  • 文件的属性:文件名、标识符、类型、位置等
  • 文件内部应该如何被组织起来(文件的逻辑结构)
  • 文件之间应该如何被组织起来(目录结构)
  • 操作系统应该需要提供的功能
  • 文件如何存放在外存中
  • 操作系统如何管理外存的空闲块
  • 操作系统需要提供的其他文件管理功能,文件共享,文件保护

文件的逻辑结构

文件的逻辑结构:指在用户看来文件内部的数据是如何组织起来的。
分为:

  1. 无结构文件:文件内部的数据就是二进制比特流组成
  2. 有结构文件
    由一组相似的记录组成
    结构上有三种:顺序文件、索引文件、顺序索引文件。
    顺序结构:类似线性表,一个一个按顺序排列。那么这种又可以分为链式跟顺序存储。就用数据结构线性表理解就行。额外点是记录有可能可变长,在顺序存储中,随机存取的特性将会消失。
    索引结构:对于可变长记录,不能随机访问。但是如果为其建立一个索引文件,就可以实现随机访问。因为索引表可以设置为每条记录长度相同的文件,也就是定长记录的顺序文件,那么索引文件就支持随机访问。
    索引顺序文件:索引文件问题在于,文件记录太多时候,索引文件占用的空间太大。索引顺序文件用一个键对应一组记录。而且可以建立多级的索引。

文件目录

文件目录本身是一种特殊的文件,是一种有结构文件。每一条记录为存放在这个目录下的文件控制块。

  • 文件控制块FCB
    包含文件的基本信息:文件名,物理地址,逻辑结构,物理结构,权限等等。
    最重要的就是:文件名以及物理地址。
  1. 单级目录结构
    整个系统只有一张目录表,每一个文件占用一个目录项。
    虽然实现了按名存取,但是不可以重名,同时不适合多用户目录。

  2. 两级文件目录
    分为主文件目录和用户文件目录。允许不同用户的文件重名。

  3. 多级文件目录
    呈现树状结构,不同目录下的文件可以重名。
    由根目录出发的路径称为绝对路径。
    像Linux系统,在每一个目录添加 '.'表示当前目录,可以避免从根目录查找带来的大量IO操作。

  4. 无环图目录结构
    跟多级文件目录类似。只是支持目录项指向相同的文件,有利于文件的共享。参考后面的硬链接知识点。

索引结点

索引结点的提出是为了优化文件的检索速度。

文件检索过程一般为,根据给出的文件路径,调用一级一级的目录文件查找。因为目录项的FCB有记录文件的外存地址,查找到了外存地址就可以进行读取文件。

问题在于,查找的时候只需要文件名称,而不需要其他多余的信息。而这些多余的信息会占用空间。那么原本一个外存块可以存放1000个目录文件,现在只能存放50个目录文件,在查找相同的目录文件数的情况下就需要更多的IO读取,浪费时间。

所以目录文件结构改进为文件名与指向索引结点的指针。而索引结点为FCB中除了文件名以外的其他信息。

你可能感兴趣的:(操作系统os,操作系统,os)