网站大量收购独家精品文档,联系QQ:2885784924

虚拟文件系统.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
虚拟文件系统 一基本概念 传统的操作系统仅能支持一种类型的文件系统,随着信息技术的发展和应用需求的增长,对文件系统的使用提出了新的要求,例如,要求在UNIX系统中支持非UNIX类文件系统,以便运行UNIX的机器上也可访问DOS分区;要求Windows 2000/XP支持高性能文件系统的同时支持FAT文件系统;Linux在设计时便瞄准能同时支持几十种文件系统;随着网络的发展,迫切要求计算机之间共享网络文件系统;甚至一些用户希望能定制自己的文件系统。 为了能同时支持多种文件系统,不同操作系统采用不同技术方案来提供虚拟文件系统,它要实现以下目标:把多种个文件系统纳入统一框架中,不同的磁盘分区可以包含不同的文件系统,对它们的使用和传统单一文件系统没有区别;用户可以通过同一组系统调用来对不同的文件系统及文件进行操作,更进一步,系统调用可以跨物理介质和跨文件系统执行,如从一个文件系统拷贝或移动数据到另一个文件系统;对网络共享文件提供完全支持,访问远程节点上的文件应与访问本地节点的文件一致;开发出新的文件系统后,可以模块方式加入到操作系统中。 虚拟文件系统VFS也称为虚拟文件系统开关(Virtual filesystem Switch),它是内核的一个子系统,提供了一个通用文件系统模型,该模型囊括了所能见到的文件系统常用功能和行为,并为应用程序提供一致性的文件系统接口,安装的所有物理文件系统不但依赖于VFS共存,而且也依靠VFS协同工作。它的主要设计思想有以下3点: (1)应用层:VFS模型源于UNIX文件系统,使得用户可以直接使用标准UNIX文件系统调用来操作文件,无需考虑具体文件系统特性和物理存储介质,通过VFS访问文件系统,才使得不同文件系统之间的协作性和通用性成为可能。 (2)虚拟层:在对所有具体文件系统的共同特性进行抽象的基础上,形成一个与具体文件系统实现无关的虚拟层,并在此层次上定义与用户的一致性接口; (3)实现层:该层使用类似开关表技术进行具体文件系统转接,实现各种文件系统的物理操作细节,每个文件系统是自包含的,包含文件系统实现的各种设施,如超级块、节点区、数据区以及各种数据结构和文件类的操作函数。 一般地说,VFS提供以下功能: ?记录可用的文件系统类型; ?把文件系统与对应的存储设备联系起来; ?处理面向文件的通用操作; ?涉及具体文件系统的操作时,把它们映射到相关的具体文件系统。 VFS抽象层之所以能衔接各种不同的文件系统,是因为它定义了所有文件系统都支持的基本抽象接口和数据结构,同时具体的文件系统也将自己的诸如“文件如何打开”、“目录如何定义”等概念在形式上与VFS的定义保持一致。对于像FAT和NTFS这类非UNIX风格文件系统,必须经过封装,提供符合VFS概念的接口。比如,一个文件系统不支持inode概念,它也必须在内存中装配inode结构体,就像它本身包含inode一样。这些装配和转换需要在使用现场引入特别处理,使得非UNIX文件系统能够兼容UNIX文件系统的使用规则和满足VFS的需求,这样一来,非UNIX文件系统便可与VFS一道工作,只是性能上会有少许影响。 下面看一个文件操作的例子,假如应用程序执行如下文件操作:write(fd,buf,len);要求将buf指针指向的、长度为len字节的数据写入文件描述符fd对应的文件的当前位置。用户执行的系统调用首先被VFS的sys_write( )处理,该函数首先处理一些与设备无关的操作,并找到f所在的文件系统,再根据VFS结构及它的inode数据结构提供的信息,重定向到具体文件系统中相对应的写函数,由它来处理与特定设备相关的操作,并把数据写到物理介质。 二实例研究:Linux文件系统 标准文件类系统调用,open( )、read( )、write( )、close( )等 标准文件类系统调用,open( )、read( )、write( )、close( )等 用户空间 应用程序 系统空间 VFS 系统调用对应的内核函数,sys_open( )、sys_read( )、sys_write( )、sys_close( )等 Minix 文件系统 Ext2 文件系统 … Fat 文件系统 具体文件系统对应的文件操作函数,open( )、read( )、write( )、close( )等 应用层 虚拟层 实现层 图6- Linux 虚拟文件系统模型 缓冲区缓存 磁盘驱动器 索引节点缓存 目录高速缓存 Linux VFS采用了面向对象设计思想,文件系统中定义的VFS相当于面向对象系统中的抽象基类,从它出发可以派生出不同的子类,以支持多种具体文件系统,但从效率考虑内核纯粹使用C语言编程,故并没有直接利用面向对象的语义。下面的讨论使用了术语“对象”,实际上是一个结

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档