操作系统课程设计Linux二级文件系统设计Word文档格式.docx
《操作系统课程设计Linux二级文件系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计Linux二级文件系统设计Word文档格式.docx(8页珍藏版)》请在冰点文库上搜索。
![操作系统课程设计Linux二级文件系统设计Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/14b6f4f1-57e0-42ab-93b1-32f74fd21b7f/14b6f4f1-57e0-42ab-93b1-32f74fd21b7f1.gif)
用户登录
dir
列目录
create
创建文件
delete
删除文件
open
打开文件
close
关闭文件
read读文件
write写文件
cd进出目录
2.列目录时要列出文件名,物理地址,保护码和文件长度
3.源文件可以进行读写保护
【实验环境】
C++
DevCpp
【设计思路】
本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。
另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。
首先应确定文件系统的数据结构:
主目录、子目录及活动文件等。
主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。
用户创建的文件,可以编号存储于磁盘上。
如:
file0,file1,file2并以⋯编号作为物理地址,在目录中进行登记。
结构体:
typedefstruct/*thestructureofOSFILE*/
intfpaddr;
/*filephysicaladdress*/
intfmode;
/*filemode:
0-ReadOnly;
1-WriteOnly;
2-ReadandWrite;
3-Protect;
*/
charfname[MAXNAME];
/*filename*/
}OSFILE;
除左空白*/
char*rtrim(char*str)
/*removethetrailingblanks.去除右空白*/
intWriteF1()/*writefile相当于置换文件*/
程序流程说明:
整体流程:
开始
Login(Name/Pw/Cpw)
创
打
写
读
删
建
开
文
除
件
结束
各部分功能流程:
Open:
Delete:
Delete
用户是否在用户目
接收删除文件名
获取文件
获取物理块号
文件向前移动
删除文件,文件数减
Write:
确认该文件被打开
Y
获取路径
覆盖
文件写入成功!
Close:
罗列已经打开的文件
获取文件名
获取物理地址
源程序清单】
voidOpenF()/*OpenFile*/
{
printf("
\n\nC:
\\%s>
"
strupr(dirname));
件名\'
%s\'
不存在\n"
fname);
wgetchar=1;
}else{name)==0)fopen=1;
penmode=fmod;
确认您要删除的是否在用户目录下!
\n"
);
}
if(strcmp(strupr(dirname),strupr(username))!
=0){只能删除修改自己用户目录下的文件哦!
}else{
\nPleaseinputFileName:
gets(fname);
fopen==1){'
处于打开状态!
请先关闭哟!
请先关闭
if(ufd[k]->
ufdfile[i].fmode==3){'
处于被保护状态!
哟!
fpaddrno1=ufd[k]->
ufdfile[i].fpaddr;
xt"
n"
\nError.\'
文件不存在!
fopen==1)name);
m++;
if(m%4==0&
&
m!
=0)fopen==1){
penmode==1||ifopen[k][i].openmode==2){
paddr,str,10);
length=ufd[k]->
ufdfile[i].flength+length;
length=length;
\n\nYouhavewritefilesuccessfully!
!
fclose(fp_file);
penmode==0){
'
文件以只读状态打开,不允许写!
文件处于关闭状态,请先打开!
wgetchar=1;
fopen==1)
penmode==0)||(ifopen[k][i].openmode==2))
name);
n++;
if((n%4==0)&
(n!
=0))printf("
\n"
\n%d文件已被打开!
n);
if(n==0)wgetchar=1;
fopen==0)fopen=0;
ifopen[k][i].openmode=4;
\'
hasbeenclosedsuccessfully!
文件不存在\n"
【测试结果】
(此部分请同学们自己动手操作)
Login:
Help:
Create:
Read:
1—additional添加后变为:
0—covered
覆盖后变为:
Attrib:
Delete:
Dir:
Cls:
(清屏)
Exit:
设计总结】
首先通过这次的操作系统课程设计,让我认识到了实际的编程操作并不难,难的是对过程的设计,功能的定义以及最后的程序流程图的设计。
其次说一下我的认识,这次的课程设计使我对一些东西有了更加深刻的认知和了解,更重要的是巩固了新学的知识,以及对旧的知识进行了复习与了解,对一些细节方面的东西也有了更深刻的理解,所以这一次实践的机会,让我体会到了自己的不足之处,在以后的学习过程中,会加倍的认真努力。
让我对文件的操作更加熟练了,并且对Linux有了初步的了解。
其实这次课程设计,不能说很困难:
老师已经把大体的架构给我们了,我们需要添加的仅是四个功能的设计(open、write、delete、close)但是它又不是很容易,我们需要把整个的程序弄清,各个变量以及语句都要明白记住,这会关联到我们所定义的四个功能。
总算是把这次的课程设计搞定了,最让我开心的是课设完成之后看着自己的作品。
程序完整运行成功的那一瞬间最令我激动。
总之,这次的课设使我重新认识了不少,以后我会更加努力!
【参考文献】
计算机操作系统教程(第三版).张尧学史美林张高计算机操作系统,西安电子科技大学出版社,方敏主编