操作系统实验文件系统.docx

上传人:b****6 文档编号:16626178 上传时间:2023-07-15 格式:DOCX 页数:15 大小:496.22KB
下载 相关 举报
操作系统实验文件系统.docx_第1页
第1页 / 共15页
操作系统实验文件系统.docx_第2页
第2页 / 共15页
操作系统实验文件系统.docx_第3页
第3页 / 共15页
操作系统实验文件系统.docx_第4页
第4页 / 共15页
操作系统实验文件系统.docx_第5页
第5页 / 共15页
操作系统实验文件系统.docx_第6页
第6页 / 共15页
操作系统实验文件系统.docx_第7页
第7页 / 共15页
操作系统实验文件系统.docx_第8页
第8页 / 共15页
操作系统实验文件系统.docx_第9页
第9页 / 共15页
操作系统实验文件系统.docx_第10页
第10页 / 共15页
操作系统实验文件系统.docx_第11页
第11页 / 共15页
操作系统实验文件系统.docx_第12页
第12页 / 共15页
操作系统实验文件系统.docx_第13页
第13页 / 共15页
操作系统实验文件系统.docx_第14页
第14页 / 共15页
操作系统实验文件系统.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统实验文件系统.docx

《操作系统实验文件系统.docx》由会员分享,可在线阅读,更多相关《操作系统实验文件系统.docx(15页珍藏版)》请在冰点文库上搜索。

操作系统实验文件系统.docx

操作系统实验文件系统

 

实验报告

实验题目:

文件系统

姓名:

学号:

课程名称:

操作系统

所在学院:

信息科学与工程学院

专业班级:

计算机

任课教师:

实验项目名称

文件系统

一、实验目的与要求:

1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及其内部实现。

2、熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。

3、通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。

4、通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。

二、实验设备及软件:

一台PC(Linux系统)

三、实验方法(原理、流程图)

试验方法

(1)首先应当确定文件系统的数据结构:

主目录、子目录以及活动文件等。

主目录和子

目录都以文件的形式存放于磁盘,这样便于查找和修改。

(2)用户创建文件,可以编号存储于磁盘上。

如file0,file1,file2…并以编号作为物理地

址,在目录中登记。

文件系统功能流程图

图1.文件系统总体命令分析

图2.登录流程图图3.ialloc流程图

图4.balloc流程图图5.密码修改流程图

图6.初始化磁盘

图7.显示所有子目录dir/ls操作流程图

图8.创建文件creatfile、创建目录mkdir流程图

图9.改变当前路径cd操作流程图

实验原理

1.文件操作

◆mkdir创建目录文件模块,输入mkdir命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。

在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。

具体流程图查看第二节,系统流程图设计部分。

◆del删除文件模块,输入del命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。

在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。

具体流程图查看第二节,系统流程图设计部分。

◆ls显示当前目录下所有目录的模块,输入ls命令,回车,即会在屏幕上显示当前目录下的所有目录。

在该过程中要判断该目录中是否为空,如果为空就没有必要执行该操作了。

执行操作时,要调用readdir(INodeinode)函数,先读入文件内容到content里面,然后直接输出。

如果子目录里面还有子目录,则通过递归,一并输出来。

具体流程图查看第二节,系统流程图设计部分。

◆chmod改变文件权限模块,输入chmod命令,回车,输入文件名,回车,即会根据不同类别的用户在屏幕上提示要改变哪一类用户的权限。

如果是文件拥有者执行该操作,他可以选择修改自己、其他用户的权限;如果是文件所属组成员执行该操作,他可以选择修改自己、其他用户的权限;如果是其他用户执行该操作,他只能选择修改自己的权限;在该过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了。

执行操作时,要判断对该文件有没有执行写操作的权利,没有就不能进行。

具体流程图查看第二节,系统

流程图设计部分。

◆cd改变当前所在目录的模块。

输入cd,回车,相应的字符串,回车,则会根据输入字符串的不同跳转到不同的目录下。

如果字符串是‘.’,则到当前目录;如果字符串是‘..’,则到父目录;如果字符串是‘/’,则到根目录;如果字符串是当前目录下的子目录,则到该子目录;如果字符串是一个决定路径,则到该绝对路径。

当然在执行的时候要判断有没有该子目录或者该绝对路径,如果没有的话,就不能执行。

具体流程图查看第二节,系统流程图设计部分。

2.用户操作

◆login用户注销模块,输入login,回车,当前用户就退出了,需要重新登录。

◆pw用户修改口令模块,输入pw,回车,则会提示输入原始密码,输入正确

了才可以提示输入新密码,并且要求新密码输入两次,两次一样了才能通过修改密码成功。

具体流程图查看第二节,系统流程图设计部分。

◆logout用户退出系统模块,输入logout,回车,系统自动退出。

四、实验过程、步骤及内容

实验内容

为LINUX系统设计一个简单的二级文件系统,要求

(1)文件实现下列几条命令

login用户登录

logout注销用户

dir列文件目录

creatfile创建文件

del删除目录或文件

cd改变目录

mkdir创建目录

adduser增加用户

deluser删除用户

shell命令解析

chmod改变文件权限

pw修改用户密码

