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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4513874.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(操作系统课程设计报告-模拟文件系统.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

操作系统课程设计报告-模拟文件系统.doc

1、 . 目录 第1章 需求分析……...….........……………………………………1 第2章 概要设计……...….........……………………………………1 2.1 系统的主要功能……...….........…………………………….1 2.

2、2系统模块功能构造……...….........……………………..……1 2.3运行环境要求……...….........……………………………..…2 2.4数据构造设计……...….........…………………………..……2 第3章 详细设计……...….........……………………………………3 3.1模块设计……...….........…………………………………..…3 3.2算法流程图……...….........…………………………..………3 第4章 系统源代码……...….........…………………………………4 第5章 系统测试及调试……...…

3、……………………………4 5.1运行结果及分析……...….........……………………..………4 5.2系统测试结论……...….........…………………………..……5 第6章 总结与体会……...….........…………………………………6 第7章 参考文献……...….........……………………………………6 附录……...….........……………………………………………….….7 第1章 需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的

4、理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统构造、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的开展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统构造,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章 概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创立主目录 2) 能够实现以下命令: l Login 用户登录 Create 建立文件 l Read 读取文件 Write写入文件 l D

5、elete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 2.2系统模块功能构造 2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据构造设计 用户构造:账号与密码构造 typedef struct users { char     name[8]; char     pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否那么提示失败要求重新输入。 users usrarray[8] = { "usr1","u

6、sr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; (3)数据构造说明 a)文件构造链表 struct fnode { char filename[FILENAME_LENGTH]; int  isdir; int isopen; char content[255]; fnode *parent; fnode *child; fnode *prev; fnode *next; }

7、 b)函数介绍 fnode *initfile(char filename[],int isdir);//初始化文件或目录 void createroot();//建立系统根目录 int run();系统运行 int findpara(char *topara);对参数进展处理 bool chklogin(char *users, char *pwd);检查账号与口令 void help();命令列表 int mkdir();建立目录 int create();建立文件 int read();读取文件 int write();写入文件 int del();删除文件

8、int cd();切换目录 int dir();文件与目录列表 第3章 详细设计 3.1模块设计 此课程设计把文本作为研究对象来模拟操作系统的文件系统工作过程。所以用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储效劳。 所有用户构成一个数组,每个数组元素是一个构造体,每个构造体包括三局部,用户的用户名、用户密码和文件链表〔由于模拟文件系统的文件数量不多,故文件表采用线性链表来存储。线性表每个结点放置一个文件的FCB,其中存储一个文件的信息,文件名、长度、类型、创立时间等〕; 磁盘空间分配表,采用链表构造,每个节点保存模拟磁盘的一个逻辑块的信息,包括块的最大长度,

9、文件占用长度,占用标志。如果占用标志为0,即该空间可分配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块,并置占用位为0。当有进程申请磁盘空间时,从头开场遍历,检查占用位,如果该块为可分配,那么检查块大小,假设块长度大于或等于申请空间大小,那么把块的前一局部〔等于申请大小〕分配给文件,并置标志位为占用。剩下的大小作来一个新块,作来一个新节点插入到原节点的后边,标志位为可用。这样就实现了模拟磁盘的线性分配。 3.2算法流程图 模拟二级文件系统 主界面 用户登录 切换目录 退出登录 建立目录 删除文件 写入文件 读取文件 建立文件

10、 第4章 系统源代码 见附录 第5章 系统测试及调试 5.1运行结果及分析 5.2系统测试结论 从运行结果截图中可以看到,程序分别执行了它所包含的7个功能,并且每个功能都能正确的执行。假设程序执行开场,三次都未输入正确的和密码,程序会退出不再执行。 第6章 总结与体会 虽然我们做过很屡次课程设计了,但是感觉自己还有好多需要学习的地方,接到题目要求时,设计大体的框架,考虑好所使用的数据构造,然后用高级编程语言分模块的把架子的思路编写出来,调试,运行,再看看是不

11、是符合题目的要求,上网找些资料,看看想想是不是要提高要求,才可以满足实际的需要,最后把收集的劳动成果组合起来,一个小程序终于成型了,虽然每次的过程差不多都一样,但是每次都会有不同的体会。 通过本次的课程设计,使我能够正确运用操作系统课程中所学的根本理论和知识,加深了对文件系统根本概念的理解,以及磁盘文件系统的文件操作。在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便。总的来说通过

12、这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,通过这次课程设计,使我对操作系统和编程产生兴趣,我想我会在这条路上继续前进下去。我相信,只要不断的严格要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的开展和提高。 第7章 参考文献 ?操作系统原理实验教程?,清华大学胡峰松主编 ?操作系统实验教程?,清华大学丽芬等编著 ?计算机操作系统实验教程?,清华大学颜彬等编著 附录 系统的主要源代码 #include "stdio.h" #include "iostream.h" #include "string.h"

13、 #include "iomanip.h" #define FILENAME_LENGTH 10 //文件名称长度 #define MAND_LENGTH 10 //命令行长度 #define PARA_LENGTH 30 //参数长度 //账号构造 typedef struct users { char name[8]; char pwd[10]; }users; //文件构造 struct fnode { char filename[FILENAME_LENGTH]; int isdir; int isopen; char

14、content[255]; fnode *parent; fnode *child; fnode *prev; fnode *next; }; //账号 users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; fnode *initfile(char filename[],int isdir); void createroot

