| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:虚拟文件系统(VFS)的一点介绍
只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
 问题点数:0 回复次数:0 
虚拟文件系统(VFS)的一点介绍
下面使对Linux kernel development 13章第一节的归纳
虚拟文件系统(VFS)是内核的子系统,它实现文件和文件系统相关的接口来提供给用户空间的程序,

所有文件系统都依靠虚拟文件系统来互相共存,

互相沟通.其实让open(),read(),write()之类的系统调用工作于不同文件系统之间是见了不起的事情。

在早早期的操作系统中,比如DOS,除非有特殊工具,

否则想通过标准的系统调用把一个文件复制到另一个文件系统中是无法做到的。

但是在现代操作系统中,比如Linux,它通过一个虚拟的界面(virtual interface)抽象了对文件系统的访问,

使操作和一般的访问变的可能。


VFS提供了一种通用的文件模型可以来表示任何文件系统的通用特性和行为(behavior)。

对于内核和VFS曾来说,每种文件系统都支持文件,文件夹,都支持创建,删除文件。

举个例子

ret = write(fd, buf, len);

write()系统调用被sys_write()接管,这个系统调用通过fd确定需要写入的文件在哪个文件系统上,然后调用那个文件系统上相关方法。


VFS又包含了四种主要对象

1.  superblock object 用来表示一个特别的(specific)被挂载的文件系统

2.  inode object 用来表示一个特别的文件

3. dentry object, 用来表示文件夹的entry

4. file object 用来表示和进程关联的一个open file

各种操作对象(operations object)又包含在上面提到的主要的对象中

比如 file object 中的 file_operations 对象,它里面包含了很多可以

让进程在open file中唤醒(invoke) 的方法(methods),比如read(),write()


[ 本帖最后由 madfrogme 于 2012-7-25 02:55 编辑 ]
搜索更多相关主题的帖子: write Linux interface 系统 
2012-07-25 01:28
快速回复:虚拟文件系统(VFS)的一点介绍
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018542 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved