模拟文件系统的设计实现分析.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《模拟文件系统的设计实现分析.pdf》由会员分享,可在线阅读,更多相关《模拟文件系统的设计实现分析.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.-中北大学中北大学操作系统课程设计操作系统课程设计说说 明明 书书学学院院、系系:专专业业:学学 生生 姓姓 名:名:设设 计计 题题 目目:软件学院软件工程xxx学学 号:号:xxx模拟文件系统的设计与实现起起 迄迄 日日 期期:2015 年 12 月 28 日-2016 年 1 月 8 日指指 导导 教教 师师:xxx 2016 年 1 月 8 日-可修编.-1 1 需求分析需求分析通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现
2、机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。模拟二级文件管理系统的课程设计目的是通过研究 Linux 的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。2 2总体设计总体设计结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。文件的创建:create文件关闭:close文件的打开:open文件的读:read文件的写:write文件关闭:close删除文件:delete创建子目录:mkdir删除子目录:rmdir列出文件目录:dir退出:exit系统执行流程图系统执行流程图删除文
3、件开 始选择操作创建文件读文件写文件创建文件夹删除文件夹删除子目录显 示当 前子 目录创建子目录更改目录退出-可修编.-3 3详细设计详细设计主要数据结构:退出#define MEM_D_SIZE 1024*1024/总磁盘空间为 1M#define DISKSIZE 1024/磁盘块的大小 1K/磁盘块数目 1K#define DISK_NUM 1024#define FATSIZEDISK_NUM*sizeof(struct fatitem)/FAT 表大小#define ROOT_DISK_NO FATSIZE/DISKSIZE+1/根目录起始盘块号#define ROOT_DISK_S
4、IZE sizeof(struct direct)#define DIR_MAXSIZE1024#define MSD5#define MOFN5/根目录大小/路径最大长度为 1KB/最大子目录数 5/最大文件深度为 5/最大写入文字长度 128KB#define MAX_WRITE 1024*128struct fatitem/*size 8*/;struct direct/*-文件控制快信息-*/struct FCBint item;/*存放文件下一个磁盘的指针*/char em_disk;/*磁盘块是否空闲标志位 0 空闲*/char name9;/*文件/目录名 8 位*/char p
5、roperty;/*属性 1 位目录 0 位普通文件*/-可修编.-int size;/*文件/目录字节数、盘块数)*/int firstdisk;/*文件/目录 起始盘块号*/int next;/*子目录起始盘块号*/int sign;/*1 是根目录 0 不是根目录*/directitemMSD+2;struct opentablestruct openttableitemchar name9;/*文件名*/int firstdisk;/*起始盘块号*/int size;/*文件的大小*/openitemMOFN;int cur_size;/*当前打文件的数目*/;管理文件的主要代码:in
6、t create(char*name)int i,j;if(strlen(name)8)/*文件名大于 8 位*/return(-1);for(j=2;jdirectitemj.name,name)break;if(jMSD+2)/*文件已经存在*/return(-4);for(i=2;idirectitemi.firstdisk=-1)break;if(i=MSD+2)/*无空目录项*/return(-2);if(u_opentable.cur_size=MOFN)/*打开文件太多*/return(-3);for(j=ROOT_DISK_NO+1;j=DISK_NUM)return(-5);
7、fatj.em_disk=1;/*将空闲块置为已经分配*/*-填写目录项-*/strcpy(cur_dir-directitemi.name,name);cur_dir-directitemi.firstdisk=j;cur_dir-directitemi.size=0;cur_dir-directitemi.next=j;-可修编.-cur_dir-directitemi.property=0;/*-*/fd=open(name);return 0;int open(char*name)int i,j;for(i=2;idirectitemi.name,name)break;if(i=MSD
8、+2)return(-1);/*-是文件还是目录-*/if(cur_dir-directitemi.property=1)return(-4);/*-文件是否打开-*/for(j=0;jMOFN;j+)if(!strcmp(u_opentable.openitemj.name,name)break;if(j=MOFN)/*文件打开太多*/return(-3);/*-查找一个空闲用户打开表项-*/for(j=0;jdirectitemi.firstdisk;strcpy(u_opentable.openitemj.name,name);u_opentable.openitemj.size=cur
9、_dir-directitemi.size;u_opentable.cur_size+;/*-返回用户打开表表项的序号-*/return(j);int close(char*name)int i;for(i=0;i=MOFN)-可修编.-return(-1);/*-清空该文件的用户打开表项的内容-*/strcpy(u_opentable.openitemi.name,);u_opentable.openitemi.firstdisk=-1;u_opentable.openitemi.size=0;u_opentable.cur_size-;return 0;int write(int fd,c
10、har*buf,int len)char*first;int item,i,j,k;int ilen1,ilen2,modlen,temp;/*-用$字符作为空格#字符作为换行符-*/char Space=32;char Endter=n;for(i=0;ilen;i+)if(bufi=$)bufi=Space;else if(bufi=#)bufi=Endter;/*-读取用户打开表对应表项第一个盘块号-*/-可修编.-item=u_opentable.openitemfd.firstdisk;/*-找到当前目录所对应表项的序号-*/for(i=2;idirectitemi.firstdis
11、k=item)break;/*-计算出该文件的最末地址-*/first=fdisk+item*DISKSIZE+u_opentable.openitemfd.size%DISKSIZE;/*-如果最后磁盘块剩余的大小大于要写入的文件的大小-*/if(DISKSIZE-u_opentable.openitemfd.size%DISKSIZElen)elsefor(i=0;idirectitemtemp.size=cur_dir-directitemtemp.size+len;/*写一部分内容到最后一块磁盘块的剩余空间(字节)*/firsti=buf i;-可修编.-+)/*-计算分配完最后一块磁
12、盘的剩余空间(字节)还剩下多少字节未存储-*/ilen1=len-(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE);ilen2=ilen1/DISKSIZE;modlen=ilen1%DISKSIZE;if(modlen0)ilen2=ilen2+1;/*-还需要多少块磁盘块-*/for(j=0;jilen2;j+)for(i=ROOT_DISK_NO+1;i=DISK_NUM)/*-如果磁盘块已经分配完了-*/return(-1);if(fati.em_disk=0)break;first=fdisk+i*DISKSIZE;/*-找到的那块空闲磁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 文件系统 设计 实现 分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内