ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:789.86KB ,
资源ID:14902001      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14902001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计linux下的二级文件系统.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计linux下的二级文件系统.docx

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

2、动手能力。二课程设计的内容及要求1实验内容通过一个简单的二级文件系统设计,加深对文件系统的内部功能以及内部实现的理解。要求模拟采用二级目录结构的磁盘文件系统的文件操作,能实现以下几条命令,用输入命令来模拟用户程序中调用的文件操作:Login 用户登录Dir 列文件目录(列出文件名、物理地址、保护码和文件长度)Create 创建文件Delete 删除文件Open 打开文件Close 关闭文件Read 读文件Write 写文件源文件可以进行读写保护2实验要求文件系统管理中用到的数据结构有:首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找

3、和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2并以编号作为物理地址,在目录中进行登记。三实现原理 首先,实现Login用户登录,(用户名:lhx密码:12358)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是homelhxkefile),利用命令行的方式进行注册、登录、各种各样的文件操作。四关键算法实现流程图流程图:关键算法:1.用户登录功能的实现typedef struct userMsg char loginName20; char loginPasswd20;UserMsg;int login(char* name

4、,char* passwd) UserMsg um; int count = 0,size = sizeof(UserMsg),nres,pres; int fd = open(/home/lhx/study/kefile/login.dat,O_RDONLY); if(fd = -1) return -1; while(1) if(read(fd,&um,size) d_type) case DT_DIR: fname = 目录; break; case DT_LNK: fname = 软链接; break; case DT_BLK: fname = 块设备; break; case DT_

5、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); return 0;4.文件创建、目录创建、目录删除、文件删除等实现if(strcmp(resbuf,create)=0) int mode = atoi(pbuf); if(mode = 0) printf(无法识别的文件权限n); continue; filedesc = creat(ubuf,tento

6、e(mode); if(filedesc = -1) printf(创建失败,该文件已存在n); else printf(创建成功n); close(filedesc); else if(strcmp(resbuf,type) = 0) filedesc = open(ubuf,O_RDONLY); if(filedesc = -1) printf(该文件不存在!n); else char buf1025; int count; printf(%s文件的内容:n,ubuf); while(1) count = read(filedesc,buf,1024); if(count = 0) bre

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

8、 else if(strcmp(resbuf,rmdir) = 0) filedesc = rmdir(ubuf); if(filedesc != 0) printf(删除目录失败,目录可能不存在或者目录非空n); else printf(删除目录%s成功n,ubuf); else if(strcmp(resbuf,cd) = 0) char dpath50; sprintf(dpath,%s%s,upath,ubuf); strcpy(upath,dpath); filedesc = chdir(dpath); if(filedesc != 0) printf(更改工作目录失败!n); el

9、se printf(当前工作目录:%sn,dpath); else if(strcmp(resbuf,dir) = 0) if(strcmp(ubuf,-nl) = 0) DIR* dir; struct dirent* drt; dir = opendir(upath); while(1) drt = readdir(dir); if(drt = NULL) break; printf(%st,drt-d_name); printf(n); closedir(dir); else if(strcmp(ubuf,-l) = 0) listdtl(upath); else printf(不能识别

10、的选项%s!n,ubuf); continue; else printf(未能识别的命令,请核对!n); 五软件运行环境及限制1.运行环境运行环境:linux使用语言:c语言编程工具:Kate2.具体演示2.1注册新用户 lxc密码12358 2.2 登录文件系统 lxc 密码123582.3 创建文件1.c并查看当前目录下的文件信息2.4创建新目录 dirc2.5 删除目录 dirc2.6 查看文件1.c的内容2.7删除文件 1.c七心得体会操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对

11、树的展示有了很好的学习,对二级文件系统也有了很好的了解,如何解决实现里面功能的各种问题。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。附件(代码)mfun.h#ifndef _MFUN_H_#define _MFUN_H_#include #include #include #include #include #include typedef struct userMsg char loginName20; char loginPasswd20;Use

12、rMsg;int login(char* name,char* passwd) UserMsg um; int count = 0,size = sizeof(UserMsg),nres,pres; int fd = open(/home/lhx/study/kefile/login.dat,O_RDONLY); if(fd = -1) return -1; while(1) if(read(fd,&um,size) 999 | num 0) return -1; res = 64*num/100 + 8*(num/10%10) +num%10; return res;int listdtl(

13、char* pname) struct dirent* dlist; int tmp,count; char fpath50,*fname; count = scandir(pname,&dlist,NULL,alphasort); if(count = -1)return -1; printf(%10st%10st%10st%10st%10sn,编号,类型,所有者ID,大小,文件名); for(tmp = 0;tmp d_name); stat(fpath,&st); switch(dlisttmp-d_type) case DT_DIR: fname = 目录; break; case D

14、T_LNK: fname = 软链接; break; case DT_BLK: fname = 块设备; break; case DT_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); return 0;#endiffile.c#include mfun.h#include int isLogin;int main() char resbuf20,ubuf

