操作系统课程设计Linux二级文件系统设计Word文档格式.docx

上传人:b****2 文档编号:14566487 上传时间:2022-10-23 格式:DOCX 页数:22 大小:225.98KB
下载 相关 举报
操作系统课程设计Linux二级文件系统设计Word文档格式.docx_第1页
第1页 / 共22页
操作系统课程设计Linux二级文件系统设计Word文档格式.docx_第2页
第2页 / 共22页
操作系统课程设计Linux二级文件系统设计Word文档格式.docx_第3页
第3页 / 共22页
操作系统课程设计Linux二级文件系统设计Word文档格式.docx_第4页
第4页 / 共22页
操作系统课程设计Linux二级文件系统设计Word文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

操作系统课程设计Linux二级文件系统设计Word文档格式.docx

《操作系统课程设计Linux二级文件系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计Linux二级文件系统设计Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

操作系统课程设计Linux二级文件系统设计Word文档格式.docx

write写文件

cd进出目录

2.列目录时要列出文件名,物理地址,保护码和文件长度

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

【实验环境】

C++

DevCpp

【设计思路】

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。

另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:

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

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

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

如:

file0,file1,file2…并以编号作为物理地址,在目录中进行登记。

结构体:

typedefstruct/*thestructureofOSFILE*/

{

intfpaddr;

/*filephysicaladdress*/

intflength;

/*filelength*/

intfmode;

/*filemode:

0-ReadOnly;

1-WriteOnly;

2-ReadandWrite;

3-Protect;

*/

charfname[MAXNAME];

/*filename*/

}OSFILE;

//存放重要信息

typedefstruct/*thestructureofOSUFD*/

charufdname[MAXNAME];

/*ufdname*/

OSFILEufdfile[MAXCHILD];

/*ufdownfile*/

}OSUFD;

//用户下面的文件

typedefstruct/*thestructureofOSUFD'

LOGIN*/

/*ufdname*/

charufdpword[8];

/*ufdpassword*/

}OSUFD_LOGIN;

typedefstruct/*fileopenmode*/

intifopen;

/*ifopen:

0-close,1-open*/

intopenmode;

/*0-readonly,1-writeonly,2-readandwrite,3-initial*/

}OSUFD_OPENMODE;

主要的函数说明:

voidLoginF();

/*LOGINFileSystem用户登录*/

voidDirF();

/*DirFileSystem列目录*/

voidCdF();

/*ChangeDir改变目录*/

voidCreateF();

/*CreateFile创建文件*/

voidDeleteF();

/*DeleteFile删除文件*/

voidModifyFM();

/*ModifyFileMode修改*/

voidOpenF();

/*OpenFile打开文件*/

voidCloseF();

/*CloseFile关闭文件*/

voidReadF();

/*ReadFile读文件*/

voidWriteF();

/*WriteFile写文件*/

voidQuitF();

/*QuitFileSystem离开文件系统*/

voidhelp();

其他重要函数:

voidclrscr()//清屏

intExistD(char*dirname)/*WhetherDirNameExist,Exist-i,NotExist-0*/

intExistF(char*filename)/*WhetherFileNameExist,Exist-i,NotExist-0*/

intFindPANo()/*findoutphysicaladdressnum*/

voidSetPANo(intRorW)/*Setphysicaladdressnum,0-read,1-write*/

voidInputPW(char*password)/*inputpassword,use'

*'

replace*/

char*ltrim(char*str)/*removetheheadingblanks.去除左空白*/

char*rtrim(char*str)/*removethetrailingblanks.去除右空白*/

intWriteF1()/*writefile相当于置换文件*/

程序流程说明:

整体流程:

开始

Login(Name/Pw/Cpw)

文件

打开文件

删除文件

更改目录

修改文件属性

读文件

关闭文件

退出系统

清屏

添加

覆盖

结束

各部分功能流程:

Open:

Open

获取文件名

文件是否存在?

(file>

0)

文件名不存在

获取文件

置为打开状态

并获取文件模式

打开文件成功

N N

Y

Delete:

Delete

主目录是否为空?

Y

确认删除文件在用户目录下!

N

用户是否在用户目录下?

只能修改用户目录下的文件!

接收删除文件名

文件被打开或被保护?

Y

打开或被保护状态不可删除

获取物理块号

文件向前移动

删除文件,文件数减一

删除文件成功!

Write:

Write

用户是否在目录下?

文件不存在!

Y

确认该文件被打开

文件权限为只写或读写

N

文件为只读和保护,不允许写!

获取路径

0—追加,1—覆盖?

1

追加

文件写入成功!

Close:

Close

请确认要关闭的文件是在用户目录下!

Y

罗列已经打开的文件

获取物理地址

文件是否处于关闭状态?

该文件已被关闭

N

文件成功关闭

【源程序清单】

voidOpenF()/*OpenFile*/

printf("

\n\nC:

\\%s>

"

strupr(dirname));

//显示当前路径

intfcoun,i;

//定义两个整形变量

charfname[MAXNAME],fmode[25];

//定义两个字符串变量

intfmod;

//文件模式

\nPleaseinputFileName:

);

gets(fname);

//接收打开文件的文件名

ltrim(rtrim(fname));

//去除左右空白

if(ExistF(fname)<

0) //判断文件是否存在

{ //不存在

printf("

\nError.文件名\'

%s\'

不存在\n"

fname);

wgetchar=1;

}else{ //存在

i=ExistD(username);

//获取用户物理信息

for(inta=0;

a<

fcount[i];

a++) //遍历用户文件

{

if(strcmp(fname,ufd[i]->

ufdfile[a].fname)==0)//找到文件

{

fcoun=a;

break;

}

}

ifopen[i][fcoun].ifopen=1;

//将文件状态置为打开状态

PleaseinputOpenMode(0-ReadOnly,1-WriteOnly,2-ReadandWrite,3-Protect):

//打开文件模式

gets(fmode)

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

当前位置:首页 > 工程科技 > 材料科学

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

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