Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288181
  • 博文数量: 56
  • 博客积分: 3025
  • 博客等级: 中校
  • 技术积分: 534
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 17:28
个人简介

Honesty and diligence should be your eternal mates.

文章分类

全部博文(56)

文章存档

2012年(1)

2011年(27)

2010年(20)

2008年(8)

分类: LINUX

2010-11-18 09:39:27

一、VFS:
   Linux系统支持几十种文件系统,为了屏蔽具体差异,便于用户使用,Linux在各文件系统之上引入了虚拟文件系统(vfs)。

A、VFS的概念:

1、VFS提供了一个通用的通用的文件系统模型,该模型能够表示Linux所支持的所有文件系统。

2、VFS屏蔽了底层操作细节,为用户提供了统一的系统调用,使得文件在不同文件系统间的移动成为可能。

3、VFS在内核中具体表现为一些抽象的数据结构和接口,各种不同的文件系统都必须提供这些接口的实现。

B、VFS对象:

  VFS用C语言实现了面向对象的设计思路,与C++等面向对象的区别仅在于,C的对象用数据结构表示,成员默认公有。VFS主要有四个对象类型:

1、struct super_block:

   表示一个已经安装的文件系统。对于磁盘文件系统,该数据结构保存在特定的扇区中,而对于一些特殊的文件系统,比如说基于内存的文件系统sysfs,会在内存中实时创建该数据结构。

2、struct inode:

   代表存储设备上的一个实际的物理文件。

3、struct dentry:

   描述了文件系统的层次结构。不管是普通文件还是目录,都有一个dentry。

4、struct file:

   文件对象代表已经被进程打开的文件,用于建立进程与文件之间的关系。他有open()创建,由close销毁。同一个物理文件可能有多个file,但只能有一个inode。

C、VFS文件对象之间的关系:

   
进程控制块task_struct的files字段存储了进程所打开的所有文件。file_struct的fd[]记录了每个打开的文件的file结构体。


阅读(885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~