欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统课程设计-模拟文件系统.docx

    • 资源ID:94703177       资源大小:30.94KB        全文页数:18页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课程设计-模拟文件系统.docx

    目录第1章需求分析1第2章概要设计12.1 系统的主要功能12.2 系统模块功能结构12.3 运行环境要求22.4 数据结构设计2第3章详细设计33.1 模块设计33.2 算法流程图3第4章系统源代码4第5章系统测试及调试45.1 运行结果及分析45.2 系统测试结论5第6章 总结与体会6第7章参考文献6附录7if(recent->child=NULL) (temp->parent=recent;temp->child=NULL;recent->child=temp;temp->prev=temp->next=NULL;)else ( ttemp=recent->child; while(ttemp->next) (ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)=O&&ttemp->isdir=l) (printf("对不起,目录已存在!)return 1;) ) ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->pre v=ttemp; temp->next=NULL;)return 1;)int create() (temp=initfile(n ,1,O);cin»temp->filename;cin»temp->content;if(recent->child=NULL) (temp->parent=recent;temp->child=NULL;rcccnt->child=tcmp;temp->prev=temp->next=NULL; cout<<)文件建立成功! ” v<endl;)elsettemp=recent->child; while(ttemp->next)ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)=O&&ttemp->isdir=O) (printfC对不起,文件已存在!)return 1;)ttemp->next=temp;temp->parent=NULL;temp->child=NULL;temp->prev=ttemp;temp->next=NULL;coutvv”文件建立成功! ”<<endl;)return 1;) int dir()(int i=0J=0;temp=new fnode;temp=recent;if(temp!=root)cout«n <DIR> n«n.H«endl;i+; if(temp->child=NULL) (cout«nTotal: n«n directors" «i«n filesn« j «endl;return 1;temp=temp->child;while(temp)(if(temp->isdir)cout«n<DIR> n«temp->filename«endl;i+; elsecout«n<FILE> n«temp->filename«endl;j+; tcmp=tcmp->ncxt;)cout«nTotal: n«n directorsn <<i«Hfilesn« j «endl;)int read()char filenameFILENAME_LENGTH;cin»filename;if(recent->child=NULL) (cout<<,文件不存在! n«endl;return 1;)if(strcmp(recent->child->filename,filename)=O) (cout«recent->child->content«endl;return 1;)else(temp=recent->child;while(temp->next) (if(strcmp(temp->next->filename,filename)=O)cout«temp->next->content«endl;return 1; )cout<<"文件不存在! "<<endl;)int write()(char filenameFILENAME_LENGTH;cin»filename;if(recent->child=NULL) (cout<<文件不存在! ”<<endl;return 1;if(strcmp(recent->child->filename,filename)=O) (recent-child->isopen=l;设置文件标记为打开 cin»rcccnt->child->contcnt;recent->child->isopen=0;设置文件标记为关闭 cout<< ”文件写入成功!” vvendl;return 1;elsetemp=recent->child;while(temp->next)(if(strcmp(temp->next->filename,filename)=O) _recent-child->isopen=l;设置文件标记为打开 cin»temp->next->content;recent->child-isopen=0;设置文件标记为关闭 cout<< ”文件写入成功! ”endl;return 1;)cout<<"文件不存在! n«endl;)int cd() char toparaPARA_LENGTH;cin»topara;if(strcmp(topara,n.")=0)(int i;while(recent->prev)recent=recent->prev;if(recent->parent)(recent=recent->parent;)i=strlen(para);while(parai!=7, && i>0) i;if(i!=O)parai=,O,;elseparai+l=,Of;)else(findpara(topara);)return 1;int findpara(char *topara)(int i=0;int signal;if(strcmp(topara/7H)=0) (recent=root;strcpy(para/7n);return 1;temp=recent;strcpy(temppara,para);if(topara0=7f)(recent=root->child;i+;strcpy(para/7n);)else(if(recent! =NULL && recent !=root) strcat(para/7n);if(recent && recent->child)(if(recent->isdir)recent=recent->child;else ( printff 路径错误! nn);return 1;)while(i<=strlen(topara) && recent) (int j=0;if(toparai=7, && recent->child) ( i+;if(recent->isdir) recent=recent->child;elseprintf("路径错误n)return 0;)strcat(para/7n);while(toparai!=7, && i<=strlen(topara)recentparaj=toparai;i+;j+;)recentparaj=,O,;while(strcmp(recent->filename,recentpara)! =0 | (recent->isdir!=l) && recent->next! =NULL)(recent=recent->next;if(strcmp(recent->filename,recentpara)=O)(if(recent->isdir=O)strcpy (para, temppara);recent=temp;printfC是文件不是目录。nn);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 filenameFILENAME_LENGTH;cin»filename;temp=new fnode;if(recent->child)(temp=recent->child;whilc(tcmp->ncxt && (strcmp(tcmp->filcnamc,filename)! =0 | tcmp->isdir!=0)temp=temp->next;if(strcmp(temp->filename,filename)! =0)(cout<<”不存在该文件! “Wendi;return 0;else(cout<<”不存在该文件! n«endl;return 0;)if(temp->parent=NULL)(temp->prev->next=temp->next;if(temp->next)temp->next->prev=temp->prev; temp->prev=temp->next=NULL;)elseif(temp->next)temp->next->parent=temp->parent;temp->parent->child=temp->next;)delete temp;coutvv”文件已删除!”<<endl;)bool chklogin(char *users, char *pwd)(int i;for(i=0; i<8; i+) (if( (strcmp(users,usrarrayi.name)=O) && (strcmp(pwd,usrarrayi.pwd)=O)命令一览建立文件。读取文写入文件,支持多线程删除文件。建立目录。切换目录。退出登录。H«endl;!f«endl;H«cndl;n«endl;H«endl;n«endl;H«endl;H«endl;return true; return false; ) void help(void) ( cout«H cout«endl; cout«Hcreate: cout«Hrcad: cout«Hwrite: cout«ndel : cout«Hmkdir: cout«Hcd: cout«nlogout:)int run()(cout«Hlinux:n«para«n>n;cin»command;if(strcmp(command,nmkdirn)=0) mkdir();else if(strcmp(command/'dirn)=0) dir();else if(strcmp(command,Hcdn)=0) cd();else if(strcmp(command,ncreaten)=0) create();else if(strcmp(command/readn)=0) read();else if(strcmp(command/writen)=0) write();else if(strcmp(command/'derf)-0) del();else if(strcmp(command/,help,)=0) help();else if(strcmp(command,nlogoutn)=0) return 0;)int main()(int i=0;bool in=false;char users8,pwd12;cout«n|H«endl;cout«"|模拟 Linux 文件系统cvendl;cout«n| 账号:usrl-usr8 密码:usrl-usr8 |n«endl;cout«n|你只有三次机会来试验账号|”<<endl;cout«n|n«endl;cout«endl;while(i<3)(cout«nLogin:H;cin»uscrs;cout«HPass:n;cin»pwd;if(chklogin(users,pwd) in=true;break; i+;help();createroot(); while(in) (if(!run() break;)第1章需求分析通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深 对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统 的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实 现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系 统的发展动向和趋势。模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构, 模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。第2章概要设计2.1 系统的主要功能1)系统运行时根据输入的用户数目创建主目录2)能够实现下列命令:Login用户登录Create 建立文件Read读取文件Write 写入文件Delete删除文件Mkdir建立目录Cd 切换目录Logout退出登录2.2 系统模块功能结构用户登录2.3 运行环境要求操作系统windows xp ,开发工具vc+6.02.4 数据结构设计用户结构:账号与密码结构typedef struct users(char name8;char pwd10; users;本系统有8个默认的用户名,前面是用户名,后面为密码用户登陆时只要输入 正确便可进入系统,否则提示失败要求重新输入。users usrarray8=(“usiT'JusiT',nusr2,7,usr2H,“usr3","usr3nusr4,7,usr4n,“usr51'usr5"usr6''Jusr6'',“usr7"Jusr7”,“usr8"Jusr8);(3)数据结构说明a)文件结构链表struct fnode(char filenameFILENAME_LENGTH;int isdir;int isopen;char content255;fnode "parent;fnode *child;fnode *prev;fnode *next;);b)函数介绍fnode *initfile(char filename口,int isdir);/初始化文件或目录void createroot。;/建立系统根目录int run();系统运行int findpara(char *topara);对参数进行处理bool chklogin(char * users, char *pwd);检查账号与口令void help。;命令歹U表int mkdir();建立 目 录int create。;建立文件int read。;读取文件int write。;写入文件int del();删J除文件int cd();切换目录int dir();文件与目录列表第3章详细设计3.1 模块设计此课程设计把文本作为研究对象来模拟操作系统的文件系统工作过程。所以 用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储服务。所有用户构成一个数组,每个数组元素是一个结构体,每个结构体包括三部 分,用户的用户名、用户密码和文件链表(由于模拟文件系统的文件数量不多, 故文件表采用线性链表来存储。线性表每个结点放置一个文件的FCB,其中存 储一个文件的信息,文件名、长度、类型、创建时间等);磁盘空间分配表,采用链表结构,每个节点保存模拟磁盘的一个逻辑块的信 息,包括块的最大长度,文件占用长度,占用标志。如果占用标志为3即该空 间可分配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块, 并置占用位为0。当有进程申请磁盘空间时,从头开始遍历,检查占用位,如果 该块为可分配,则检查块大小,若块长度大于或等于申请空间大小,则把块的前 一部分(等于申请大小)分配给文件,并置标志位为占用。剩下的大小作来一个 新块,作来一个新节点插入到原节点的后边,标志位为可用。这样就实现了模拟 磁盘的线性分配。3.2 算法流程图第4章系统源代码见附录第5章系统测试及调试5.1运行结果及分析录录录 文文文文目目登 VT除立第 建读写瞿患:支持多线程* D:DebugCppl.exe"模拟LinuxX件系统账号:usrl-usr8 隹码:usrl-usr8你只有三次机会来试验账号Login:usrlPass:usrl命令一览create: read: write: del : mkdir: cd : logout: linux:/>命令一览create : read: write : del : nkdir: cd: logout : linux:/>create 文件建立成功? linux:/>read aaa linux:/>aa录录录 文文文文目目登 除立楣 建读写瞿葭:支持多线程linux:/>create a aax件建立成功? linux:/>read aaalinux:/>write a bbx件写入成功?linux:/>read abblinux:/> linux:/>del a x件已删除? linux:/>read a x件不存在? linux:/>_.二叩录录录 文文文文目目登 V父相 建读写瞿募:支持多线程create :read:write :del :nkdir:cd:logout :linux:Z>nkdir h linux:/>cd h linux:/h> linux:/>nkdir h linux:/>cd h linux:/h>logout Press any key to continue5.2系统测试结论从运行结果截图中可以看到,程序分别执行了它所包含的7个功能,并且每 个功能都能正确的执行。若程序执行开始,三次都未输入正确的帐号和密码,程序会退出不再执行。第6章总结与体会虽然我们做过很多次课程设计了,但是感觉自己还有好多需要学习的地方, 接到题目要求时,设计大体的框架,考虑好所使用的数据结构,然后用高级编程 语言分模块的把架子的思路编写出来,调试,运行,再看看是不是符合题目的要 求,上网找些资料,看看想想是不是要提高要求,才可以满足实际的需要,最后 把收集的劳动成果组合起来,一个小程序终于成型了,虽然每次的过程差不多都 一样,但是每次都会有不同的体会。通过本次的课程设计,使我能够正确运用操作系统课程中所学的基本理论和 知识,加深了对文件系统基本概念的理解,以及磁盘文件系统的文件操作。在设 计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对 自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统 的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们 的编程变的更简单,可以使我们的查错与纠错变的更方便。总的来说通过这次的 设计的学习使我学到了很多在平时的学习中学不到的很多东西,通过这次课程设 计,使我对操作系统和编程产生兴趣,我想我会在这条路上继续前进下去。我相 信,只要不断的严格要求自己,注意培养自己的思维能力,就一定会有更大更辉 煌的发展和提高。第7章参考文献操作系统原理实验教程,清华大学出版社胡峰松主编操作系统实验教程,清华大学出版社 张丽芬等编著计算机操作系统实验教程,清华大学出版社颜彬等编著附录系统的主要源代码#include nstdio.hn#include niostream.hH#include "string.h"#include "iomanip.h"#define FILENAME_LENGTH 10 文件名称长度#define COMMAND.LENGTH 10 /命令行长度#define PARA_LENGTH 30 参数长度账号结构typedef struct users(charname8;charpwd10; users;文件结构struct fnode(char filenameFILEN AME.LENGTH;int isdir;int isopen;char content255;fnode *parent;fnode *child;fnode *prev;fnode *next;);账号users usrarray8=(nusrln9nusrrnusr2nusr2n,”usr31'usr3nusr4nusr4n,nusr5nusr5n,“usr6"Jusr6“usr7"Jusr7”,nusr8nusr8H,);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();int cd();int dir();fnode *root,*recent,*temp,*ttemp;charparaPARA_LENGTH9commandCOMMAND_LENGTH,tempparaPARA_LENG TH ,recentparaPAR A_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 ()(recent=root=initfile(n/n, 1);root->parent=NULL;root->child=NULL;root->prev=root->next=NULL;strcpy(para/7n);int mkdir()(temp=initfile(" ”);cin»temp->filename;

    注意事项

    本文(操作系统课程设计-模拟文件系统.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开