文件系统

操作系统教程 第六章 文件系统

---

文件

文件类型

有普通文件、目录文件、特别文件(块设备、字符设备)

P.S.调试安卓设备的时候,用ls -l查看在proc/mtd目录,可以看到各个文件的第一个属性是b(块设备)。另外c表示字符设备打印机之类的东西。似乎Windows的文件系统没这些特性。

文件属性

文件名、权限……杂七杂八的一些信息

文件存取

顺序存取,比如磁带一般采用顺序存取,从开始到结尾按顺序来。
直接存取,一个文件可以存在多个物理块里面,可以先读这里,再读那里,不按顺序来。
索引存取,先在索引表里查找。

---

文件目录

FBC

文件所含的东西可分成两部分,一部分文件里头的数据,另外还有文件名及所有关于文件的信息,书中一起称为文件控制块(file control block)。为了达到层级的目录结构这种形式,每个目录有一个目录文件,其中有当前目录“.”和上级目录“..”两个项。

unix/linux系统的文件系统巧妙地将FCB中的文件名单独拿出来,用一个号码标识。这个号码对应了一个区域(inode)保存更详尽关于文件的信息。这样查询效率更高。

层级目录

文件目录的检索

比如查找/home/fei1/myfile.c的过程。P.S.书上写根目录通常存放在了磁盘的固定盘块中。

文件系统_第1张图片

 

---

文件组织与存储

文件的存储

卷是储存介质的物理单位。老看到卷标卷标。块是储存介质上连续信息所组成的一个区域。

文件的逻辑结构

流式和记录式,对于文件的内容,现代的操作系统都是流式的,就是不再对文件内容索引了什么了。

成组和分解,每次逻辑上要操作的数据达到一个物理块的大小之后再操作到磁盘中。

记录形式,定长、变长、跨块。

记录键,记录式文件的东西。

文件的物理结构

  • 顺序 磁带、纸带……
  • 连接 块尾给出下一个块的地址。变种把连接指针和文件数据分开。fat好像是这种。
  • 直接 hash法,关键字和地址建立对应关系,把文件名算出个hash值,然后建个索引,hash值一样的放一块,根据hash值找到之后再比对文件名。
  • 索引 索引、多重索引、unix/linux的多重索引。给每个文件保存一个索引表,直接索引表里有该文件的所占的区块。unix/linux尾部两个索引项做下一个索引的地址用。

 

连接:

文件系统_第2张图片

直接:

文件系统_第3张图片

索引:

文件系统_第4张图片

----

附注:

  • DOS 8.3文件名:https://en.wikipedia.org/wiki/8.3_filename
  • FAT 文件系统的设计:https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system

你可能感兴趣的:(文件系统)