操作系统文件系统实验报告后附源代码.docx
- 文档编号:6303874
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:10
- 大小:21.19KB
操作系统文件系统实验报告后附源代码.docx
《操作系统文件系统实验报告后附源代码.docx》由会员分享,可在线阅读,更多相关《操作系统文件系统实验报告后附源代码.docx(10页珍藏版)》请在冰豆网上搜索。
操作系统文件系统实验报告后附源代码
1课程设计简介
课程设计的目的
课程设计内容
2数据结构的设计
预定义
结构体
全局变量和函数
3功能模块(或算法)描述
模块划分
模块流程图
4程序运行结果
5心得体会
参考文献
附源代码
.错..误!
未定义书签。
错..误!
未定义书签。
错..误!
未定义书签。
.错..误!
未定义书签。
.错..误!
未定义书签。
.错..误!
未定义书签。
错..误!
未定义书签。
错..误!
未定义书签。
.错..误!
未定义书签。
错...误!
未定义书签。
错...误!
未定义书签。
错...误!
未定义书签。
.4..
.6..
课程设计的目的
课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。
同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
课程设计内容设计一个简单的多用户文件系统。
即①在系统中用一个文件来模拟一个磁盘;②此系统至少有:
Create、delete、open、close、read、write等和部分文件属性的功能。
③实现这个文件系统。
④能实际演示这个文件系统。
基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。
1)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
MFD)和用户文件目录(UFD)。
另外,为打开
2)程序采用二级文件目录(即设置主目录文件设置了运行文件目录(AFD)。
3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
4)因系统小,文件目录的检索使用了简单的线性搜索。
1,对应位为0,则表示不允
5)文件保护简单使用了三位保护码:
允许读写执行、对应位为许读写、执行。
MFD、UFD),打开文
6)程序中使用的主要设计结构如下:
主文件目录和用户文件目录(件目录(AFD)即运行文件目录,如图所示。
maa;1登录严63111«0:
&\派阖\蕨苗¥紈1;^任贾、1Vinuxni^iTuesys.exe格申请k个bock空间ins输入用^名
rndnln#adnln否
^■BioJCk位图是否加锁
la查找是否有改,,..,.,nSEi*用户加锁嗣run否
TkAf£?
?
uf1爭Hfiin
疋
#defir
Inode位图是否加锁
否,加锁
Inode空间是否已满
是否有密严gt喑桌面2数据结构的设护核n曲*
>'oat\etc
密码是否正确按照分找不到请失败定义找空闲白%
是,登录成功J.
e找到返回SlZ^ki地址12
PO束c>logout
lAser■结束ie=XHaDl)os£wd;xi吕aloginsuccess*Trodt\etc\xiAo> 在ionde位图顺序查
inode3
inodeIrOde位图解锁
结束
申请失败
找不到审
poot\etc'wiHao>,
inolieinode
后在连续
出版物:
[序号]主要责任者.文献题名[J].
刊名,
出版年份,
卷号(期号):
起止页码)
[2]刘国钧,王连成.图书馆史研究[M].北京:
高等教育出版社,
1979:
15-18,
31.(专著:
[序号]主要责任者.文献题名[M].出版地:
出版者,出版
年:
起止页码.)
[3]孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报研
究会.
科技编辑学论文集
(2).北京:
北京师范大学出版社,1998:
10-22.(论
文集:
[序号]主要责任者.文献题名[C]//主编.论文集名.出版地:
出
版者,
出版年:
起止页码.)
附:
源代码
#include<>
#include<>#include<>#include<>#include<>#include<>
#defineBLOCKSIZ512
\n");
login();
showhelp();
printf("%s>",cmdhead);
while
(1)
{
scanf("%s",&str);
if(strcmp(str,"exit")==0)
{
fclose(fd);
}else
return;
if(strcmp(str,"dir")==0)
{showdir();
}
elseif(strcmp(str,"bit")==0)
{
showbitmap();
}
elseif(strcmp(str,"help")==0)
{
showhelp();
}
elseif(strcmp(str,"logout")==0)
{
logout();
if(Iscmd(str))
}else
{
scanf("%s",&strname);cmd_Up(str,strname);
else
{printf("错误命令!
\n");
}printf("%s>",cmdhead);
}
s_r_blocks_count=0;/*保留的blocks计数*/filsys.s_free_blocks_count=DATABLKNUM-5;/*空闲的blocks计数*/[0]=50-5;_name,".");
dir_buf[0].d_ino=0;_name,"..");dir_buf[1].d_ino=0;_name,"etc");dir_buf[2].d_ino=1;_name,".");dir_buf[0].d_ino=1;
strcpy(dir_buf[1].d_name,"..");dir_buf[1].d_ino=0;
strcpy(dir_buf[2].d_name,"passwd");dir_buf[2].d_ino=2;
strcpy(dir_buf[3].d_name,"admin");dir_buf[3].d_ino=3;
strcpy(dir_buf[4].d_name,"xiao");dir_buf[4].d_ino=4;
fseek(fd,DATASTART+BLOCKSIZ,SEEK_SET);fwrite(dir_buf,BLOCKSIZ,1,fd);
_name,".");
dir_buf[0].d_ino=3;strcpy(dir_buf[1].d_name,"..");
dir_buf[1].d_ino=1;
fseek(fd,DATASTART+BLOCKSIZ*3,SEEK_SET);fwrite(dir_buf,BLOCKSIZ,1,fd);
_name,".");
dir_buf[0].d_ino=4;
strcpy(dir_buf[1].d_name,"..");
dir_buf[1].d_ino=1;
fseek(fd,DATASTART+BLOCKSIZ*4,SEEK_SET);fwrite(dir_buf,BLOCKSIZ,1,fd);
_uid=1;
passwd[0].p_gid=GRUP_0;sername,"admin");strcpy(passwd[0].password,"admin");
passwd[1].p_uid=2;passwd[1].p_gid=GRUP_1;strcpy(passwd[1].username,"xiao");strcpy(passwd[1].password,"xiao");
for(i=2;i passwd[i].p_uid=0; passwd[i].p_gid=GRUP_4;strcpy(passwd[i].username,"nothisuser");strcpy(passwd[i].password,""); } fseek(fd,DATASTART+BLOCKSIZ*2,SEEK_SET); fwrite(passwd,BLOCKSIZ,1,fd); ininode->di_ino=2;.\n"); fd=fopen(fsystemname,"rb+");_uid! =0){ sername,&pwd[i].password); } inodetemp=read_inode(0);t\t\t
}
elseif(i==1)
{
printf("\t..\t\t\t
{
inodetemp=read_inode(dir_buf[i].d_ino);
if((inodetemp->di_mode&DIMODE_DIR)==DIMODE_DIR)
{
printf("\t%s\t\t\t
}
elseif((inodetemp->di_mode&DIMODE_FILE)==DIMODE_FILE)
%d
{printf("\t%s\t\t\t
block%d\n",dir_buf[i].d_name,inodetemp->di_size,inodetemp->di_block[0]);
}
else
{
%d
printf("\t%s\t\t\t
block%d\n",dir_buf[i].d_name,dir_buf[i].d_ino,inodetemp->di_block[0]);
}
intEnterdir(char*namestr),namestr)==0){
i=0;break;
}
if(strcmp("..",namestr)==0)
{
i=1;break;
}
if(strcmp(dir_buf[i].d_name,namestr)==0)
{
if(dir_buf[i].d_ino!
=-1)
{
_ino);
break;
}
}
i++;
}while(i
if(i==cur_inode->di_number)
{
_ino);
intIscmd(charcmd[10]){
del")==0)
{
if(strcmp(cmdhead,"root")!
=0)
{
i=0;
while(cmdhead[i]!
='\0')
{
if(cmdhead[i]=='\\'){
itemp=i;
}i++;
}
cmdhead[itemp]='\0';
}
elseif(strcmp(strname,".")!
=0)
{
strcat(cmdhead,"\\");strcat(cmdhead,strname);
}
}
else
{
printf("进入目录失败!
\n");
}
}
elseif(strcmp(str,"create")==0)
{if(creat(strname))
{del_ino=inum;_name,strname);
fseek(fd,DATASTART+BLOCKSIZ*cur_inode->di_block[0],SEEK_SET);_name,".");buf[0].d_ino=inum;_name,"..");
buf[1].d_ino=cur_inode->di_ino;
fseek(fd,DATASTART+BLOCKSIZ*bnum,SEEK_SET);_ino=inum;_name,strname);
fseek(fd,DATASTART+BLOCKSIZ*cur_inode->di_block[0],
SEEK_SET);_name,strname)!
=0)
{
i++;
}
for(;i
{
strcpy(dir_buf[i].d_name,dir_buf[i+1].d_name);
dir_buf[i].d_ino=dir_buf[i+1].d_ino;
fseek(fd,DATASTART+BLOCKSIZ*cur_inode->di_block[0],SEEK_SET);_name,strname)==0)
{
if(dir_buf[i].d_ino!
=-1)
{
printf("已经找到%s,inode=%d\n",strname,dir_buf[i].d_ino);printf("请输入新的文件名:
");fflush(stdin);
scanf("%s",temp);
if(strlen(temp)>=14)
{
printf("新文件名过长!
重命名失败!
\n");return-1;
}
else
{
if(Fd_dirfile(temp)!
=-1)_name,temp);
fseek(fd,DATASTART+BLOCKSIZ*cur_inode->di_block[0],SEEK_SET);sername);
if(strcmp(pwd[i].username,str)==0)
{
break;
}
if(strcmp("exit",str)==0)
{
exit(0);
}
if(i!
=PWDNUM)
{
break;
}
}while
(1);printf("passwd:
");fflush(stdin);scanf("%s",str);if(strcmp(pwd[i].password,str)==0){
break;
}
if(strcmp("exit",str)==0)
{
exit(0);
}
}while
(1);
cur_user=&pwd[i];
inodetemp=read_inode(0);sername);
elseif(inodetemp->di_gid==1)
printf("由%s创建,属于普通用户组\n",pwd[inodetemp->di_uid-1].username);}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 文件系统 实验 报告 源代码