操作系统课程设计linux下的二级文件系统方案_第1页
操作系统课程设计linux下的二级文件系统方案_第2页
操作系统课程设计linux下的二级文件系统方案_第3页
操作系统课程设计linux下的二级文件系统方案_第4页
操作系统课程设计linux下的二级文件系统方案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生课程设计报告实验课名称:操作系统实验项目名称:文件系统设计专班业名称:计算机科学与技术级:-学学生姓号:-名:-教师姓名:-2014年6月30日一、课程设计的目的.二、课程设计的内容及要求.内容.要求.三、实现原理.四、关键算法实现流程图.流程图.关键算法.五、软件运行环境及限制.六结果输出及分析.七心得体会.一课程设计的目的本课程设计是学习完计算机操作系统课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。二课程设计的内容及要求实验内容通过一个简单的二级文件系统设计,加深对文件系统的内部功能以

2、及内部实现的理解。要求模拟采用二级目录结构的磁盘文件系统的文件操作,能实现以下几条命令,用输入命令来模拟用户程序中调用的文件操作:Login用户登录Dir列文件目录(列出文件名、物理地址、保护码和文件长度)Create创建文件Delete删除文件Open打开文件Close关闭文件Read读文件Write写文件源文件可以进行读写保护实验要求文件系统管理中用到的数据结构有:首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2并以编号作为物理地址,在目录中进行

3、登记。三实现原理首先,实现Login用户登录,(用户名:lhx密码:12358)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是homelhxkefile),利用命令行的方式进行注册、登录、各种各样的文件操作。四关键算法实现流程图流程图:开始登录否验证是否成功?是目录右键进行选择操作新建目录新建文件删除打开文件属性结束关键算法:用户登录功能的实现typedefstructuserMsgcharloginName20;charloginPasswd20;UserMsg;intlogin(char*name,char*passwd)UserMsgum;intcou

4、nt=0,size=sizeof(UserMsg),nres,pres;intfd=open(/home/lhx/study/kefile/login.dat,O_RDONLY);if(fd=-1)return-1;while(1)if(read(fd,&um,size)size)return-1;nres=strcmp(name,um.loginName);pres=strcmp(passwd,um.loginPasswd);if(nres=0&pres=0)return1;if(nres=0&pres!=0)return0;count+;lseek(fd,SEEK_SET,size*cou

5、nt);lseek(fd,SEEK_SET,0);close(fd);用户注册具体实现intregist(char*name,char*passwd)UserMsgum;intcount=0,size=sizeof(UserMsg);intfd=open(/home/lhx/study/kefile/login.dat,O_WRONLY|O_APPEND);if(fd=-1)return-1;strcpy(um.loginName,name);strcpy(um.loginPasswd,passwd);lseek(fd,SEEK_END,0);count=write(fd,&um,size);

6、if(count!=size)return-1;return1;查看目录下文件intlistdtl(char*pname)structdirent*dlist;inttmp,count;charfpath50,*fname;count=scandir(pname,&dlist,NULL,alphasort);if(count=-1)return-1;printf(%10st%10st%10st%10st%10sn,编号,类型,所有者ID,大小,文件名);for(tmp=0;tmpd_name);stat(fpath,&st);switch(dlisttmp-d_type)caseDT_DIR:

7、fname=目录;break;caseDT_LNK:fname=软链接;break;caseDT_BLK:fname=块设备;break;caseDT_REG:fname=普通文件;break;default:fname=其他类型;break;printf(%10lut%10st%10ut%10lut%10sn,st.st_ino,fname,st.st_uid,st.st_size,dlisttmp-d_name);return0;文件创建、目录创建、目录删除、文件删除等实现if(strcmp(resbuf,create)=0)intmode=atoi(pbuf);if(mode=0)pri

