1、东华东华大学大学计计算机学院算机学院操作系操作系统实验报统实验报告告实验名称:实验名称:文件系统文件系统 姓姓 名:名:姜元杰姜元杰 学学号:号:111310228 班班级:级:计算机计算机 1102 指导老师:指导老师:李继云李继云 报告日期:报告日期:2013/11/24 操作系统实验报告-1-、实验实验概述概述1.实验目标实验目标本实验的目的是使学生在学习文件系统原理的基础上,通过参考成熟的操作系统的文件系统的设计实现一个简单多用户文件系统的设计,加深对文件系统的功能、内部结构包括逻辑结构以及物理结构的理解。对于能力较强的同学可以在此基础上进行功能的扩展以及性能的优化。2.实验要求实验要
2、求设计一个简单的二级文件系统。要求做到以下几点:1)可以实现下列命令:login用户登录dir列文件目录create 创建文件delete删除文件open打开文件close关闭文件read读文件write写文件2)列目录时要列出文件名、物理地址、保护码和文件长度。3)源文件可以进行读写保护。、实验实验内容内容1.1.设计思路设计思路1.1.1.1.总体设计总体设计本文件系统采用分层结构构造文件系统,分为:应用层,命令解释层,物理层三层,各层主要功能如下:应用层:实现 DOS 功能界面,分为用户界面和文件操作见面,根 操作系统实验报告-2-据用户选择调用命令解释层功能,完成用户要求。命令解释层:
3、实现对各种命令的逻辑响应和快速处理,并在硬件交互中调用物理层方法,处理底层空间,最后返回处理结果交付给应用层。物理层:实现对底层硬盘的操作,包括读写,创建,删除等操作,提供一系列底层方法完成操作,处理完毕后将结果交付给命令解释层。1.2.1.2.物理层设计物理层设计本文件系统借鉴了 UNIX 文件系统的设计思想,根据自身实际情况进行了调整。本文件系统的硬盘部分由字符数组进行模拟,模拟硬盘根据设计要求划分为用户主目录区(MFD),索引文件表区,索引节点区(数据区),硬盘划分情况见图 1:图图 1 硬盘划分情况硬盘划分情况根据对各划分区(MFD,索引文件表,索引节点区)数据结构所占位的计算,确定硬
4、盘单个物理块大小为 120B(实际应当设置填充位使物理块大小为 128B 更为合理),将模拟硬盘划分为 451 个物理块,故硬盘大小为451*120=54120B,具体物理分配信息见图 2:图图 2 各划分区物理信息各划分区物理信息 此外,对于模拟硬盘的物理空间,本系统采用空闲块表,运用首次适应算法管理空闲空间。操作系统实验报告-3-1.3.1.3.命令解释层设计(流程图)命令解释层设计(流程图)1.3.11.3.1用户界面功能设计用户界面功能设计(注:CurrDir 为当前目录,OPT 为文件打开表,具体解释见“主要数据结构”)用户登录 创建用户 操作系统实验报告-4-显示用户:遍历 MFD
5、,依次输出已创建用户名。1.3.21.3.2 文件操作功能设计文件操作功能设计 创建文件/目录 删除文件/目录 操作系统实验报告-5-打开文件 打开目录 操作系统实验报告-6-关闭文件 读取文件 操作系统实验报告-7-写入文件 操作系统实验报告-8-设置文件共享 操作系统实验报告-9-取消文件共享 重命名文件/目录 操作系统实验报告-10-1.4.1.4.应用层设计应用层设计体现为 DOS 功能界面,分为用户界面(图 3)和文件操作界面(图 4)。操作系统实验报告-11-图图 3 用户功能界面用户功能界面图图 4 文件操作界面文件操作界面2.主要数据结构主要数据结构 MFD:索引文件表:索引文
6、件表:操作系统实验报告-12-索引节点区:索引节点区:文件打开表:文件打开表:空闲块表:空闲块表:物理层操作时各定界符:物理层操作时各定界符:操作系统实验报告-13-其他主要数据结构:其他主要数据结构:3.主要代码结构主要代码结构3.1 应用层:应用层:3.2 命令解释层:命令解释层:操作系统实验报告-14-3.3 物理层:物理层:磁盘操作 空闲快操作 文件打开表操作、实验结实验结果果1.基本数据:基本数据:手工录入。2.源代码行数:源代码行数:2442 行3.完成实验投入时间:完成实验投入时间:累计 10 天 操作系统实验报告-15-4.讨论次数:讨论次数:0 次5.测试结果分析:测试结果分
7、析:5.1 用户界面功能测试用户界面功能测试初始化界面:查看用户:此时未创建用户,故用户列表为空创建用户:admin,zjh,jyj,wgx,jwh,jjw 操作系统实验报告-16-超出最大可创建用户数后,提示无法继续创建用户用户登录:以 admin 用户名登录,转入文件操作界面 操作系统实验报告-17-若用户名不匹配,提示错误信息5.2 文件界面功能测试文件界面功能测试以 admin 登录进入界面,“显示路径显示路径”查看当前用户名(根目录)新建新建可读写文件 aaa,只读文件 bbb 与目录 ccc,ddd 操作系统实验报告-18-操作系统实验报告-19-查看当前目录下查看当前目录下所有数
8、据文件/目录删除文件删除文件:删除 bbb 文件 操作系统实验报告-20-继续创建 bbb 文件,测试空闲块管理测试空闲块管理,结果证明首次适应算法运用成功打开文件打开文件:aaa 文件处于建立状态,默认关闭,需要写入后方能打开写入文件写入文件:写入 aaa 文件内容,aaa 文件后台默认打开读取文件读取文件 aaa 操作系统实验报告-21-关闭文件关闭文件 aaa关闭文件后,无法继续读写文件打开文件夹打开文件夹 ccc 进入子目录,并创建文件 xxx返回上一层返回上一层:操作系统实验报告-22-重命名文件重命名文件 aaa 为 AAA,目录 ccc 为 CCC共享文件功能测试:共享文件功能测
9、试:admin 用户模式下,设置 AAA,bbb 文件为共享文件,利用 jyj 用户名进行检验 操作系统实验报告-23-登录 jyj,查看并检验共享文件读取共享文件 AAA 并修改(打开共享文件读取共享文件)操作系统实验报告-24-操作系统实验报告-25-登录 wgx,查看共享文件 AAA 被 jyj 修改结果wgx 用户模式下,试图取消文件共享或删除均失败登录 admin,取消 AAA 文件共享,之后登录 jyj 查看结果 操作系统实验报告-26-、实验实验体会体会这次文件系统实验从着手设计到最终全部完工,历时十几天,从代码的复杂度和数量上都是进入大学至今最庞杂的一次动手实践。实验初期由于缺
10、少对文件系统与物理底层的交互的考虑,直接用 1200+行的链表数据结构模拟了文件系统,得到李老师的指正后,我参考了许多相关资料,从分析原理到着手开始花了三天时间,没办法只能从头开始实践。重新开始实验,尤其是在助教默认可以通过,但不能评优的条件下,删掉 1200+的代码重新做,加上临近期末考,对我来讲不可谓不压力很大,但是出于对自身的要求,我花了 10 天左右,投入全部精力完成实验,不断出现问题,不断解决问题,不断提出设想,不断完成设想。操作系统实验报告-27-最终经过大量的计算分析,代码调试后最终完成了文件系统 1.0 版本,从中我认识到软件架构思想的重要性,没有优秀和缜密的设计分析,只会造成人力物力的无效浪费,同时我在实验过程中掌握了 VS2010 的 Debug 调试方法,这对我来讲很重要。此外,在最终检查的时候,李老师中肯的提出了文件系统的一些不足,如物理块便于寻址应增加填充位使其为 128B,空闲块管理可以用链表组织等等。总而言之,通过本次实验我从原理到动手实践都裨益极大。、参考文献参考文献1.汤小丹,梁红兵等著.计算机操作系统(第三版)2.王道论坛组编.2013 年计算机操作系统联考复习指导