又是文件系统。前面已经提到过一次文件系统的实现了,为什么这里还要再介绍一边文件系统呢?原因是前面介绍的文件系统访问比较简单,仅仅是读取固定的几个文件。而这里,为了保证装载器的灵活性,这里的文件系统设计复杂多了。而且由于是C++实现,代码可读性也提高了。以后在内核中,我们还需要处理一次文件系统,那是操作系统中正式使用的文件系统。这里我们先来看一个相对简单的实现。
上图中,我们看到这里一共有三个接口。IFileSystem代表一个文件系统,FAT16类从这里继承。同时FAT16类里面包含有一个块设备,文件系统就建立在这个块设备上。IFileSystem接口只有一个方法,那就是取根目录
文件系统中的目录被抽象成IDirectory接口,这个接口有3个方法。分别是取目录名,枚举子目录,和枚举文件
最后IFile代表一个文件,在其上我们要实现读文件的接口。由于RMOSLDR中不需要进行文件写操作,所以我们也不会实现写文件操作。
在IFileSystem,IDirectory和IFile三个接口下面,我们可以为每种文件系统创建一个实现。在最前面的图中,我们看到这里我们会为FAT16文件系统设计一个实现。我们将从下节开始介绍这个实现。