15、); int run(); int findpara(char *topara); bool chklogin(char *users, char *pwd); void help(); int mkdir(); int create(); int read(); int write(); int del(); int cd(); int dir(); fnode *root,*recent,*temp,*ttemp; char para[PARA_LENGTH],mand[MAND_LENGTH],temppara[PARA_LENGTH],recentpara[

16、PARA_LENGTH]; //创立文件与目录结点 fnode* initfile(char filename[],int isdir) { fnode *node=new fnode; strcpy(node->filename,filename); node->isdir=isdir; node->isopen=0; node->parent=NULL; node->child=NULL; node->prev=NULL; node->next=NULL; return node; } //创立文件存储结点 void createroot () { rec

17、ent=root=initfile("/",1); root->parent=NULL; root->child=NULL; root->prev=root->next=NULL; strcpy(para,"/"); } int mkdir() { temp=initfile(" ",1); cin>>temp->filename; if(recent->child==NULL) { temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL;

18、 } else { ttemp=recent->child; while(ttemp->next) { ttemp=ttemp->next; if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1) { printf("对不起,目录已存在!"); return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; } return 1; } i

19、nt create() { temp=initfile(" ",0); cin>>temp->filename; cin>>temp->content; if(recent->child==NULL) { temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; cout<<"文件建立成功!"<child; while(ttemp->next) { ttemp=ttemp->next;

20、 if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) { printf("对不起,文件已存在!"); return 1; } } ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; cout<<"文件建立成功!"<

21、t; if(temp!=root) {cout<<"\

"<<".."<child==NULL) { cout<<"Total: "<<" directors" <child; while(temp) { if(temp->isdir) {cout<<"\ "<filename< "<filename<

22、} temp=temp->next; } cout<<"Total: "<<" directors" <>filename; if(recent->child==NULL) { cout<<"文件不存在!"<child->filename,filename)==0) { cout<child->content<

23、l; return 1; } else { temp=recent->child; while(temp->next) { if(strcmp(temp->next->filename,filename)==0) {cout<next->content<>filename; if(recent->child==NULL) { cout<<"文件不

24、存在!"<child->filename,filename)==0) { recent->child->isopen=1;//设置文件标记为翻开 cin>>recent->child->content; recent->child->isopen=0;//设置文件标记为关闭 cout<<"文件写入成功!"<child; while(temp->next) { if(strcmp(temp->next->filen

25、ame,filename)==0) { recent->child->isopen=1;//设置文件标记为翻开 cin>>temp->next->content; recent->child->isopen=0;//设置文件标记为关闭 cout<<"文件写入成功!"<>topara; if(strcmp(topara,"..")==0) { int i; while(recent->pr

26、ev) recent=recent->prev; if(recent->parent) { recent=recent->parent; } i=strlen(para); while(para[i]!='/' && i>0) i--; if(i!=0) para[i]='\0'; else para[i+1]='\0'; } else { findpara(topara); } return 1; } int findpara(char *topara) { int i=0; int sign=1; if(strcmp(topara,"/")==

27、0) { recent=root; strcpy(para,"/"); return 1; } temp=recent; strcpy(temppara,para); if(topara[0]=='/') { recent=root->child; i++; strcpy(para,"/"); } else { if(recent!=NULL && recent!=root) strcat(para,"/"); if(recent && recent->child) { if(recent->isdir) recent=recent->child;

28、else { printf("路径错误!\n"); return 1; } } } while(i<=strlen(topara) && recent) { int j=0; if(topara[i]=='/' && recent->child) { i++; if(recent->isdir) recent=recent->child; else {printf("路径错误\n"); return 0; } strcat(para,"/"); } while(topara[i]!='/' && i<=strlen(topara)) { recen

29、tpara[j]=topara[i]; i++;j++; } recentpara[j]='\0'; while((strcmp(recent->filename,recentpara)!=0 || (recent->isdir!=1)) && recent->next!=NULL) { recent=recent->next; } if(strcmp(recent->filename,recentpara)==0) { if(recent->isdir==0) {strcpy(para,temppara); recent=temp; printf("是文件不是目录。

30、\n"); return 0; } strcat(para,recent->filename); } if(strcmp(recent->filename,recentpara)!=0 || recent==NULL) { strcpy(para,temppara); recent=temp; printf("输入路径错误\n"); return 0; } } return 1; } int del() { char filename[FILENAME_LENGTH]; cin>>filename; temp=new fnode; if(recent->

31、child) { temp=recent->child; while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0)) temp=temp->next; if(strcmp(temp->filename,filename)!=0) { cout<<"不存在该文件!"<parent==NULL) { temp->prev->nex

32、t=temp->next; if(temp->next) temp->next->prev=temp->prev; temp->prev=temp->next=NULL; } else { if(temp->next) temp->next->parent=temp->parent; temp->parent->child=temp->next; } delete temp; cout<<"文件已删除!"<

33、 if( (strcmp(users,usrarray[i].name)==0) && (strcmp(pwd,usrarray[i].pwd)==0)) return true; } return false; } void help(void) { cout<<" 命 令 一 览 "<

34、 "<

35、 "<"; cin>>mand; if(strcmp(mand,"mkdir")==0) mkdir(); else if(strcmp(mand,"dir")==0) dir(); else if(strcmp(mand,"cd")==0) cd(); else if(strcmp(mand,"create")==0) create(); else if(strcmp(mand,"read")==0) read(); else if(strcmp(mand,

36、"write")==0) write(); else if(strcmp(mand,"del")==0) del(); else if(strcmp(mand,"help")==0) help(); else if(strcmp(mand,"logout")==0) return 0; } int main() { int i=0; bool in=false; char users[8],pwd[12]; cout<<"|-----------------------------------------------------------------|"<

37、l; cout<<"| 模拟Linux文件系统|"<>users; cout<<"Pass:"; cin>>pwd; if(chklogin(users,pwd)) {in=true;break;} i++; } help(); createroot(); while(in) { if(!run()) break; } } . word.zl.

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服