Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251595
  • 博文数量: 16
  • 博客积分: 345
  • 博客等级: 一等列兵
  • 技术积分: 611
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-19 00:16
文章分类

全部博文(16)

文章存档

2013年(2)

2012年(14)

我的朋友

分类: LINUX

2013-01-21 17:01:20

    文件系统一般可以分为下面3种。

    (1)基于磁盘的文件系统(Disk-based Filesystem是在非易失介质上存储文档的经典方法,用以在多次会话之间保持文件的内容。实际上,大多数文件系统都由此演变而来。比如,一些众所周知的文件系统,包括Ext2/3ReiserfsFATiso9660。所有这些文件系统都使用面向块的介质,必须解决以下问题:如何将文件内容和结构信息存储在目录层次结构上。在这里我们对与底层设备通信的方法不感兴趣,内核中对应的驱动程序对此提供了统一的接口。从文件系统的角度来看,底层设备无非是存储块的一个列表,文件系统相当于对该列表实施一个适当的组织方案。

    (2)虚拟文件系统(Virtual Filesystem在内核中生成,是一种使用户应用程序与用户通信的方法。proc文件系统是这一类的最佳实例。它不需要在任何种类的硬件设备上分配存储空间。相反,内核建立了一个层次化的文件结构,其中的项包含了与系统特定部分相关的信息。举例来说,文件/proc/version在用ls命令查看时,标称长度为0字节。

        

    但如果使用cat输出文件内容,内核会产生一个有关系统处理器的信息列表。这列表从内核内存中的数据结构提取而来。

        

    (3)网络文件系统(Network Filesystem是基于磁盘的文件系统和虚拟文件系统之间的折中。这种文件系统允许访问另一台计算机上的数据,该计算机通过网络连接到本地计算机。在这种情况下,数据实际上存储在一个不同系统的硬件设备上。这意味着内核无需关注文件存取、数据组织和硬件通信的细节,这些由远程计算机的内核处理。对此类文件系统中文件的操作都通过网络连接进行。在进程向文件写数据时,数据使用特定的协议(由具体的网络文件系统决定)发送到远程计算机。接下来远程计算机复制存储传输的数据并通知发送者数据已经到达。

    尽管如此,即使在内核处理网络文件系统时,仍然需要文件长度、文件在目录层次中的位置以及文件的其他重要信息。它必须也提供函数,使得用户进程能够执行通常的文件相关操作,如打开、读、删除等。由于VFS抽象层的存在,用户空间进程不会看到本地文件系统与网络文件系统之间的区别。

阅读(4622) | 评论(0) | 转发(0) |
0

上一篇:C++ UML Tips

下一篇:无持久存储的文件系统

给主人留下些什么吧!~~