操作系统课程设计

0

**虚拟文件系统: **建立基于顺序分配的文件系统。

首先分配一定容量的内存,建立虚拟磁盘;
在该磁盘上建立顺序分配的文件系统;
为该文件系统设计相应的数据结构来管理目录、虚拟磁盘的空闲空间、已分配空间等。

提供文件的创建、删除、移位、改名等功能;
提供良好的界面,可以显示文件系统的状态和空间的使用情况;
提供磁盘转储功能,可将虚拟文件系统存入一个磁盘文件,还可从磁盘文件读入内存。

就这样一个题目,操作系统课上就学了概念和各种算法,具体怎么做完全没教。然后,我想知道具体怎么去实现。可以聊聊工具,方向,不用多详细。小白在此谢过了。

ava
图强

2019-11-22

0

首先,你要考虑你的“虚拟磁盘”多大。然后就分配多大的内存。

然后,你要考虑你这个虚拟磁盘怎样保存多个文件。你要有空间记录每个文件的文件名、文件大小、起始位置、创建日期等信息,还要有存储文件的空间。你还要想明白怎样标识某些空间已被使用、某些空间是空闲的。

然后创建文件时,先判断是否有足够的空闲空间容纳这个新文件。如果有,就在文件索引表创建一条记录,将这个文件逐字节复制到指定的空闲位置。

删除操作大同小异。

一个文件系统要考虑的细节非常多。比如,连续的增加删除文件后,空闲空间会变得非常零碎。那么一个新文件怎样跨越多个零碎部分?怎样合并零碎部分以提高文件存取效率?等等。建议你先看一下 FAT16 磁盘格式,非常简单,一看就懂。

如果要实现,可以先考虑实现一个不支持文件夹、不支持文件分块存储的虚拟磁盘,相对简单一些。实现之后再考虑拓展。

----补充(2019-11-24)----

实际中的虚拟磁盘,要借助于 ddk 开发包,使用户安装驱动后可以看到类似真实的磁盘。但是这不是重点。对你的作业来说,无论是内存虚拟还是文件虚拟都可以,无非是用来表示一整块的存储空间,重点是你怎样管理这块空间。

ava
慢羊羊

2019-11-23

嗯大概懂了,还有就是这个“虚拟磁盘”是要用一个文件来模拟吗? 如果用C/C++的话,是直接在vs上编就可以吗?(如果我的电脑系统是Windows,就是指在Windows平台上完成的吗?) -  图强  2019-11-24
技术讨论社区