模拟文件系统.doc
《模拟文件系统.doc》由会员分享,可在线阅读,更多相关《模拟文件系统.doc(17页珍藏版)》请在沃文网上搜索。
1、存档资料 成绩: *课 程 设 计 报 告 书所属课程名称 操作系统 题 目 模拟文件系统 分 院 *分院 专业班级 学号 学生姓名 指导教师 2012 年 6 月 20 日 华东交通大学理工学院课程设计报告目录第1章 课程设计内容及要求.3第2章 需求分析.4第3章 系统设计及实现.5第4章 课程设计心得.16第5章 参考文献.17第1章 课程设计内容及要求课程设计题目:模拟文件系统课程设计内容及要求:通过本次实验,建立一个简单的模拟文件管理系统,理解用户界面和操作模拟管理在操作系统中的作用。本模拟文件管理系统实现文件的创建、文件的删除、文件目录的创建、删除文件目录、改变目录显示目录等功能。
2、本次课设由本人独立完成.第2章 需求分析该模拟文件系统包括目录文件(简称目录)、普通文件(简称文件),并实现下面一些基本功能:1改变目录:cd 目录名,工作目录转到指定的目录下。cd . ,返回根目录下2创建文件:create 文件名,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。3删除文件:delete 文件名,删除指定的文件。4显示目录:ls 目录名,显示目录下全部文件和第一级子目录,如果没有指定路径名,则显示当前目录下的内容。5创建目录:mkdir 目录名,再指定路径下创建指定的目录,或者在没有指定路径时,在当前目录下创建子目录。6删除目录:rmdir目录名,删除指定的
3、目录。7. 获得命令帮助 HELP 8. 退出文件系统 EXIT要考虑的特殊情况:1.各个命令对全路径和相对路径的支持A目录不存在时,给出错误信息B不能用cd 进入文件C相对路径的解析D路径中的空格剔除2.删除目录或文件时的问题A删除不存在的文件或目录,给出错误提示B删除目录时目录不为空; 如果该目录为空,则可删除,否则给出是否做删除,删除操作将该目录下的全部文件和子目录都删除C进入到某个目录下,却要删除本目录或者上级目录第3章 系统设计及实现模拟文件系统处理流程如下:结束安装文件系统选择操作 否 是删除文件delete创建文件creat创建目录mkdir删除目录rmdir浏览目录ls结束文件
4、系统的几个主要数据结构:索引节点的数据结构:struct inode struct inode *i_forw; struct inode *i_back; char I_falg; unsigned int I_ino; unsigned int I_count; unsigned int di_addrNADDR; unsigned short di_number; unsigned short di_mode; unsigned short di_uid; unsigned short di_gid; unsigned short di_size;超级块的数据结构: struct fil
5、sysunsigned short s_isize;unsigned long s_fsize;unsigned int s_nfree;unsigned short s_pfree;unsigned int s_freeNICPREE;unsigned int s_ninode;unsigned short s_pinode;unsigned int s_inodeNICINOD;unsigned int s_rinode;char s_fmod;有关目录的数据结构:struct dinodeunsigned short di_number;unsigned short di_mode;un
6、signed short di_uid;unsigned short di_gid;unsigned short di_size;unsigned int di_addrNADDR;struct directchar d_nameDIRSIZ;unsigned int d_ino;struct dirstruct direct ditectDIRNUM;int size;主要模块说明第 17 页 共 17 页创建文件 int get_file(int parent,char *file_name) /创建文件节点,成功则返回文件的索引号,失败返回-1int index;if(search(pa
7、rent,file_name,1,index)!=-1) /搜索在父目录下是否有同名文件存在,有则创建失败printf(File name repeated!n);return -1;for(int i=0;ifile_count; p-child_filetop=pos;p-file_count+;dir_change_flagparent+;return pos;int create(char *name) /创建文件的主调函数,前提是已经取得要创建文件的索引 /成功返回文件的索引号,否则返回-1int parent,p=0;parent=get_parent(name,p);if(par
8、ent=-1) /找不到父目录,输入错误,创建失败printf(Path name error!n);return -1;return create_file(parent,name+p); /开始创建文件创建目录int create_dir(int parent,char *dir_name) /在指定的目录下创建目录,如果成功则返回目录 /的索引号,否则返回-1if(dirparent.dir_count=8) /如果父目录已满,则创建失败printf(Parent directory is full!n);return -1;int pos=get_dir(parent,dir_name
9、); /开始创建目录if(pos=-1)printf(Create directory error!n);return -1;dir_node *p=&dirparent; /修改父目录的控制信息int top=p-dir_count; p-child_dirtop=pos;p-dir_count+;dir_change_flagparent+;return pos;int md(char *name) /创建目录的主调函数,它的参数只有用户输入 /如果创建成功,则返回目录的索引号,否则int parent,p=0; /返回-1parent=get_parent(name,p);if(pare
10、nt=-1) /父目录找不到,输入有误,创建失败printf(Path name error!n);return -1;return create_dir(parent,name+p); /开始创建目录删除文件void del_file(int pos) /删除文件,调用该函数的前提是已经取得要删除文件的索引号 return_block(pos); /释放磁盘块file_flagpos=0; fileflag_flagpos+;file_change_flagpos=0;int del_file(int parent,char *file_name) /在指定的目录下删除文件,删除成功则返回文
11、件的 /索引号,否则返回-1int del_pos,index;if(del_pos=search(parent,file_name,1,index)=-1)/搜索该文件是否存在,不存在则删除失败printf(The file to delete not exist!n);return -1;del_file(del_pos); /开始删除文件dir_node *p=&dirparent; /修改父目录的控制信息if(p-file_count=2)int top=p-file_count-1; p-child_fileindex=p-child_filetop;p-file_count-;di
12、r_change_flagparent+;return del_pos;int delfile(char *name) /删除文件的主调函数,前提是知道了删除文件的名字int parent,p=0;parent=get_parent(name,p);if(parent=-1)printf(Path name error!n);return -1;return del_file(parent,name+p);删除目录void del_dir(int pos) /删除指定的目录节点,该目录已经为空 dir_flagpos=0; dirflag_flagpos+;dir_change_flagpos
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 文件系统
