操作系统想要管理磁盘必须依赖一套文件系统。文件系统是一套规则,这套规则规定了操作系统如何读写磁盘上的数据(文件)。当操作系统有数据要存到磁盘时,会按照文件系统的规定把数据存到磁盘的某个位置。当操作系统需要读取数据的时候,会按照文件系统的规定找到数据的位置进而读取数据。
我认为文件系统主要涉及两个方面,磁盘格式和读写策略。磁盘格式规定了磁盘的划分和数据的存储方式,属于静态规则。读写策略是在磁盘格式的基础上,规定操作系统如何新建文件、修改文件、删除文件,属于动态规则。
世界上已经有很多种文件系统了,FAT系列、NTFS、Ext系列、XFS等。如果只是编写应用程序完全不用了解这些文件系统的细节,只需要调用操作系统提供的API读写文件即可。但编写一个操作系统,就必须了解文件系统的所有细节,因为没人为你提前做好工作了。
本来NakedOS可以使用一套成熟的文件系统。不过因为我不精通任何一套现有操作系统(居然说的这么理直气壮~~)。另外我不想花费精力去学习一套现有的文件系统,原因是我认为那些文件系统都是大神定稿,经过数十年的打磨而成,必定是极其复杂,穷俺一生也不一定能透彻地掌握。因此我决定为NakedOS单独设计一个文件系统--NakedFS。NakedFS的设计原则是简单实用(能满足NakedOS就可以了),并且容易理解人人都能看懂。
目前NakedFS磁盘格式的设计已经上传至git库。请各位小伙伴批评指正。
克隆地址:https://gitee.com/nakedos/NakedOS.git