操作系统课程设计Linux二级文件系统设计.docx
- 文档编号:1741134
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:8
- 大小:20.91KB
操作系统课程设计Linux二级文件系统设计.docx
《操作系统课程设计Linux二级文件系统设计.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计Linux二级文件系统设计.docx(8页珍藏版)》请在冰点文库上搜索。
操作系统课程设计Linux二级文件系统设计
操作系统课程设计报告
专业:
软件工程
学号:
姓名:
马
提交日期:
2017/1/10
【设计目的】
1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现
2、结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步
理解操作系统
3、通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力
【设计内容】
为Linux系统设计一
个简单的二级文件系统。
要求做到以下几点:
1.可以实现下列几条命令:
login
用户登录
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:
Y
罗列已经打开的文件
获取文件名
获取物理地址
关闭文件
结束
源程序清单】
Open:
voidOpenF()/*OpenFile*/
{
printf("\n\nC:
\\%s>",strupr(dirname));件名\'%s\'不存在\n",fname);
wgetchar=1;
}else{name)==0)fopen=1;
penmode=fmod;确认您要删除的是否在用户目录下!
\n");
wgetchar=1;
}
if(strcmp(strupr(dirname),strupr(username))!
=0){只能删除修改自己用户目录下的文件哦!
\n");
wgetchar=1;
}else{
printf("\nPleaseinputFileName:
");
gets(fname);fopen==1){'%s\'处于打开状态!
请先关闭哟!
\n",fname);
wgetchar=1;
}else{
请先关闭
if(ufd[k]->ufdfile[i].fmode==3){'%s\'处于被保护状态!
哟!
\n",fname);
wgetchar=1;
}else{
fpaddrno1=ufd[k]->ufdfile[i].fpaddr;xt");
n",fname);
wgetchar=1;
}
}
}else{
printf("\nError.\'%s\'文件不存在!
\n",fname);fopen==1)name);
m++;
}
if(m%4==0&&m!
=0)fopen==1){
penmode==1||ifopen[k][i].openmode==2){
paddr,str,10);xt");
length=ufd[k]->ufdfile[i].flength+length;
length=length;
printf("\n\nYouhavewritefilesuccessfully!
!
!
");
fclose(fp_file);
penmode==0){
'%s\'文件以只读状态打开,不允许写!
\n",fname);
wgetchar=1;
}else{
printf("\nError.\'%s\'文件处于关闭状态,请先打开!
\n",fname);wgetchar=1;
}
}
}else{
printf("\nError.\'%s\'文件不存在!
\n",fname);fopen==1)
penmode==0)||(ifopen[k][i].openmode==2))
name);
n++;
}
if((n%4==0)&&(n!
=0))printf("\n");
}
printf("\n%d文件已被打开!
\n",n);
if(n==0)wgetchar=1;
printf("\nPleaseinputFileName:
");
gets(fname);fopen==0)fopen=0;
ifopen[k][i].openmode=4;
printf("\'%s\'hasbeenclosedsuccessfully!
",fname);
}
}else{
printf("\nError.\'%s\'文件不存在\n",fname);
}
}
}
【测试结果】
(此部分请同学们自己动手操作)
Login:
Help:
Create:
Open:
Read:
Write:
1—additional添加后变为:
0—covered
覆盖后变为:
Close:
Attrib:
Delete:
Dir:
Cls:
(清屏)
Exit:
设计总结】
首先通过这次的操作系统课程设计,让我认识到了实际的编程操作并不难,难的是对过程的设计,功能的定义以及最后的程序流程图的设计。
其次说一下我的认识,这次的课程设计使我对一些东西有了更加深刻的认知和了解,更重要的是巩固了新学的知识,以及对旧的知识进行了复习与了解,对一些细节方面的东西也有了更深刻的理解,所以这一次实践的机会,让我体会到了自己的不足之处,在以后的学习过程中,会加倍的认真努力。
让我对文件的操作更加熟练了,并且对Linux有了初步的了解。
其实这次课程设计,不能说很困难:
老师已经把大体的架构给我们了,我们需要添加的仅是四个功能的设计(open、write、delete、close)但是它又不是很容易,我们需要把整个的程序弄清,各个变量以及语句都要明白记住,这会关联到我们所定义的四个功能。
总算是把这次的课程设计搞定了,最让我开心的是课设完成之后看着自己的作品。
程序完整运行成功的那一瞬间最令我激动。
总之,这次的课设使我重新认识了不少,以后我会更加努力!
【参考文献】
计算机操作系统教程(第三版).张尧学史美林张高计算机操作系统,西安电子科技大学出版社,方敏主编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 Linux 二级 文件系统 设计