5.fat 和 unix 文件系统
把文件看成虚拟的磁盘,文件系统理解成虚拟磁盘的索引机制,就不难理解文件系统的设计。至此,我们已经有了足够的背景知识,可以去考虑如何在真正的存储设备上实现文件系统了。
前面知道文件系统是什么。
这里研究如何实现文件系统。
文件系统实现分析
FAT 文件系统
UNIX 文件系统
充满了数据结构。
磁盘上的数据结构
文件的实现:
文件就是虚拟的磁盘,支持的操作就是,读出来,写进去,改变文件大小。至于里面数据是什么,应用程序来负责,再做一层抽象也行。可以是文本文件,
API:read,write,ftruncate
目录的实现
目录就是一层一层文件的集合。每个目录就是若干个文件和子目录的集合,这是一个动态可变的结构
API:mkdir,rmdir,readdir,link,unlink
思考,如何实现 mount?即如何把一个目录(结点)挂载上另外一个磁盘。
理论上来说,hack 一下遍历目录的 api 。作为一个应用程序,一开始只能找到 /
,所有的其他目录都是通过路劲的解析得到的,路径解析的时候,操作系统是知道哪个目录被替换掉的。
mount 最好是由操作系统统一管理,而不是由具体的文件系统来实现。
最后更新于
这有帮助吗?