操作系统模拟unix文件系统实验报告.docx

上传人:b****4 文档编号:1372101 上传时间:2022-10-21 格式:DOCX 页数:42 大小:1.92MB
下载 相关 举报
操作系统模拟unix文件系统实验报告.docx_第1页
第1页 / 共42页
操作系统模拟unix文件系统实验报告.docx_第2页
第2页 / 共42页
操作系统模拟unix文件系统实验报告.docx_第3页
第3页 / 共42页
操作系统模拟unix文件系统实验报告.docx_第4页
第4页 / 共42页
操作系统模拟unix文件系统实验报告.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

操作系统模拟unix文件系统实验报告.docx

《操作系统模拟unix文件系统实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统模拟unix文件系统实验报告.docx(42页珍藏版)》请在冰豆网上搜索。

操作系统模拟unix文件系统实验报告.docx

操作系统模拟unix文件系统实验报告

操作系统大型实验

班级:

学号:

姓名:

 

一实验介绍……………………………………………………………………

1.实验名称

2.实验目的

3.实验内容及要求

二实验环境……………………………………………………………………

三实验设计……………………………………………………………………

1.数据结构设计

2.系统流程设计

3.实现命令操作

四模块详解……………………………………………………………………

1.文件操作

2.用户操作

五实验演示……………………………………………………………………

1.初始化磁盘块

2.用户登录

3.目录操作

4.文件操作

六源代码………………………………………………………………………

七实验心得体会……………………………………………………………………

1.调试中遇到的问题总结

2.实验感悟

一、实验介绍

1.实验名称

操作系统大型实验

2.实验目的

完成一个UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。

3.实验内容及要求

(1)文件卷结构设计

0#块可省略

I节点栈及空间为20项

块大小为512字节

卷盘块数大于100

I节点盘块数大于10块

(2)I节点结构设计

文件大小

文件联接计数

文件地址

文件拥有者

文件所属组

文件权限及类别

文件最后修改时间

其中文件地址为六项:

四个直接块号,一个一次间址,一个两次间址

(3)目录结构

用16字节表示,其中14字节为文件名,2字节为I节点号

(4)用户及组结构

用户信息中包括用户名、口令,所属组,用户打开文件表

(5)文件树结构

除(4)要求外,适当考虑UNIX本身文件树结构

(6)实现功能

Ls显示文件目录

Chmod改变文件权限

Chown改变文件拥有者

Chgrp改变文件所属组

Pwd显示当前目录

Cd改变当前目录

Mkdir创建子目录

Rmdir删除子目录

Mv改变文件名

Cp文件拷贝

Rm文件删除

Ln建立文件联接

Cat连接显示文件内容

Vi文件写入

Mk创建文件

umask查看用户屏蔽码

Umask文件创建屏蔽码

Passwd修改用户口令

Ls-l查看文件类型

Login用户注销

Logout退出系统

Help显示帮助信息

二、实验环境

实验设备:

MicrosoftVisualStudio2010

开发语言:

c++

三、实验设计

1.数据结构设计

磁盘文件结构设计:

