




免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 课程名称 操作系统 题目名称 文件系统 学生学院 计算机学院 专业班级 计算机科学与技术10级8班学 号 学生姓名 指导教师_ _ 2013年 1月 5 日 目录1 设计目的12设计内容13 设计步骤24 经验与体会105附录111 设计目的模拟文件系统实现的基本功能,了解文件系统的基本结构、内部功能和实现,通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,实现文件系统的管理和控制功能。 2设计内容2.1实现功能实现一个简单的多用户多级目录要求如下(具体选做):1)实现二级目录管理及文件管理基本操作; 2)实现无穷级目录管理及文件管理基本操作; 3)在1)或2)基础上实现共享“别名”; 4)在1)或2)基础上加快了文件检索; 5)基于某项实际应用进行文件系统设计。 2.2开辟空间在内存中开辟一个虚拟磁盘空间作为文件存储器,用位示图来管理文件存储空间,采用显式链接分配方式,将位示图合并到FAT表中。2.3目录结构文件的物理结构采用显式链接的方式。文件的目录结构是多用户多目录结构的。如:主文目录MFD,用户文件目录UED,运行文件目录AFD,每级目录都有具体内容。目录用索引节点的方式组织。2.4实现的操作1)create:创建文件2)delete:删除文件3)open:打开文件4)close:关闭文件5)read:读文件6)write:写文件7)mkdir:创建目录(子目录)8)cd:改变当前目录9)dir:列出文件目录10)login:登陆系统11)logout:退出系统2.5设计一个用户友好的界面 3 设计步骤3.1需求分析在内存中申请1M的空间来模拟存取设备,空间划分为三部分,第一部分用来存放位示图,用于标识数据块的使用情况,第二部分放置一个文件索引的数据,用于快速的查找数据,第三部分放置数据信息,第三部分划分为512块,每块512B,其256K,放置在1M空间的最末端,由第三部分的大小可知,第一部分只需64B即可,中间的部分用来存放文件索引。其他用到的存储单元由系统分配。需要实现的功能:1)实现二级目录管理及文件管理基本操作; 2)实现无穷级目录管理及文件管理基本操作; 3)在1)或2)基础上实现共享“别名”; 4)在1)或2)基础上加快了文件检索; 5)基于某项实际应用进行文件系统设计。3.2概要设计首先系统要完成初始化的任务,建立一个系统,并等待用户登录使用文件系统,用户登录系统时,系统对用户的用户名(允许用户有限次的尝试,最多尝试五次),如果用户登录成功,则系统进入命令提示符状态,等用户输入指令后,系统得用一个解释程序按照指定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。3.3详细设计3.3.1函数调用关系:FindBlankFileBlockId()* FindBlankFileBlock()GetCurrentTime()AddFileIndex()UpdateBitMap()*CreateFileElement():FindBlankFileBlockId(),AddFileIndex(),UpdateBitMap()* CreateFileBlockList()InitFileSys():* CreateFileBlockList(),*CreateFileElement()Login()Create():*CreateFileElement()Dir()Mkdir():*CreateFileElement()等等3.3.2各程序流程图:1)创建文件(create):在当前目录里创建文件,在内存中找到空闲文件块来存放用户文件信息,新创建的文件的状态默认为关闭,同时更新位示图和索引表。2)删除文件(delete):在目录中找到要删除的文件的目录项,使之成为空项,回收该文件所占用的存储空间。3)打开文件(open):在当前目录进行操作,根据文件名,在索引表里找到该文件的物理块号,然后找到该文件的信息,将文件的状态设为打开。4)关闭文件(close):在当前目录进行操作,根据给出的文件名,在索引表里找到该文件的物理块号,根据块号找到该文件信息,若此文件当前状态是打开则将该文件的状态设为关闭。否则,输出“当前目录没有要关闭的文件”。5)读文件(read):在当前目录进行操作,根据文件名,检测文件是否已经打开,若文件已经打开则将文件的信息显示到屏幕上。6)写文件(write):在当前目录进行操作,根据文件名。检测文件是否打开,若已经打开,用户输入完成后,使用CTRL+D,结束输入,系统将用户的输入内容,保存到相应的文件块(小心越界情况)。7)创建目录(子目录)(mkdir):在当前目录创建目录,与创建文件类似,但文件夹在文件元素结构中的数据部分为空。同样新位示图和文件索引表。8)改变当前目录(cd):进入下一层的一个文件夹和回到父目录,通过系统的当前状态,获取一个指向目标文件夹的指针做为当前的父节点,改变当前的路径为目标路径,改变用户当前所在层。9)列出文件目录(dir):在当前目录进行操作,根据文件名文件元素所在层父节点可以唯一的标识一个文件元素的关系在文件索引中搜索出当前层的所有文件元素。10)用户登录(login):文件系统里已经存在9个用户(user1user8和root),。用户登陆成功后会初始化当前用户的信息。若失败,则退出系统。 11)退出系统(logout):执行此命令时,退出系统,回到登陆模块。下一个用户可以进行登陆操作。3.4调试分析void UpdateBitMap(unsigned fileblockid)/计复所在位示图的位置int dirInBitmap = (int)(fileblockid / 8);int dirInChar = fileblockid % 8;char *c = &(FS.bm.BMStartdirInBitmap);char xor;switch (dirInChar)case 0:xor = 0x80;break;case 1:xor = 0x40;break;case 2:xor = 0x20;break;case 3:xor = 0x10;break;case 4:xor = 0x08;break;case 5:xor = 0x04;break;case 6:xor = 0x02;break;case 7:xor = 0x01;break;*c = *c xor;这种需要涉及到地址的是我不会的,这个程序是请教同学才做出来的。这里有一点汇编语言的知识。3.5系统测试3.5.1实现的功能:create,delete,open,close,read,write,mkdir,cd,dir,login,logout多级目录:文件共享(重名):3.5.2错误的测试例子要先创建文件或者目录才能对其进行操作,否则会出错:读写文件之前都要先打开文件,否则操作出错:3.6使用说明1)create:创建文件在目录x下可以创建文件名为y的文件,输入命令的格式为create y,可以用命令dir显示在x目录下的文件y,如图:2)delete:删除文件若文件已存在,则可以执行命令delete y来删除文件y,如图:3)open:打开文件若文件已存在,则可以执行命令open y来打开文件y,如图:4)close:关闭文件若文件已打开,则可以执行命令close y来关闭文件y,如图:5)read:读文件若文件已存在,则可以执行命令read y来读文件y,如图:6)write:写文件若文件已存在,则可以执行命令write y来写文件y,如图:7)mkdir:创建目录(子目录)登陆系统后,要先创建目录x,执行命令mkdir x创建目录(在已有目录下可以在创建子目录),如图:8)cd:改变当前目录登陆系统后,默认路径是根目录,执行命令cd x就可以进入刚才新建的目录x,路径由/变为/x/ ,执行命令cd .可以返回上一级目录如图:9)dir:列出文件目录执行dir命令查看系统里目录的情况,如图:10)login:登陆系统文件系统内置9个用户(user1user8共8个普通用户,一个管理员root),登录时输入用户名就能出现操作界面。现在以root用户为例:/表示根目录,:后面可以输入命令。11)logout:退出系统执行logout命令,退出文件系统回到登陆界面,下一个用户可以进行登陆操作。 4 经验与体会这次的课程设计比之前的实验都要难,实验的功能也比较多和复杂,所以,花费了比较长的时间来做,期间遇到很多困难,经过问同学和查资料,总算解决了,不过我也知道这个程序还有不足的地方,所以尽量修改,得到最终结果。深入了解文件系统,发现自己有很多不懂得,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把以前所学过的知识重新温故。这次课程设计终于顺利完成了。这次的课程设计基本完成老师的要求,但是还有一些没能完成,这次的程序没有实现:1)实现共享“别名”;2)基础上加快了文件检索;这是比较遗憾的。其他功能还是比较好的实现了:1)实现二级目录管理及文件管理基本操作; 2)实现无穷级目录管理及文件管理基本操作; 3)实现了重名通过课程设计,掌握的比较多吧,可以对文件系统有一个深刻的认识,收获比较多。 5附录数据结构:数据块在内存中的物理结构 typedef struct fbunsigned FileBlockId;/文件块编号unsigned BLOCK_SIZE; /文件块的容量char *FileBlockAddr; /文件块地址struct fb *next; /下一个文件块的地址 FileBlock;文件索引结构 typedef struct unsigned Index;/文件元素索引编号char FileNameNAME_LEN; /文件元素名char ParentNameNAME_LEN; /父节点名unsigned FileBlockId;/文件元素所在物理块编号unsigned FileLevel; /文件元素所在层次,层文件元素名为一个文件元素逻辑位置unsigned effect; /是否有效,0-无效,1-有效 FileIndexElement;文件系统中文件元素的结构(含文件夹和文件) typedef struct fsestruct fse *parent; /指向自己的父亲节点unsigned FileLevel;/文件元素所在层次,层文件元素名为一个文件元素的逻辑位置char FileNameNAME_LEN; /文件元素名unsigned FileBlockId;/文件元素所在物理块编号unsigned FileElemLen;/文件元素的长度FileType Type;/文件元素类型FileAccess Access;/文件元素可供操作的权限User Creator;/文件创建者char CreateTime18;/创建时间,日期格式:MM/DD/YY HH:MI:SSchar LastModTime18;/最后一次修改时间char *FileData;/一个文件的数据开始地址,文件夹时该值为NULLFileStatus fileStu;/如果是一个文件表示文件当前的状态 FSElement;文件系统结构 typedef struct char *FSStart;/文件系统的起始地址unsigned SuperBlockSize; /文件系统的容量BitMap bm;/文件系统中的位示图unsigned BLOCK_COUNT;/文件系统中文件块的数量FileBlock *head;/文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业旅游学课件
- 农业报表化肥培训课件
- 化工企业环保培训课件
- 别踩黑块课件
- 品质营销推广规划方案(3篇)
- 先秦朱子论语课件
- 先秦两汉文学课件
- 内科慢阻肺讲解课件
- 内科循环系统课件
- 3口耳目手足 公开课一等奖创新教学设计
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 信息技术基础教程(WPS版)课件 第3章 Windows 10 操作系统的使用
- 小鹿斑比题目及答案
- 中学知识竞赛试题及答案
- 2025-2030中国建筑行业供应链金融发展现状与前景分析
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 医院环境感染监测制度
- 医院一键式报警系统建设与实施
- 精选急腹症影像学表现资料课件
- 角膜 角膜炎课件
- 《卫生政策学》第三章 政策问题确认
评论
0/150
提交评论