VFS如何知道要调用哪个底层文件系统函数?

问题描述:

当我们在linux终端上启动一个命令时,创建的进程就会遍历VFS层,它决定哪个文件系统函数被称为ext4,ext3或其他文件系统。所以我的问题是VFS如何区分文件系统?形成VFS获取文件系统信息的位置,它是task_struct中的fs_struct,告诉VFS?VFS如何知道要调用哪个底层文件系统函数?

+0

在可以访问文件系统之前,必须先挂载它。此挂载操作是文件系统信息的来源。 – sawdust 2014-10-07 07:16:21

作为FS实现的一部分,您需要实现文件,inode,超级块操作,这将在VFS层中注册底层FS操作(例如:ext3_open())。根据提供给o​​pen()的文件的路径,VFS将调用适当的文件系统特定的系统调用实现。

假设你已经挂载了一个文件系统,当你挂载一个文件系统时,在模块初始化期间,你使用VFS层为FS注册特定的操作。在这一步中,两个处理程序get_sb()和kill_sb()。在安装文件系统时调用get_sb()。 kill_sb()在卸载文件系统时被调用。

欲了解更多信息,请参阅RKFS并查看文件操作如何与数据流图一起实施。