8、ntf(无法识别的文件权限n);continue;filedesc=creat(ubuf,tentoe(mode);if(filedesc=-1)printf(创建失败,该文件已存在n);elseprintf(创建成功n);close(filedesc);elseif(strcmp(resbuf,type)=0)filedesc=open(ubuf,O_RDONLY);if(filedesc=-1)printf(该文件不存在!n);elsecharbuf1025;intcount;printf(%s文件的内容:n,ubuf);while(1)count=read(filedesc,buf,10

9、24);if(count=0)break;bufcount=0;printf(%s,buf);elseif(strcmp(resbuf,delete)=0)filedesc=unlink(ubuf);if(filedesc!=0)printf(删除失败,文件可能不存在n);elseprintf(删除文件%s成功n,ubuf);elseif(strcmp(resbuf,mkdir)=0)filedesc=mkdir(ubuf,0751);if(filedesc!=0)printf(创建目录失败,目录可能已经存在了n);elseprintf(创建目录%s成功n,ubuf);elseif(strcm

10、p(resbuf,rmdir)=0)filedesc=rmdir(ubuf);if(filedesc!=0)printf(删除目录失败,目录可能不存在或者目录非空n);elseprintf(删除目录%s成功n,ubuf);elseif(strcmp(resbuf,cd)=0)chardpath50;sprintf(dpath,%s%s,upath,ubuf);strcpy(upath,dpath);filedesc=chdir(dpath);if(filedesc!=0)printf(更改工作目录失败!n);elseprintf(当前工作目录:%sn,dpath);elseif(strcmp(

11、resbuf,dir)=0)if(strcmp(ubuf,-nl)=0)DIR*dir;structdirent*drt;dir=opendir(upath);while(1)drt=readdir(dir);if(drt=NULL)break;printf(%st,drt-d_name);printf(n);closedir(dir);elseif(strcmp(ubuf,-l)=0)listdtl(upath);elseprintf(不能识别的选项%s!n,ubuf);continue;elseprintf(未能识别的命令,请核对!n);五软件运行环境及限制2.22.3登录文件系统lxc密

12、码12358创建文件1.c并查看当前目录下的文件信息运行环境运行环境:linux使用语言:c语言编程工具:Kate具体演示注册新用户lxc密码123582.4创建新目录dirc2.5删除目录dirc2.6查看文件1.c的内容2.7删除文件1.c七心得体会操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,如何解决实现里面功能的各种问题。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的

13、知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。附件(代码)mfun.h#ifndef_MFUN_H_#define_MFUN_H_#include#include#include#include#include#includetypedefstructuserMsgcharloginName20;charloginPasswd20;UserMsg;intlogin(char*name,char*passwd)UserMsgum;intcount=0,size=sizeof(UserMsg),nres,pres;intfd=open(/home/lhx/st

14、udy/kefile/login.dat,O_RDONLY);if(fd=-1)return-1;while(1)if(read(fd,&um,size)999|num0)return-1;res=64*num/100+8*(num/10%10)+num%10;returnres;intlistdtl(char*pname)structdirent*dlist;inttmp,count;charfpath50,*fname;count=scandir(pname,&dlist,NULL,alphasort);if(count=-1)return-1;printf(%10st%10st%10st

15、%10st%10sn,编号,类型,所有者ID,大小,文件名);for(tmp=0;tmpd_name);stat(fpath,&st);switch(dlisttmp-d_type)caseDT_DIR:fname=目录;break;caseDT_LNK:fname=软链接;break;caseDT_BLK:fname=块设备;break;caseDT_REG:fname=普通文件;break;default:fname=其他类型;break;printf(%10lut%10st%10ut%10lut%10sn,st.st_ino,fname,st.st_uid,st.st_size,dlis

16、ttmp-d_name);return0;#endiffile.c#includemfun.h#includeintisLogin;intmain()charresbuf20,ubuf20,pbuf20,upath50;printf(-文件系统演示课设n);while(!isLogin)printf(操作说明:n);printf(1:登陆格式:loginusernamepasswordn);printf(2:注册格式:registusernamepasswordn);printf(请输入命令:);scanf(%s%s%s,resbuf,ubuf,pbuf);if(strcmp(resbuf,l

17、ogin)=0)intlres=login(ubuf,pbuf);if(lres=-1)printf(用户%s不存在,请核对信息或注册n,ubuf);continue;elseif(lres=0)printf(密码与%s不匹配,请核对n,ubuf);elsecontinue;printf(登陆成功n);isLogin=1;sprintf(upath,/home/lhx/study/kefile/%s/,ubuf);lres=chdir(ubuf);if(lres!=0)printf(进入目录失败n);printf(Error:%sn,strerror(errno);elseprintf(当前工

18、作目录:%sn,upath);system(clear);elseif(strcmp(resbuf,regist)=0)intrres=regist(ubuf,pbuf);if(rres=-1)printf(注册失败,请重试n);elseelseprintf(注册成功,赶快登陆系统演示吧n);mkdir(ubuf,0741);printf(您输入的命令无法识别,请重试n);printf(-文件操作演示n);while(1)intfiledesc;printf(n);printf(创建文件:createfilenamemode(eg:666)n);printf(查看文件内容:typefilena

19、me-nn);printf(删除文件:deletefilename-nn);printf(创建目录:mkdirdirname-nn);printf(删除目录:rmdirdirname-nn);printf(察看当前目录下的文件:diroption(-l:detail,-nl)-nn);printf(进入目录:cddirname-nn);printf(请输入操作命令:);scanf(%s%s%s,resbuf,ubuf,pbuf);if(strcmp(resbuf,create)=0)intmode=atoi(pbuf);if(mode=0)printf(无法识别的文件权限n);continue

20、;filedesc=creat(ubuf,tentoe(mode);if(filedesc=-1)printf(创建失败,该文件已存在n);elseprintf(创建成功n);close(filedesc);elseif(strcmp(resbuf,type)=0)filedesc=open(ubuf,O_RDONLY);if(filedesc=-1)printf(该文件不存在!n);elsecharbuf1025;intcount;printf(%s文件的内容:n,ubuf);while(1)count=read(filedesc,buf,1024);if(count=0)break;bufcount=0;printf(%s,buf);elseif(strcmp(resbuf,delete)=0)filedesc=unlink(ubuf);if(filedesc!=0)printf(删除失败,文件可能不存在n);elseprintf(删除文件%s成功n,ubuf);elseif(strcmp(resbuf,mkdir)=0)fil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论