模拟实现 VFS 系统
摘 要:本文利用虚拟文件系统(VFS)思想,建立一个统一的接口框架。并基于此接口实
现了一个简单的文件系统。
关键词: 文件系统;面向对象;模拟;VFS;抽象接口
一、前言
文件系统作为操作系统中一个十分重要的系统,在计算机拥有着十分重要的作用。
不同的操作系统,利用各自优秀的文件系统来管理文件。如果只使用自己的电脑,不进
行交互时,用户并不会感觉到不便。但当今社会互联网发展迅速,更多的需要的是进行
交流。优秀的操作系统应该考略如何支持不同操作系统的文件系统。 Linux 设计者利用
面向对象的思想,设计出虚拟文件系统(VFS)。VFS 强制将各个文件系统束缚在同一框
架下,利用抽象统一的接口对不同的文件系统进行操作。本文根据 VFS 思想建立一个
基本的框架,并基于此实现简单的 Linux 文件系统。最终实现具体文件系统的安装,用
户登录,权限设置,创建删除文件,创建删除文件夹, 改变文件目录,列出目录项等
功能。
二、程序主要设计思路
为了能够兼容多种类型的文件系统,就要将不同的文件系统操作和控制纳入一个统
一框架。这便是本次要实现的利用面向对象思想的简单 VFS 系统。这个 VFS 系统设计
目标是要将不同具体文件系统具体实现细节隐藏,并统一采用一个接口,为应用程序采
用标准的,统一的,抽象的文件操作。
因此利用抽象类描述对文件操作的统一接口,并通过继承实现不同的文件系统,隐
藏具体实现。利用虚函数的特性进行运行中的链接定位,以支持不同的文件系统。
A、 建立如下类:
1、 FileSystem
此类用来描述具体的文件系统,利用临时快,各个操作函数可以操纵具体的
的文件系统结点。
class FileSystem
数据
string FSName;
文件系统名称
SuperBlock* FSSuperB;
文件系统超级块
INode* FSTmpINode;
文件系统操作使用临时快
INode* FSTmpINode2;
文件系统操作使用临时快
2、 SuperBlock
此类是所有文件系统的超级块抽象描述,它规定了所有文件系统对于超级块的
统一操作接口。
class SuperBlock
接口
virtual void InitialSB()=0;
//利用模拟磁盘文件直接构建通用
SuperBlock
1
- 1
- 2
前往页