文件系统设计试验报告 下载本文

内容发布更新时间 : 2024/9/29 11:38:43星期一 下面是文章的全部内容请认真阅读。

文件系统设计试验报告 实验目的和要求: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验内容与分析设计: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 实验提示 (1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。 实验步骤与调试过程: 用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。主要数据结构:节点 2.磁盘i结点 3.目录项结构 4.超级块 5.用户密码 6.目录 7.查找i内存节点的hash表 8.系统打开表 9.用户打开表 设置:主要函数节点内容获取函数iget()(详细描述略)。2.节点内容释放函数iput()(详细描述略)。3.目录创建函数mkdir()(详细描述略)。4.目录搜索函数namei()(详细描述略)。5.磁盘块分配函数balloc()(详细描述略)。6.磁盘块释放函数bfree()(详细描述略)。 7.分配i节点区函数ialloc()(详细描述略)。8.解释结点区函数ifree( )(详细描述略)。9.搜索当前目录下文件的函数iname( )(详细描述略)。10.访问控制函数access( )(详细描述略)。11.显示目录和文件函数_dir( )(详细描述略)。12.改变当前目录用函数chdir( )(详细描述略)。13.打开文件函数open( )(详细描述略)。14.创建文件函数create( )(详细描述略)。15.读文件用函数read( )(详细描述略)。16.读文件用函数write( )(详细描述略)。17.用户登陆函数login( )(详细描述略)。18.用户退出函数logout( )(详细描述略)。19.文件系统格式化函数format( )(详细描述略)。20.进入文件系统函数install( )(详细描述略)。21.关闭文件函数close( )(详细描述略)。22.退出文件系统函数halt( )(详细描述略)。23.文件删除函数delecte( )(详细描述略)。 实验结果: 本实验成功地创建了登陆用户dengyurui,并在下面创建了相应的二级目录,成功的完成了对文件夹的创建操作和对文件的创建、删除、打开和关闭等基本操作。实现下列几条命令: 用户登录 列目录 创建文件 删除文件 打开文件 6.Close 关闭文件 读文件 写文件; 列目录时列出了文件名,物理地址,保护码和文件长度。源文件可以进行读写保护。在完成文件的上面的创建、删除、打开和关闭等操作上,又完成了对文件的读写操作,即把系统的日期每隔十秒写入文件中去。 疑难小结: 通过本次试验,我对文件系统设计思想有了进一步的了解,通过动手实现其文件系统设计,更加深刻的理解了文件系统设计的不同特点。同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。了解了,文件系统实际是为用户提供一个解释执行相关命令的环境。主程序中的大部分语句都被用来执行相应的命令。应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。 主要算法和程序清单: begin Step1 对磁盘进行格式化 Step2 调用install(),进入文件系统 Step3 调用_dir(),显示当前目录 Step4 调用login(),用户注册 Step5 调用mkdir()和chdir()创建目录 Step6 调用create(),创建文件0 Step7 分配缓冲区 Step8 写文件0 Step9 关闭文件0和释放缓冲 Step10 调用mkdir()和chdir()创建子目录 Step11 调用create(),创建文件1 Step12 分配缓冲区 Step13 写文件1 Step14 关闭文件1和释放缓冲 Step15 调用chdir将当前目录移到上一级 Step16 调用create(),创建文件2 Step17 分配缓冲区 Step18 调用write(),写文件2 Step19 关闭文件1和释放缓冲 Step20 调用delecte(),删除文件0 Step21 调用create(),创建文件1 Step22 为文件3分配缓冲区 Step23 调用write(),写文件2 Step24 关闭文件3并释放缓冲区 Step25 调用open(),打开文件2 Step26 为文件2分配缓冲