多用户多级目录文件系统的实现报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计报告设计题目:多用户多级目录文件系统的实现班级:计算机1208班组长学号:20124016组长姓名:樊荣指导教师:冯时设计时间:2015年7月设计分工组长学号及姓名:20124016樊荣分工:文件建立、文件删除、文件查看、文件填写、主函数组员1学号及姓名:20124020李鑫分工:目录建立、目录删除、查看目录组员2学号及姓名:20124032杨学良分工:用户登录、创建用户、删除用户摘要文件是具有文件名的一组关联信息的集合,通常文件由若干个记录组成。文件系统是操作系统与管理文件有关的软件和数据集合。从用户的角度看,文件系统实现“按名存取”。从系统的角度看,文件系统是对文件存储器的存储空间进行组织、分配负责文件的存储并对存入的文件实施保护、检索的一组软件集合。文件系统模型可以分为三个层次:底层是对象及其属性(文件、目录和磁盘存储空间);中间层是对对象的进行操作和管理的软件集合(核心部分);最高层是文件系统提供给用户的接口。为使用户能灵活方便地使用和控制文件,文件系统提供了一组进行文件操作的系统调用:建立文件、删除文件、打开文件、关闭文件、读文件和写文件。关键词:操作系统,文件系统,……目录摘要1概述·····························································2课程设计任务及要求············································2.1设计任务···········································2.2设计要求···········································3.算法及数据结构···············································3.1算法的总体思想(流程)······························3.2登陆模块3.2.1功能3.2.2数据结构3.2.3算法3.3用户创建模块3.3.1功能3.3.2数据结构3.3.3算法3.4用户删除模块3.4.1功能3.4.2数据结构3.4.3算法3.5文件创建模块3.5.1功能3.5.2数据结构3.5.3算法3.6文件删除模块3.6.1功能3.6.2数据结构3.6.3算法3.7文件打开模块3.7.1功能3.7.2数据结构3.7.3算法3.8目录创建模块3.8.1功能3.8.2数据结构3.8.3算法3.9目录删除模块3.9.1功能3.9.2数据结构3.9.3算法4.程序设计与实现4.1程序流程图4.2程序说明4.3实验结果5.结论6.参考文献。7.收获、体会和建议。1概述文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NANDFlash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。本次实验我们实现了多级目录下的文件管理系统,具备文件系统的文件创建、删除、读写以及目录的创建、删除等操作,并在内存中开辟一块空间,模拟虚拟磁盘,成功地展示出文件系统的功能和属性。2课程设计的任务和要求2.1设计任务在下列内容中任选其一:1、多用户、多级目录结构文件系统的设计与实现;2、WDM驱动程序开发;3、存储管理系统的实现,主要包括虚拟存储管理调页、缺页统计等;4、进程管理系统的实现,包括进程的创建、调度、通信、撤消等功能;5、自选一个感兴趣的与操作系统有关的问题加以实现,要求难度相当。2.2设计要求1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理;3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;6、提交课程设计报告。集体要求:1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。2.文件物理结构可采用显式链接或其他方法。3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login(用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建:create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:close(8)删除文件:delete(9)创建目录(建立子目录):mkdir(10)改变当前目录:cd(11)列出文件目录:dir(12)退出:logout3算法及数据结构3.1算法总体思想(流程)流程图如下:开始是否格式化VFS?清空文件内容是从文件读出数据否初始化数据结构C=1?管理员登陆模块是C=2?否用户登录模块是C=3?否保存信息入文件是提示错误,重新输入否结束输入选择c3.2登录模块3.2.1功能完成用户及管理员登陆的功能,要保证用户名必须和密码匹配,否则不能登陆成功,同时对于不存在的用户的登陆请求退回,由于用户和管理员登陆后功能项不同,要分开处理。3.2.2数据结构classCdisk{//管理员类public:Cuseuser[5];//用户个数最多为5charcode[10];charname[10];intdis_disk();intfirst_dele_user();intdele_user(int);intnew_user();//查看当前用户与外存空间使用情况,后创建新用户intset_code();//设置新密码intlogin(char);//登陆Cdisk();virtual~Cdisk();//虚函数,析构};3.2.3算法流程图如图3.2.1、图3.2.2管理员开始输入账号a,输入密码b!strcmp(a,默认账号)?提示没有该账号否!strcmp(b,默认密码)?是提示密码错误否登陆成功,显示管理员权限是结束图3.2.1用户登陆开始用户列表为空?检索当前用户列表匹配成功?输入账号、密码输入账号a、密码bUser[i].set_use(a,b);账号注册成功进入用户界面是提示相应错误信息结束图3.2.23.3用户创建模块3.3.1功能完成创建用户的功能,要求用户满后不能继续创建,用户名和密码匹配进行保存。3.3.2数据结构同上一模块,兹不赘述。3.3.3算法流程图如图3.3开始用户列表满?当前列表是否存在用户a?否输入用户名User[i].set_user(a,b)否输入密码提示用户创建成功结束提示列表满提示用户名错误图3.33.4用户删除模块3.4.1功能删除保存的用户,以用户名作为选择项进行删除。3.4.2数据结构同上,兹不赘述。3.4.3算法流程图如下:开始当前列表是否存在用户a输入要删除的用户名a是否定删除a是将用户数据初始化提示删除成功是提示不存在用户a提示已经取消删除操作结束图3.43.5文件创建模块3.5.1功能开辟空间创建一个新的字符文件,要求创建时说明文件的大小,文件名,并输入文件的内容。3.5.2数据结构typedefstructUFD//存储文件信息{charname[10];//文件名intattribute;//属性intlength;//长度inta[10];//为文件本身分配10个空间int*p1;//一级索引,100个空间int(*p2)[100];//二级索引,100*100个空间structUFD*next;}UFD;3.5.3算法流程图如下:开始向内存申请一块文件空间,是否成功?检索当下目录中是否有该文件?是输入欲建文件名aL=剩余空间否位示图法分配虚拟磁盘块,并创建索引是结束输入文件长度L、属性提示已存在该文件,创建失败是剩余磁盘空间不足,创建失败否提示内存不足,创建失败图3.53.6文件删除模块3.6.1功能以文件名作为选择项删除文件,要求文件所有相关的信息全部删除。3.6.2数据结构同上一模块,兹不赘述。3.6.3算法流程图如下:开始当前目录下是否有文件a将文件节点从文件链表中摘除是回收索引,回收分配的磁盘块提示没有该文件,删除失败否是否确定删除a是提示已经取消操作否提示删除成功结束更新多级目录大小更新剩余磁盘大小图3.63.7文件打开模块3.7.1功能以文件名作为搜索项,打开文件,查看文件中存储的字符。3.7.2数据结构同上一模块,兹不赘述。3.7.3算法开始当前目录是否有文件a?输入打开文件名a显示文件相关信息及文件内容提示打开成功是是否读写文件?是否修改文件内容?是输入修改内容是覆盖之前内容,并提示修改成功!提示当前目录不存在a,打开失败!否结束否否图3.73.8目录创建模块3.8.1功能创建目录,要求有目录名,目录本身不开辟空间,目录大小由目录下文件和子目录大小决定,可以创建多级子目录,在目录下创建即为当前目录的子目录。3.8.2数据结构typedefstructDIR//存储目录信息{DIR*above;//上一结点charname[10];intlength;DIR*next;//下一结点UFD*File_head;//此目录下的文件指针DIR*Dir_head;//此目录下目录链表指针}DIR;3.8.3算法流程图如下:开始当前目录链中是否存在a?将新建目录节点插入链表否提示目录建立成功结束输入欲建立目录名a提示目录已存在,创建失败是图3.83.9目录删除模块3.9.1功能根据目录名删除选中的目录及其中的内容,选中目录均在当前目录下,删除时目录中的子目录和文件一并被删除,直接回收目录对应的所有存储块。3.9.2数据结构同上一模块,兹不赘述。3.9.3算法流程图如下:开始当前目录下是否存在目录a输入欲删除目录名a确定删除目录a及a中一切内容是目录下文件链为空是删除第一个文件否当前目录下目录连为空是删除第一个目录否更新多级目录大小提示目录删除成功!结束当前目录下没有目录a,删除失败!否提示已经取消操作否图3.94程序的设计与实现4.1程序流程图诸如上个模块,兹不赘述。4.2程序说明系统初始化(建文件卷、提供登录模块)for(i=0;i10000;i++)//初始化所有磁盘块为空闲disk_block[i]=0;disk_empty=10000;intCdisk::login(charb)//登陆{……}文件的创建:intCuse::new_file()//建立新文件文件的打开:openintCuse::open_file()//打开文件文件删除:intCuse::first_dele_file()//删除文件的前面工作intCuse::dele_file(UFD*f)//具体实现删除文件文件的读:intCuse::dis_file()//查看文件创建目录(建立子目录):intCuse::new_dir()//建立新目录查看当前目录:intCuse::dis_dir(DIR*d)//显示目录intCuse::dis_now()//显示当前目录DIR*Cuse::get_now()//得到当前目录路径删除目录:intCuse::first_dele_dir()//删除目录的前奏

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功