15、20,pbuf20,upath50; printf(-文件系统演示课设-n); while(!isLogin) printf(操作说明:n); printf(1:登陆 格式: login username passwordn); printf(2:注册 格式: regist username passwordn); printf(请输入命令:); scanf(%s %s %s,resbuf,ubuf,pbuf); if(strcmp(resbuf,login) = 0) int lres = login(ubuf,pbuf); if(lres = -1) printf(用户%s不存在,请核对信

16、息或注册n,ubuf); continue; else if(lres = 0) printf(密码与%s不匹配,请核对n,ubuf); continue; else 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); else printf(当前工作目录:%sn,upath); system(clear); else if(str

17、cmp(resbuf,regist) = 0) int rres = regist(ubuf,pbuf); if(rres = -1) printf(注册失败,请重试n); else printf(注册成功,赶快登陆系统演示吧n); mkdir(ubuf,0741); else printf(您输入的命令无法识别,请重试n); printf(-文件操作演示-n); while(1) int filedesc; printf(-n); printf(创建文件:create filename mode(eg:666)n); printf(查看文件内容:type filename -nn); pri

18、ntf(删除文件:delete filename -nn); printf(创建目录:mkdir dirname -nn); printf(删除目录:rmdir dirname -nn); printf(察看当前目录下的文件:dir option(-l:detail,-nl) -nn); printf(进入目录:cd dirname -nn); printf(请输入操作命令:); scanf(%s %s %s,resbuf,ubuf,pbuf); if(strcmp(resbuf,create)=0) int mode = atoi(pbuf); if(mode = 0) printf(无法识

19、别的文件权限n); continue; filedesc = creat(ubuf,tentoe(mode); if(filedesc = -1) printf(创建失败,该文件已存在n); else printf(创建成功n); close(filedesc); else if(strcmp(resbuf,type) = 0) filedesc = open(ubuf,O_RDONLY); if(filedesc = -1) printf(该文件不存在!n); else char buf1025; int count; printf(%s文件的内容:n,ubuf); while(1) cou

20、nt = read(filedesc,buf,1024); if(count = 0) break; bufcount = 0; printf(%s,buf); else if(strcmp(resbuf,delete) = 0) filedesc = unlink(ubuf); if(filedesc != 0) printf(删除失败,文件可能不存在n); else printf(删除文件%s成功n,ubuf); else if(strcmp(resbuf,mkdir) = 0) filedesc = mkdir(ubuf,0751); if(filedesc != 0) printf(创

21、建目录失败,目录可能已经存在了n); else printf(创建目录%s成功n,ubuf); else if(strcmp(resbuf,rmdir) = 0) filedesc = rmdir(ubuf); if(filedesc != 0) printf(删除目录失败,目录可能不存在或者目录非空n); else printf(删除目录%s成功n,ubuf); else if(strcmp(resbuf,cd) = 0) char dpath50; sprintf(dpath,%s%s,upath,ubuf); strcpy(upath,dpath); filedesc = chdir(d

22、path); if(filedesc != 0) printf(更改工作目录失败!n); else printf(当前工作目录:%sn,dpath); else if(strcmp(resbuf,dir) = 0) if(strcmp(ubuf,-nl) = 0) DIR* dir; struct dirent* drt; dir = opendir(upath); while(1) drt = readdir(dir); if(drt = NULL) break; printf(%st,drt-d_name); printf(n); closedir(dir); else if(strcmp(ubuf,-l) = 0) listdtl(upath); else printf(不能识别的选项%

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2