当我们在linux终端上发出命令时。这样创建的进程遍历到VFS层,在那里它决定调用哪个文件系统函数,如ext4,ext3或任何其他文件系统。所以我的问题是VFS如何区分文件系统? VFS获取文件系统信息的形式,是task_struct中告诉VFS的fs_struct吗?
答案 0 :(得分:3)
作为FS实现的一部分,您需要实现文件,inode,超级块操作,这些操作将使用VFS层注册底层FS操作(例如:ext3_open())。根据提供给open()的文件的路径,VFS将调用syscall的相应文件系统特定实现。
假设您已经安装了文件系统,在安装文件系统时,您在模块初始化期间使用VFS层注册FS以进行特定操作。在此步骤中,两个处理程序get_sb()和kill_sb()。在安装文件系统时调用get_sb()。在卸载文件系统时调用kill_sb()。
有关更多信息,请参阅RKFS并查看文件操作的实现方式以及数据流图。