操作系统课程设计报告设计实现一个模拟文件系统.docx
- 文档编号:152918
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:36
- 大小:594.21KB
操作系统课程设计报告设计实现一个模拟文件系统.docx
《操作系统课程设计报告设计实现一个模拟文件系统.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告设计实现一个模拟文件系统.docx(36页珍藏版)》请在冰豆网上搜索。
-1-文华学院20172018学年度第2学期操作系统课程设计考查试卷(A卷)课程性质:
(必修)使用范围:
(本科)考查时间:
2018年3月2日考查方式:
(开卷)考试类型论文大作业调研报告其它总分课程设计阅卷老师签名试题:
要求:
独立完成,3000-8000字(不含附件)。
学号专业班级学生姓名装订线内请勿答题第-2-页共36页目录一、课程设计任务及要求.31.1设计任务.31.2设计要求.3二、算法及数据结构.32.1主要数据结构.32.2用户管理模块.52.2.1初始化用户函数.52.2.2系统用户的输出函数.62.2.3用户的查找函数.62.3创建文件函数.62.4删除文件函数.82.5打开文件函数.93.6读文件函数.113.7写文件函数.113.8关闭文件函数.123.9显示文件函数.133.9.1显示用户文件.133.9.2显示已打开的文件.13三、程序设计与实现.184.1程序流程图.184.2程序说明.184.3实验结果.19四、参考文献.21六、收获、体会和建议.22七、附录源程序清单.23-3-一、课程设计任务及要求1.1设计任务设计、实现一个模拟的文件系统1.2设计要求建立文件存储介质的管理机制建立目录(采用一级目录结构)文件系统功能(显示目录、创建、删除、打开、关闭、读、写)文件操作接口(显示目录、创建、删除、打开、关闭、读、写)独立完成课程设计内容文本的课程设计报告,内容包括调试记录和程序清单(附注释)。
二、算法及数据结构2.1主要数据结构/*定义文件数据结构*/typedefstructfilecharfile_name20;boolfile_protect3;boolopen_file_protect3;/仅在文件打开时有效intread,write;/定义为读写指针intfile_length;structfile*next;File;/*用户与文件的映射*/typedefstructx_mapcharuserName20;学号专业班级学生姓名装订线内请勿答题第-4-页共36页File*file;structx_map*next;Map;/*定义主文件目录*/typedefstructmfdMap*head,*tail;MFD;/*打开文件目录*/typedefstructafdFile*head,*tail;intmax_open;intcurrent_open;AFD;主文件目录(MFD)和用户文件目录(UFD)-5-i=;i=打开文件目录(AFD)2.2用户管理模块2.2.1初始化用户函数voidinitUser(MFD*mfd)/初始化两个不同用户for(int12Map*m;m=(Map*)malloc(sizeof(Map);if(m=NULL)exit(0);coutm-userName;m-file=NULL;m-next=NULL;if(mfd-head=NULL)mfd-head=mfd-tail=m;else;i+)学号专业班级学生姓名装订线内请勿答题第-6-页共36页mfd-tail-next=m;mfd-tail=m;初始化两个不同用户,把输入用户的用户名下的目录指针、文件指针初始化2.2.2系统用户的输出函数voiddisplayUser(MFD*mfd)Map*m=NULL;m=mfd-head;coutuser:
;while(m)coutuserNamenext;couthead;while(m)if(strcmp(userName,m-userName)=0)-7-returnm;m=m-next;returnNULL;进行用户的查找,找到则返回用户映射指针2.3创建文件函数boolcreateFile(Map*user,charfile_name,boolfile_protect3,intfile_length)File*file;file=(File*)malloc(sizeof(File);if(file=NULL)returnfalse;/进行文件的初始化strcpy(file-file_name,file_name);file-file_protect0=file_protect0;file-file_protect1=file_protect1;file-file_protect2=file_protect2;file-file_length=file_length;0file-next=NULL;if(user-file=NULL)file-read=file-write=;学号专业班级学生姓名装订线内请勿答题第-8-页共36页user-file=file;elseFile*op,*preOp=NULL;op=user-file;/查找是否存在同名文件while(op)if(strcmp(op-file_name,file-file_name)=0)coutThefilenamefile_nameisalreadyexit!
next;preOp-next=file;输入文件名,文件权限及文件长度,将文件的名称、读写权限、长度等进行初始化,然后查找是否存在同名文件,存在同名文件时则输出该文件已存在并报错2.4删除文件函数booldeleteFile(Map*user,charfile_name,AFD*afd)File*file=NULL,*prefile=NULL,*temp;file=afd-head;-9-/在打开文件中查找while(file)if(strcmp(file_name,file-file_name)=0)coutfile_namenext;file=user-file;/在文件中进行查找while(file)if(strcmp(file_name,file-file_name)=0)if(file=user-file)temp=file;user-file=file-next;elsetemp=file;prefile-next=file-next;deletetemp;returntrue;学号专业班级学生姓名装订线内请勿答题第-10-页共36页prefile=file;file=file-next;if(prefile-next=NULL)coutuseruserNamehasnotthefilefile_namefile;while(file)if(strcmp(file-file_name,file_name)=0)break;file=file-next;-11-if(file)File*xfile;xfile=(File*)malloc(sizeof(File);if(xfile=NULL)returnfalse;*xfile=*file;/根据文件的权限进行打开权限的赋值if(xfile-file_protect0=open_file_protect0)xfile-open_file_protect0=open_file_protect0;elsecoutnoreadpriority!
file_protect1=open_file_protect1)xfile-open_file_protect1=open_file_protect1;elsecoutnowritepriority!
file_protect2=open_file_protect2)学号专业班级学生姓名装订线内请勿答题第-12-页共36页xfile-open_file_protect2=open_file_protect2;elsecoutnoexcutepriority!
next=NULL;if(afd-head=NULL)afd-head=afd-tail=xfile;1elseif(afd-current_openmax_open)afd-tail-next=xfile;afd-tail=xfile;1elsecoutTheopenfileistoomany!
endl;returnfalse;elsecoutthefile_nameisnotexit!
current_open+=;afd-current_open+=;-13-false;输入要打开的文件名及文件权限,根据文件名在文件链表中查找,若没有找到则输出提示该文件不存在,若找到则根据输入的文件权限判断该文件是否有读、写、执行的权限,若没有则输出相关提示并报错,若有相关权限则输出该文件的读写信息。
判断已打开文件数是否超过最大打开数,若超过则输出提示打开了太多的文件并报错,若没有则继续运行2.6读文件函数boolreadFile(AFD*afd,charfile_name)File*file=NULL;file=afd-head;while(file)if(strcmp(file-file_name,file_name)=0)if(file-open_file_protect0)file-read+;returntrue;Elsecoutnoreadpriority!
nnext;coutnosuchfile!
head;while(file)if(strcmp(file-file_name,file_name)=0)if(file-open_file_protect1)file-write+;returntrue;elsecoutnowritepriority!
nnext;-15-coutnosuchfile!
head;while(file)if(strcmp(file-file_name,file_name)=0)if(file=afd-head)if(file=afd-tail)temp=file;afd-head=afd-tail=NULL;elsetemp=file;afd-head=file-next;学号专业班级学生姓名装订线内请勿答题第-16-页共36页elseif(file=afd-tail)temp=file;preFile-next=NULL;afd-tail=preFile;elsetemp=file;preFile-next=file-next;deletetemp;returntrue;preFile=file;file=file-next;coutThefileisnotexit!
endl;returnfalse;输入要关闭的文件名,在打开文件链表中查找该文件是否存在,若没有则输出提示该文件不存在并报错,若存在则继续运行,进行删除操作。
2.9显示文件函数2.9.1显示用户文件voiddisplayUserFile(Map*user)coutThefileListofuserNamefile;while(file)coutfile_namefile_protect0file_protect1file_protect2file_lengthnext;输出该用户下的文件链表,并输出对应文件的读、写、执行的权限信息和文件长度信息2.9.2显示已打开的文件voiddisplayOpenFile(AFD*afd,Map*user)coutTheopenfileofuserName:
head;while(file)coutfile_namefile_protect0file_protect1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告 设计 实现 一个 模拟 文件系统
![提示](https://static.bdocx.com/images/bang_tan.gif)