用一个名为disk.txt的文件模拟Unix系统磁盘,总共分为200块,每块514个字节(实际可用512个字节,还有2个字节是磁盘分割符‘\n’),使第一块(0#)盘块做为超级块,记录该系统磁盘的使用情况;第二块(1#)盘块——第十三块(12#)盘块作为存储I结点使用,每个I结点74个字节,所以每个盘块可以存放6个I结点,总共有72个I结点,记录在超级块中;十三块(12#)以后的盘块作为存储文件内容使用,总共187个盘块,用成组连接法记录在超级块中。

对于I结点的具体设计如下:

classINode//(74B)

{

public:

intfsize;//文件大小setw(6)

intfbnum;//文件盘块数setw(6)

intaddr[4];//四个直接盘块号文件最大为4*512=2048=2KBsetw(4)*4

intaddr1;//一个一次间址()文件大于2KB,小于2KB+16*512=10KBsetw(4)

intaddr2;//一个两次间址()文件大于10KB,小于10KB+16*16*512B=138KBsetw(4)

charowner[6];//文件拥有者setw(6)

chargroup[6];//文件所属组setw(6)

charmode[12];//文件类别及存储权限setw(12)

charctime[10];//最近修改时间setw(10)

intconnect;//文件联接计数

};

对于超级块的具体设计如下:

classsuperBlock

{

public:

intFIStack[72];//空闲结点号栈setw(3)*72

intFICount;//空闲i结点总数setw(3)

intFIPtr;//空闲结点栈指针setw(3)

intFBStack[10];//空闲盘块号栈setw(4)*10

intFBCount;//空闲盘块总数setw(4)

intFBPtr;//空闲盘块栈指针setw(3)

};

初始化磁盘示意图:

14#

13#

1

2

除了超级块、I结点、磁盘文件的数据结构设计以外,为了系统操作方便,我还设计了用户类、文件目录类。

用户类具体设计:

classUSER//用户(24B)

{

public:

charname[6];//用户名setw(6)

charpass[6];//密码setw(6)

chargroup[6];//所属组setw(6)

intumask[3];//用户umask码setw(6)

};

用户信息全部存放在一个user.txt的文件里面,所以对于user.txt文件也有一个设计,文件最开始是存放用户总数(setw(6)),随后跟着的是每一位用户名、密码、所属组、用户umask码。

文件目录类具体设计:

classCatalog//目录项(18B)

{

public:

charfname[14];//文件名setw(14)

intindex;//i结点号setw(4)

};

目录信息全部都存放在disk磁盘里面,所以具体数据结构设计都在上面的磁盘文件设计中提及。

2.程序流程设计

◆系统主体流程图设计见图1

◆用户注册流程图见图2

◆登陆功能流程图见图3

◆用户修改口令流程图见图4

◆用户umask码修改流程图见图5

◆显示所有子目录ls操作流程图见图6

◆创建文件mk、目录mkdir流程图见图7

◆删除文件rm流程图见图8

◆删除目录文件rmdir流程图见图9

◆改变当前路径cd操作流程图见图10

◆查看文件内容cat操作流程图见图11

◆拷贝文件、目录cp操作流程图见图12

◆建立文件联接ln操作流程图见图13

◆修改文件名称MV操作流程图见图14

◆修改文件权限chmod操作流程图见图15

◆修改文件拥有者chown、所属组chgrp操作流程图见图16

◆写流程图vi见图17

 

 

N

N

N

Y

Y

Y

Y

N

N

N

Y

Y

Y

Y

Y

Y

N

N

N

3.实现命令操作

cd[enter].[enter]切换到当前目录

cd[enter]/[enter]切换到根目录

cd[enter]..[enter]切换到父目录

cd[enter]dir[enter]切换到某一子目录,dir为子目录名

cd[enter]string[enter]切换到指定路径的目录,string为路径

mkdir[enter]dir[enter]当前目录下创建名为dir的子目录

rmdir[enter]dir[enter]删除当前目录下名为dir的子目录

mk[enter]file[enter]当前目录下创建名为file的文件

rm[enter]file[enter]删除当前目录下名为file的文件

cp[enter]dirORfile[enter]string[enter]拷贝当前目录下文件或子目录到指定路径下

cat[enter]file[enter]查看当前目录下名为file的文件内容

vi[enter]file[enter]向当前目录下名为file的文件写入一定内容

pwd[enter]显示当前目录

ls[enter]显示所有子目录

chmod[enter]file[enter]改变当前目录下名为file文件的权限

chown[enter]file[enter]改变当前目录下名为file文件的拥有者

chgrp[enter]file[enter]改变当前目录下名为file文件的所属组

MV[enter]file[enter]改变当前目录下名为file文件的文件名

login[enter]用户注销,可以重新登陆

passwd[enter]用户改变密码

umask[enter]查看用户umask码

Umask[enter]code[enter]修改用户umask码为code

ln[enter]file1[enter]file2[enter]文件file1与file2建立连结

ls-l[enter]file[enter]查看文件file的类别

help[enter]提供帮助

logout[enter]退出系统

四、模块详解

1.文件操作

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

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

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

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

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

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

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

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

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

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

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

删除的时候要判断该目录是否为空,如果里面有内容,则要通过递归函数,将他们一并删除了。

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

◆cp拷贝文件模块,输入cp命令,回车,输入要拷贝文件的文件名,回车,输入要拷贝到哪个路径下面,即会在该路径下创建一个名为与被拷贝文件名相同的数据文件(目录文件),并且指向盘块里面的内容都相同的数据文件(目录文件)。

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

然后要查看该路径是否存在,存在该路径才可以在该路径下创建拷贝过来的文件,具体流程图查看第二节,系统流程图设计部分。

◆cat显示文件

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1