首页 操作系统课程设计-基于java二级文件系统

操作系统课程设计-基于java二级文件系统

举报
开通vip

操作系统课程设计-基于java二级文件系统 操作系统课程设计报告 题 目: 文件系统的模拟设计 姓名:崔峰海 学号:200925501132 指导老师:翟一鸣 学校:烟台大学 时间:20120901 一、设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、设计内容 (1)概述 为Linux系统设计一个简单的二级文件系...

操作系统课程设计-基于java二级文件系统
操作系统课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 报告 题 目: 文件系统的模拟设计 姓名:崔峰海 学号:200925501132 指导老师:翟一鸣 学校:烟台大学 时间:20120901 一、设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、设计内容 (1)概述 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 (2)设计原理和系统总体功能框架图 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。 4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5、对文件或目录的操作采用windows系统的API函数来实现。 6、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、复制文件、移动文件、返回根目录、退出。 功能结构图如图1.0所示: (3)详细设计及少数重要编码的说明 这次课程设计中,我负责4个板块,分别是显示列表函数和目录、创建函数文件创建函数、打开文件函数和关闭文件系统函数。 1、 显示列表函数和目录 流程图如图1.1所示 SHAPE \* MERGEFORMAT 2、 文件创建函数 算法:查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。申请inode空间(ialloc函数),申请硬盘block空间(balloc函数),申请失败则结束。将文件内容写入inode空间和block空间。修改当前目录的结构,修改inode位图,block位图,写入模拟硬盘。详细过程如流程图1.2所示: SHAPE \* MERGEFORMAT ③、打开文件函数 对文件进行关闭操作,若此时文件不存在或处于读状态或写状态,则返回关闭失败信息;若此时文件处于空闲状态,则调用Close函数进行关闭操作。流程图如图1.3所示: SHAPE \* MERGEFORMAT ④、关闭文件系统函数 对文件进行打开操作,若此时文件不存在或已处于打开状态或读状态或写状态,则返回打开失败信息;若此时文件处于空闲状态,则调用Open函数进行打开操作。流程图如图1.4所示: SHAPE \* MERGEFORMAT (4)运行结果分析 程序结果如图1.5-1.7所示 图1.5 图1.6 图1.7 (5)设计小结 操作系统课程设计是本课程重要的实践教学环节。课程设计的目的,一方面使学生更透彻地理解操作系统的基本概念和原理,使之由抽象到具体;另一方面,通过课程设计加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。与本课程的实验教学相比,课程设计独立设课,具有更多的学时,给学生更多自行设计、自主实验的机会,充分放手让学生真正培养学生的实践动手能力,全面提高学生的综合素质。 对于本次操作系统课程设,由于Linux比较陌生,刚起步阶段花了很大时间去查阅各种资料。当完成设计时,感觉掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识。对二级文件系统也有了很好的了解,熟练C语言布局的使用,如何解决实现里面功能的各种问题。 (6)参考文献 [1]计算机操作系统(第3版),汤小丹,西安电子科技大学出版社,2007年7月 [2]C语言程序设计,孟庆昌,人民邮电出版社,2006年4月 [3]计算机操作系统教程(第3版)习题解答与实验指导,张尧学,清华大学出版社,2006年11月 (7)附源代码 12、显示列表函数dir( )和目录创建函数mkdir( )等(文件名dir.c) #include "stdio.h" #include "string.h" #include "filesys.h" _dir( ) /*dir*/ { unsigned int di_mode; int i,j,one; struct inode *temp_inode; printf("\nCURRENT DIRECTORY:\n"); for(i=0;idi_mode; for(j=0;j<12;j++) { one=di_mode%2; di_mode=di_mode/2; if (one) printf("x"); else printf("-");} if(temp_inode->di_mode & DIFILE) { printf(" %d bytes\n",temp_inode->di_size); printf("block chain of the file:"); for(j=0;jdi_size/BLOCKSIZ+1;j++) printf("%d--",temp_inode->di_addr[j]); printf("end\n"); } else printf("\n"); iput(temp_inode); } }} mkdir(dirname) /*mkdir*/ char *dirname; { int dirid,dirpos; struct inode *inode; struct direct buf[BLOCKSIZ/(DIRSIZ+2)]; unsigned int block; memset(buf,0,(BLOCKSIZ/(DIRSIZ+2))*sizeof(struct direct)); dirid=namei(dirname); if(dirid!=NULL) { inode=iget(dirid); if (inode->di_mode&DIDIR) printf("\n directory already existed!!\n"); else printf("\n%s is a file name,&can't creat a dir the same name",dirname); iput(inode); return;} dirpos=iname(dirname); inode=ialloc( ); // inode->i_ino=dirid; dir.direct[dirpos].d_ino=inode->i_ino; dir.size++; /* fill the new dir buf*/ strcpy(buf[0].d_name,"."); buf[0].d_ino=inode->i_ino; strcpy(buf[1].d_name,".."); buf[1].d_ino=cur_path_inode->i_ino; block=balloc( ); fseek(fd,DATASTART+block*BLOCKSIZ,SEEK_SET); fwrite(buf,1,BLOCKSIZ,fd); inode->di_size=2*sizeof(struct direct); inode->di_number=1; inode->di_mode=user[user_id].u_default_mode; inode->di_uid=user[user_id].u_uid|DIDIR; inode->di_gid=user[user_id].u_gid; inode->di_addr[0]=block; iput(inode); return;} chdir(dirname) /*chdir*/ char *dirname; { unsigned int dirid; struct inode *inode; unsigned short block; int i,j,low=0,high=0; dirid=namei(dirname); if(dirid==NULL) { printf("\n %s does not existed\n",dirname); return ;} inode=iget(dir.direct[dirid].d_ino); if(!access(user_id,inode,user[user_id].u_default_mode)) { printf("\nThe directory %s ,Permission deny",dirname); iput(inode); return ;} /*pack the current directory for(i=0;idi_size/BLOCKSIZ+1;i++) // bfree(cur_path_inode->di_addr[i]); for(i=0;i0) { block=balloc( ); cur_path_inode->di_addr[i]=block; fseek(fd,DATASTART+block*BLOCKSIZ,SEEK_SET); fwrite(&dir.direct[i],1,BLOCKSIZ,fd);} else {fseek(fd,DATASTART+cur_path_inode->di_addr[0]*BLOCKSIZ,SEEK_SET); fwrite(&dir.direct[0],1,BLOCKSIZ,fd);}} cur_path_inode->di_size=dir.size*(sizeof(struct direct)); iput(cur_path_inode); cur_path_inode=inode; /* read the change dir from disk */ j=0; for(i=0;idi_size/BLOCKSIZ+1;i++) { fseek(fd,DATASTART+ inode->di_addr[i]*BLOCKSIZ,SEEK_SET); fread(&dir.direct[j],1,BLOCKSIZ,fd); j+=BLOCKSIZ/(DIRSIZ+2); } return;} 13、文件创建函数 creat( ) ( 文件名creat.c) #include "stdio.h" #include "filesys.h" creat(user_id,filename,mode) unsigned int user_id; char *filename; unsigned short mode; {unsigned int di_ith,di_ino; struct inode *inode; int i,j,k,user_p; for(user_p=0;user_pdi_size/BLOCKSIZ+1;i++) bfree(inode->di_addr[i]); /*to do: add code here to update the pointer of the sys_file*/ for(i=0;idi_uid; user[k].u_gid=inode->di_gid; for(j=0;ji_ino; inode->di_mode=user[k].u_default_mode|DIFILE; inode->di_uid=user[k].u_uid; inode->di_gid=user[k].u_gid; inode->di_addr[0]=balloc(); inode->di_size=0; inode->di_number=1; for (i=0;idi_size; else sys_ofile[i].f_off=0; /*alloc the user open file item*/ for(j=0;jdi_size/BLOCKSIZ+1;i++) bfree(inode->di_addr[i]); inode->di_size=0; } return j;} 15、关闭文件函数close( ) ( 文件名close.c) #include "stdio.h" #include "filesys.h" close(user_id,cfd) /*close*/ unsigned int user_id; unsigned short cfd; { struct inode *inode; int j,k; for(j=0;j
本文档为【操作系统课程设计-基于java二级文件系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:231KB
软件:Word
页数:0
分类:工学
上传时间:2018-09-22
浏览量:38