操作系统文件系统实验报告后附源代码.docx

上传人:b****6 文档编号:6303874 上传时间:2023-01-05 格式:DOCX 页数:10 大小:21.19KB
下载 相关 举报
操作系统文件系统实验报告后附源代码.docx_第1页
第1页 / 共10页
操作系统文件系统实验报告后附源代码.docx_第2页
第2页 / 共10页
操作系统文件系统实验报告后附源代码.docx_第3页
第3页 / 共10页
操作系统文件系统实验报告后附源代码.docx_第4页
第4页 / 共10页
操作系统文件系统实验报告后附源代码.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

操作系统文件系统实验报告后附源代码.docx

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

操作系统文件系统实验报告后附源代码.docx

操作系统文件系统实验报告后附源代码

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位图顺序查

mode找空闲的inode

inode0

ino(l找到返回iTOde地址

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

\tinode%d\n",dir_buf[i].d_ino);

}

elseif(i==1)

{

printf("\t..\t\t\t

\tinode%d\n",dir_buf[i].d_ino);}else

{

inodetemp=read_inode(dir_buf[i].d_ino);

if((inodetemp->di_mode&DIMODE_DIR)==DIMODE_DIR)

{

printf("\t%s\t\t\t

\tinode%d\n",dir_buf[i].d_name,dir_buf[i].d_ino);

}

elseif((inodetemp->di_mode&DIMODE_FILE)==DIMODE_FILE)

%d

{printf("\t%s\t\t\t\tsize

block%d\n",dir_buf[i].d_name,inodetemp->di_size,inodetemp->di_block[0]);

}

else

{

%d

printf("\t%s\t\t\tinode

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(idi_number);

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(;idi_number;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);}

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

当前位置:首页 > 表格模板 > 书信模板

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

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