edit编辑文件

fileopen打开文件

fileclose关闭文件

fileread读文件

filewrite写文件

access文件访问控制

format格式化文件系统

install装载文件系统

iput将磁盘i结点放入指定的i结点块中

ialloc分配一个i结点,返回i结点号

ifree将指定的i结点释放

balloc分配一块磁盘块,返回盘块号

bfree将指定的磁盘块释放

psw_get读psw信息

psw_put写psw信息

psw_read将psw中的用户信息读入内存thepsw中

psw_writeback将thepsw写回磁盘

sub_dir_get根据i结点号,返回目录表

(2)列目录时要列出文件名、物理地址、保护码和文件长度:

DISKSIZE1024*1024//磁盘文件大小

BLOCKSIZE512//磁盘块大小

FILENAME"disk.txt"//超级块参数

SUPBLOCK5//超级块所需盘块

bSTACKSIZE50//空闲盘块栈大小

iSTACKSIZE500//空闲i接点栈大小

SUPSTARTBLOCKSIZE//超级块起始的物理地址

SUPSIZEsizeof(structsuperblock)//超级块大小

结点参数

INODESIZEsizeof(structdinode)//一个i结点大小

INODENUM_B5//每个盘块i结点个数

INODEBLOCK100//i结点所需盘块

INODENUM500//i结点数目

ADDRNUM13//i结点可连接的盘块数

INODESTART6*BLOCKSIZE//i界点起始的物理地址

用户密码区参数

USERSIZE20//用户名长度

PWSIZE30//密码长度

GROUPSIZE20//组名长度

USERNUM68//最多用户个数(其实比最大数多几个)

USERBLOCK14//用户密码去所需盘块

PSWORDSTART111*BLOCKSIZE//用户密码区起始地址

PSWORDSIZEsizeof(structpsword)//密码记录项长度

主用户目录区参数(特殊的文件目录,初始化就确定)

ROOTSTART106*BLOCKSIZE///目录块地址

DIRBLOCK4//主用户目录所需磁盘块数

DIRSTART107*BLOCKSIZE//主用户目录起始地址

文件目录一般参数

DIRECTSIZEsizeof(structdirect)//目录项长度

DIRECTNUM16//每块最多可分配目录项的数目

DIRECTSIZE_A30//实际分配目录项长度

DIRSIZE20//目录文件名长度

DIRNUM(10*DIRECTNUM)//最大子目录数(i结点可连接10个盘块,每块可放17项)

DATASTART131//数据区开始地址

DATANUM1917//数据区块数

HASHNUM10//HASH表长度

DEFAULTMODE00770//默认权限

(3)源文件可以进行读写保护

(4)在系统中用一个文件来模拟一个磁盘;

(5)能实际演示这个文件系统。

基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求:

1)设计一个多个用户的文件系统,每次用户可保存多个文件。

2)程序采用二级文件目录和用户文件目录。

另外,为打开文件设置了运行文件目录(AFD)。

3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。

4)因系统小,文件目录的检索使用了简单的线性搜索。

5)文件保护简单使用了三位保护码:

允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。

6)程序中使用的主要设计结构如下:

主文件目录和用户文件目录,打开文件目录即运行文件目录,

五、实验数据(现象)处理分析

实验现象

成功运行文件系统,并开始登录:

列出目录:

添加新用户密码不一致而添加失败:

添加新用户:

退出登录:

添加新用户退出登录到重新登录新用户:

修改用户密码:

创建目录以及列出新建的目录:

删除文件目录:

改变目录(进入指定目录):

没有权限创建文件目录的情况:

删除用户失败的情况:

尝试改变文件权限:

用户删除操作的权限控制:

本文件系统还有很多功能,修改文件权限、文件拥有者、文件所属组与前面的目录操作是相同的,在这里不必全部截图了。

每个命令的实现或者实现过程当中的各式各样的错误,加深了文件系统命令的理解。

六、实验结论

通过本次实验最大的体会就是体验一下完成一个完整的文件系统的感受。

刚开始的时候我认真去看了,然后还仔细翻看了书本上的内容。

因为一开始对于各种概念都很模糊,都不知道那么多参考代码怎么运行,一直研究成组连接运行的方法,最后全部合到一起成功运行了。

实现了一个完整的文件系统功能。

最主要的问题还是怎么实现空盘块的管理,应该如何设计,文件目录的管理等等内容的理解工作。

理解了这些内容以后,我就开始着手每个功能实现。

它的逻辑要比人脑严谨得多。

哪怕出现一点点错误它就会运行错误。

只能够通过一步步断点调试,看每一步的变量情况才会发现这种错误。

Linux系统文件管理各种功能的理解,功能的流程设计,代码的实现。

所以整个流程下来理解的知识要更多更深刻,函数的理解更深,每一个功能都要理解的基础上不断地改正实现。

以完成的任务,结果却反反复复得修改程序代码,最后总算还是完成了。

现在感

觉不论是对操作系统这门课的理解,还是对一个程序员的编写者的感悟,或者是对于一份报告的编写,都学到了很多新的知识。

七、教师批阅意见:

 

成绩评定:

 

教师签字:

年月日

八、备注:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2