Chinaunix首页 | 论坛 | 博客
  • 博客访问: 195068
  • 博文数量: 55
  • 博客积分: 2330
  • 博客等级: 大尉
  • 技术积分: 504
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 22:55
文章分类

全部博文(55)

文章存档

2013年(6)

2012年(7)

2011年(7)

2010年(35)

我的朋友

分类: LINUX

2010-09-12 23:06:49

Encyclopedia
virtual file system (VFS) or virtual filesystem switch is an abstraction layer on top of a more concrete . The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way. A VFS can, for example, be used to access local and network storage devices transparently without the client application noticing the difference. It can be used to bridge the differences in ,  and  filesystems, so that applications can access files on local file systems of those types without having to know what type of file system they are accessing.

A VFS specifies an  (or a "contract") between the kernel and a concrete file system. Therefore, it is easy to add support for new file system types to the kernel simply by fulfilling the contract. The terms of the contract might change incompatibly from release to release, which would require that concrete file system support be recompiled, and possibly modified before recompilation, to allow it to work with a new release of the operating system; or the supplier of the operating system might make only backward-compatible changes to the contract, so that concrete file system support built for a given release of the operating system would work with future versions of the operating system.

Implementations


One of the first virtual file system mechanisms in  systems was introduced by  in  2.0 in 1985. It allowed Unix system calls to access local  file systems and remote NFS file systems transparently. For this reason, Unix vendors who licensed the NFS code from Sun often copied the design of Sun's VFS. Other file systems could be plugged into it also: there was an implementation of the   file system developed at Sun that plugged into the SunOS VFS, although it wasn't shipped as a product until SunOS 4.1. The SunOS implementation was the basis of the VFS mechanism in System V Release 4.

John Heidemann developed a stacking VFS under SunOS 4.0 for the experimental Ficus file system. This design provided for among file system types with differing but similar semantics (e.g., an encrypting file system could reuse all of the naming and storage-management code of a non-encrypting file system). Heidemann adapted this work for use in 4.4BSD as a part of his  research; descendants of this code underpin the file system implementations in modern BSD derivatives including .

Other Unix virtual file systems include the File System Switch in System V Release 3, the Generic File System in , and the VFS in . In  and , the virtual file system mechanism is called the .

The  (FUSE) mechanism allows userland code to plug into the virtual file system mechanism in Linux, , , and Mac OS X.

In Microsoft Windows, virtual filesystems can also be implemented through userland Shell namespace extensions; however, they do not support the lowest-level file system access s in Windows, so not all applications will be able to access file systems that are implemented as namespace extensions.  and / provide similar mechanisms in the  and  desktop environments (respectively), with similar limitations, although they can be made to use FUSE techniques and therefore integrate smoothly into the system.

Single-file virtual file systems


Sometimes Virtual File System refers to a file or a bunch of files (not necessarily inside a concrete file system) that acts as a manageable container which should provide the functionality of a concrete file system through the usage of a software. Examples of such containers are SolFS or a single-file virtual file system in an emulator like PCTask or so-called WinUAE, Sun's , Microsoft's Virtual PC, .

The primary benefit for this type of file system is that it is centralized and easy to remove. A single-file virtual file system may include all the basic features expected of any file system (virtual or otherwise), but access to the internal structure of these file systems is often limited to programs specifically written to make use of the single-file virtual file system (instead of implementation through a driver allowing universal access). Another major drawback is that performance is relatively low when compared to other virtual file systems. Low performance is mostly due to the cost of shuffling virtual files when data is written or deleted from the virtual file system.

Implementation of single-file virtual filesystems


Direct examples of single-file virtual file systems include emulators, such as PCTask and WinUAE, which encapsulate not only the filesystem data but also emulated disk layout. This makes it easy to treat an OS installation like any other piece of software—transferring it with removable media or over the network.

PCTask


The Amiga emulator PCTask emulated an Intel PC  based machine clocked at 4.77MHz (and later an 80486SX clocked at 25 MHz). Users of PCTask could create a file of large size on the Amiga filesystem, and this file would be virtually accessed from the emulator as if it were a real PC Hard Disk. The file could be formatted with the FAT16 filesystem to store normal MS-DOS or Windows files.

WinUAE


The UAE for , WinUAE, allows for large single files on Windows to be treated as Amiga file systems. In WinUAE this file is called a hardfile.

UAE could also treat a directory on the host filesystem -- (, , , ) -- as an Amiga filesystem.

whefs


whefs () is an  C library for -compliant operating systems which provides features for accessing and manipulating a single-file virtual file system from within  and C++ applications.
阅读(1146) | 评论(1) | 转发(0) |
0

上一篇:Fuse study(3)

下一篇:C语言未定义行为

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

chinaunix网友2010-09-13 15:12:31

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com