linux下基于内存的虚拟文件系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
近几年来,计算机的CPU、内存和显卡等主要配件的性能都提升得很快,而与之相对应的磁盘系统性能正越来越严重地成为整个电脑系统性能提升的瓶颈。故将一部分内存拿出做虚拟磁盘,并在虚拟磁盘上实施文件管理系统,以加快文件的管理速度,并方便用户进行各种用户操作。基于内存的文件管理系统,顾名思义,就是将一部分内存拿出来当硬盘用,可以极大的提高在其上进行的文件访问的速度。。
关键词:虚拟内存磁盘文件管理系统linux/qt/C++
目录第一章课题背景
1.1课题实现的背景及意义
第二章项目总体设计
2.1基本功能
2.2目的和要求
第三章详细设计
3.1 程序整体框架和主要算法
3.2类的设计与声明
3.3程序流程图
第四章实验内容
4.1 运行环境
4.2 运行要求
4.3 核心代码
第五章设计结果与分析
总结
参考文献
第一章课题背景:
1,需求概述
近年来,随着操作系统内存容量的不断地增加,然而相当一部分的操作系统内存却是浪费了。为此出现了虚拟硬盘的概念,希望能借此实现不同情况的磁盘转储和合理利用内存。
由于操作系统的虚拟内存很大,因此可以利用这些内存开辟一块空间作为虚拟磁盘。在此虚拟硬盘上,进行模拟Windows文件管理系统的对系统之中的真实的文件的管理。
我们采用linux/qt 作为我们的开发环境,并实现了可视化界面,所有操作无需输入命令,而是通过点击按钮实现相应的功能。
2,需求分析
2.1需求理解与模块图
对用户需求的理解:该模拟文件系统包括四大模块:磁盘状态显示模块、存储模块、读取模块、文件管理模块。
一:磁盘状态显示模块:通过点击查看磁盘信息按钮可以查看磁盘的信息,其中包括显示磁盘总容量,剩余空间大小以及当中的文件总个数。通过饼图图示,显示所用空间和剩余空间的比例,帮助用户方便的了解磁盘空间的使用情况。
二:存储模块:用户点击导入文件按钮,弹出导入文件对话框,可将指定路径的文件导入到内存磁盘中。
三:读取模块:用户点击导出文件按钮,弹出导出文件对话框,可将内存磁盘中的文件导出到指定路径的真实的物理磁盘上。
四:文件管理模块:对文件进行各种操作,包括查看,备份,重
命名,删除等操作。用户只需点击相应的按钮即可进行操作,无需以命令行的方式输入命令,方便快捷。
2.2用例分析
通过对在上面进行测试的主机的硬件参数的考察和测试,因为是在虚拟机下ubuntu系统进行代码编写和运行的,收集到系统的内存大小只有512M,发现当为虚拟内存磁盘分配大小为256M的空间时,测试效果比较好。因此,在程序中,我们没有再允许用户输入所要分配的虚拟磁盘的大小,而是在程序初始化的时候就为其分配大小为256M的空间,每个内存块的大小设定为16K,然后程序初始化。之后用户可以进行各种模拟真实磁盘的操作,当用户点击退出程序按钮后,内存信息以及一些程序运行的一些参数都将保存到外部磁盘上,程序退出。
第二章项目总体设计:
磁盘管理模块
磁
盘
状态显示模块存
储
模
块
读
取
模
块
文
件
管
理
模
块
程序大致划分为四个模块:磁盘状态显示模块、存储模块、读取模块、文件管理模块等。
磁盘状态显示模块:显示磁盘当前的信息,包括磁盘总容量大小,剩余可用空间大小,磁盘中包含的文件个数。
存储模块:当用户导入新文件或者对文件进行备份的时候,其中的数据都是要存储在内存虚拟磁盘中的。该模块的功能就是把用户导入或备份的数据通过一种合理(保证该文件数据不会被破坏掉)的方式分配到内存中。
读取模块:把内存磁盘中的文件导出到用户指定路径的真实物理磁盘上,功能和创建文件类似。
文件管理模块:实现对文件的查看,备份,重命名,删除等操作,因为我们建立的目录系统是一级目录,所以不提供创建文件夹的操作,而关于创建文件的操作实质上和从硬盘上导入文件的操作是一样的,因此我们把创建文件并入到文件读取模块里。
2.1基本功能:
1. 显示磁盘信息(总容量,剩余可用空间,文件个数)
2. 导入文件(支持把指定路径的物理磁盘中的文件导入到内存中)
3. 导出文件(支持把内存中选定的文件导出到物理磁盘上指定路径的位置)
4. 文件查看、备份、重命名、删除操作
5. 文件搜索
6. 关机备份,开机加载
2.2目的和要求:
本课程设计的目的是设计一个基于内存的文件管理。以加强对内存系统和文件管理系统和理解,同时也可加深对linux操作系统的了解以及熟悉linux下的各种命令,并对linux下QT可视化编程有进一步了解和掌握。
3. 详细设计
3.1程序整体框架和主要算法
在qt自动生成的窗口下通过添加控件并赋予每个控件一个实现方法来实现可视化操作,其中用到的一些算法主要有:
1.文件和内存空间分块解决外部碎片问题并实现空间的高效利用
2.在block类里定义一个标记用来进行对内存的分配和回收
3.使用一个带有指向每个文件头结点的链表来定位文件
4.用重写回的方法实现文件的修改操作
3.2类的设计与声明
//内存存储信息的块类的声明
class block
{
public:
block(int blocknum);//块的初始化
block(block &temp);//复制构造函数
void writedatain(char data[]);//往块里写数据