2022年操作系统二级文件管理课程设计 .pdf
《2022年操作系统二级文件管理课程设计 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统二级文件管理课程设计 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统二级文件管理课程设计课程设计名称:二级文件管理系统专 业 班 级 : 软件工程计 083-1 学 生 姓 名 : 李晓斌学号 : 20082553103 指 导 教 师 : 任满杰精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 13 页设计目的: 通过具体的文件存储空间的管理、文件的物理结构、 目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。设计内容:为Linux 系统设计一个简单二级文件管理系统一、实验内容描述1 实验目标本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 .
2、 2 实验要求为 linux 系统设计一个简单的二级文件系统.要求做到以下几点:可以实现下列命令:login 用户登录dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件列目录时要列出文件名、物理地址、保护码和文件长度. 源文件可以进行读写保护. 程序设计(1) 设计思想本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户账号下的文件。 另外,为了简便文件系统未考虑文件共享,文件系统安全以及管理文件与设备文件等特殊内容。(2) 主要数据结构A 磁盘块结构体:typedef struct distTa
3、ble int maxlength; int start; int useFlag; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 13 页 distTable *next; diskNode; diskNode *diskHead; B 文件块结构体:struct fileTable /文件块结构体 char fileName10; int strat; /文件在磁盘存储空间的起始地址 int length; /文件内容长度 int maxlength; /文件的最大长度 char fileKind3; /文件的属性读写方式 str
4、uct tm *timeinfo; bool openFlag; /判断是否有进程打开了该文件 /fileTable *next; ; C 两级目录结构体typedef struct user_file_directory /用户文件目录文件UFD /char fileName10; fileTable *file; user_file_directory *next; UFD; /UFD *headFile; typedef struct master_file_directory /主文件目录 MFD char userName10; char password10; UFD *user;
5、 MFD; (3)函数如下;void userCreate() char c; char userName10; int i; if(usedMaxUser) printf(请输入用户名: ); for(i=0;c=getch();i+) if(c=13) break; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 13 页 else userNamei=c; printf(%c,c); userNamei=0; for(i=0;iused;i+) if(!strcmp(userTablei.userName,userName) pr
6、intf(n); printf(该用户名已存在 , 创建用户失败 n); system(pause); return; strcpy(userTableused.userName,userName); printf(n); printf(请输入密码: ); for(i=0;c=getch();i+) if(c=13) break; else userTableused.passwordi=c; printf(*); userTableuserID.passwordi=0; printf(n); printf(创建用户成功 n); used+; system(pause); else print
7、f(创建用户失败,用户已达到上限n); system(pause); fflush(stdin); /清除文件缓冲区 int login() char name10,psw10; char c; int i,times; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 13 页 printf(请输入用户名 :); for(i=0;c=getch();i+) if(c=13) break; else namei=c; printf(%c,c); namei=0; for(i=0;iused;i+) if(!strcmp(userTable
8、i.userName,name) break; if(i=used) printf(n您输入的用户名不存在 n); system(pause); return -1; for(times=0;times3;times+) memset(psw,0,sizeof(psw); /将 psw 数组内的内容设置为空 printf(n请输入密码 :); for(i=0;c=getch();i+) if(c=13) break; else pswi=c; printf(*); printf(n); for(i=0;iuseFlag=0&p-maxlengthmaxLength) startPostion=
9、p-start; q=(diskNode *)malloc(sizeof(diskNode); q-start=p-start; q-maxlength=maxLength; q-useFlag=1; q-next=NULL; diskHead-start=p-start+maxLength; diskHead-maxlength=p-maxlength-maxLength; flag=1; temp=p; if(diskHead-next=NULL) diskHead-next=q; else while(temp-next) temp=temp-next; temp-next=q; bre
10、ak; p=p-next; return flag; void fileCreate(char fileName,int length,char fileKind) / 创建文件 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 13 页 /int i,j; time_t rawtime; int startPos; UFD *fileNode,*p; for(p=userTableuserID.user-next;p!=NULL;p=p-next) if(!strcmp(p-file-fileName,fileName) printf(
11、文件重名,创建文件失败 n); system(pause); return; if(requestDist(startPos,length) fileNode=(UFD *)malloc(sizeof(UFD); fileNode-file=(fileTable *)malloc(sizeof(fileTable); / 这一步必不可少,因为fileNode里面的指针也需要申请地址,否则fileNode-file指向会出错 strcpy(fileNode-file-fileName,fileName); strcpy(fileNode-file-fileKind,fileKind); file
12、Node-file-maxlength=length; fileNode-file-strat=startPos; fileNode-file-openFlag=false; time(&rawtime); fileNode-file-timeinfo=localtime(&rawtime); fileNode-next=NULL; if(userTableuserID.user-next=NULL) userTableuserID.user-next=fileNode; else p=userTableuserID.user-next; while(p-next) p=p-next; p-n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统二级文件管理课程设计 2022 操作系统 二级 文件 管理 课程设计
限制150内