Linux 的虚拟文件系统(真正理解“一切皆文件”)
对文件举办读操纵时,必要先打开它。从3.1小结可知,打开一个文件时,会在内存组装一个文件工具,但愿对该文件执行的操纵要领已在文件工具配置好。以是 对文件举办读操纵时,VFS在做了一些简朴的转换后(由文件描写符获得其对应的文件工具;其焦点头脑是返回 current->files->fd[fd]所指向的文件工具),就可以通过语句 file->f_op->read(file, buf, count, pos)轻松挪用现实文件体系的响应要领对文件举办读操纵了。 4 办理题目 4.1 跨文件体系的文件操纵的根基道理 到此,我们也就可以或许表明在Linux中为什么可以或许跨文件体系地操纵文件了。举个例子,将vfat名目标磁盘上的一个文件a.txt拷贝到ext3名目标磁 盘上,定名为b.txt。这包括两个进程,对a.txt举办读操纵,对b.txt举办写操纵。读写操纵前,必要先打开文件。由前面的说明可知,打开文件 时,VFS会知道该文件对应的文件体系名目,往后操纵该文件时,VFS会挪用其对应的现实文件体系的操纵要领。以是,VFS挪用vfat的读文件要领将 a.txt的数据读入内存;在将a.txt在内存中的数据映射到b.txt对应的内存空间后,VFS挪用ext3的写文件要领将b.txt写入磁盘;从而 实现了最终的跨文件体系的复制操纵。 4.2“统统皆是文件”的实现基础 岂论是平凡的文件,照旧非凡的目次、装备等,VFS都将它们平等对待成文件,通过统一套文件操纵界面来对它们举办操纵。操纵文件时需先打开;打开文件 时,VFS会知道该文件对应的文件体系名目;当VFS把节制权传给现实的文件体系时,现实的文件体系再做出详细区分,对差异的文件范例执行差异的操纵。这 也就是“统统皆是文件”的基础地址。 5 总结 VFS即假造文件体系是Linux文件体系中的一个抽象软件层;由于它的支持,浩瀚差异的现实文件体系才气在Linux中共存,跨文件体系操纵才气实现。 VFS借助它四个首要的数据布局即超等块、索引节点、目次项和文件工具以及一些帮助的数据布局,向Linux中不管是平凡的文件照旧目次、装备、套接字等 都提供同样的操纵界面,如打开、读写、封锁等。只有当把节制权传给现实的文件体系时,现实的文件体系才会做出区分,对差异的文件范例执行差异的操纵。由此 可见,正是有了VFS的存在,跨文件体系操纵才气执行,Unix/Linux中的“统统皆是文件”的标语才气够得以实现。 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |