linux面向对象设计,linux VFS 之一 :虚拟文件系统的面向对象设计思想

VFS的面向对象的思想,如下图:

VFS在上层用户空间的进程与底层特定文件系统之间起到一个承上启下的作用,

对上:封装标准的系统调用接口给用户空间app,user space app不必关心特定文件系统的实现细节。

对下:抽象出标准的开发接口给真实文件系统,只要实现这些接口,就可以实现一个新的真实文件系统。

3be4249f8f84bcb67ac7e07d3af2edc2541.jpg

VFS对下特定文件系统提供的通用模型superblock, inode, dentry, file ,它们与进程之间交互关系如下图:

23bc388175916aeec6f9b87a95ac00d545c.jpg

摘自《深入理解linux内核》

理解进程与vfs对象之间的关系很重要:

进程每打开一个文件,就会有一个file结构与之对应。同一个进程可以多次打开同一个文件而得到多个不同的file结构,

多个进程也可以打开同一个文件得到多个不同的file结构。

file结构描述了被打开文件的属性,读写的偏移指针等等当前信息。

在存储介质中,每个文件对应唯一的inode结点,但是,每个文件又可以有多个文件名(ln建创链接)。即可以通过不同的文件名访问同一个文件。这里多个文件名对应一个文件的关系在数据结构中表示就是dentry和inode的关系。

Inode中不存储文件的名字,它只存储节点号;而dentry则保存有名字和与其对应的inode,所以就可以通过不同的dentry访问同一个inode。

http://blog.csdn.net/fybon/article/details/23849947

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值