当我们在 linux 终端上发出命令时。由此创建的进程遍历到 VFS 层,在那里它决定调用哪个文件系统函数,如 ext4、ext3 或任何其他文件系统。所以我的问题是 VFS 如何区分文件系统?从 VFS 获取文件系统信息的地方,是 task_struct 中的 fs_struct 告诉 VFS 吗?
最佳答案
作为 FS 实现的一部分,您需要实现文件、inode、 super block 操作,这将向 VFS 层注册底层 FS 操作(例如:ext3_open())。根据提供给 open() 的文件路径,VFS 将调用系统调用的适当文件系统特定实现。
假设你已经挂载了一个文件系统,当你挂载一个文件系统时,你在模块初始化期间向 VFS 层注册你的 FS 以进行特定操作。在此步骤中,两个处理程序 get_sb() 和 kill_sb()。 get_sb() 在挂载文件系统时被调用。 kill_sb() 在卸载文件系统时被调用。
有关更多信息,请参阅 RKFS并查看文件操作是如何与数据流图一起实现的。
关于linux - VFS 如何知道要调用哪些底层文件系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229268/