5.fat 和 unix 文件系统

把文件看成虚拟的磁盘,文件系统理解成虚拟磁盘的索引机制,就不难理解文件系统的设计。至此,我们已经有了足够的背景知识,可以去考虑如何在真正的存储设备上实现文件系统了。

前面知道文件系统是什么。

这里研究如何实现文件系统。

  • 文件系统实现分析

  • FAT 文件系统

  • UNIX 文件系统

充满了数据结构。

磁盘上的数据结构

  • 文件的实现:

    • 文件就是虚拟的磁盘,支持的操作就是,读出来,写进去,改变文件大小。至于里面数据是什么,应用程序来负责,再做一层抽象也行。可以是文本文件,

    • API:read,write,ftruncate

  • 目录的实现

    • 目录就是一层一层文件的集合。每个目录就是若干个文件和子目录的集合,这是一个动态可变的结构

    • API:mkdir,rmdir,readdir,link,unlink

思考,如何实现 mount?即如何把一个目录(结点)挂载上另外一个磁盘。

理论上来说,hack 一下遍历目录的 api 。作为一个应用程序,一开始只能找到 /,所有的其他目录都是通过路劲的解析得到的,路径解析的时候,操作系统是知道哪个目录被替换掉的。

mount 最好是由操作系统统一管理,而不是由具体的文件系统来实现。

最后更新于

这有帮助吗?