我仍然对文件系统的具体实现方式感到困惑。
从Unix/Linux的角度来看,每个文件系统都需要自己的驱动程序吗?因此,内核中的特殊可执行代码用于与其通信。或者它只包含数据结构?
当我们使用文件系统(例如 EXT4 或 FAT)格式化 SD 卡时,我的猜测是内核能够确定其上的文件系统,因此已经具有与其通信的能力。
如果我们创建自己的新文件系统并用它格式化 SD 卡,现在会发生什么,内核如何知道如何写入它等等?提前致谢。
答案1
这个问题几乎是重复的,但是是两个独立的问题,所以我会保持简短,并请您参阅前面的问题以了解详细信息。是的,每个文件系统都需要自己的驱动程序。 (同一段代码有时可以用作类似文件系统的驱动程序;例如,Linux ext4 驱动程序也是 ext3 驱动程序。)请参阅Linux 内核如何挂载文件系统?这实际上是做什么的?更多细节。
通用文件系统支持代码根据命令mount
或系统调用的指令,并根据存储在文件系统中或文件系统外部的元数据(分区元数据 - 这很少使用,因为它非常不完整,可能不可靠,并且通常与文件系统中的元数据是冗余的)。看外部硬盘中存储的文件系统格式的信息在哪里
如果您创建自己的文件系统,则需要为其提供驱动程序。