欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    闽 南 师 范 大 学 操作系统课程设计 模拟一个简单二级文件管理系统.docx

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

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

    闽 南 师 范 大 学 操作系统课程设计 模拟一个简单二级文件管理系统.docx

    1、闽 南 师 范 大 学 操作系统课程设计 模拟一个简单二级文件管理系统闽 南 师 范 大 学操作系统课程设计模拟一个简单二级文件管理系统 姓 名: 学 号: 系 别: 计 算 机 学 院 专 业: 网 络 工 程 年 级: 指导教师: 全 秀 祥、闫 格 年 月 日一、课程设计项目介绍项目介绍: 通过研究Linux的文件系统结构,模拟设计一个简单二级文件管理系统,第一级为主目录文件,第二级为用户文件。磁盘空间分配表,采用链表结构,每个节点保存成模拟磁盘的一个逻辑块的信息,包括块的最大长度,文件占用长度,占用标志。如果占用标志为0,即该空间可分配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁

    2、盘作为一块,并置占用位为0。当有进程申请磁盘空间时,从头开始遍历,检查占用位,如果该块可分配,则检查块大小,若块长度大于或等于申请空间大小,则把块的前一部分(等于申请大小)分配给文件,并置标志位为占用。剩下的大小作为一个新块,作为一个新节点插入到节点的后边,标志位为可用。这样就实现了模拟磁盘的线性分配。设计目的: 通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个人模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分

    3、析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力,锻炼实际的编程能力,创新能力及团队组织、协作开发软件的能力,还能提高调查研究,查阅技术文献,资料以及编写软件设计文档的能力。通过编程实现这些算法,更好地掌握了操作系统的原理及实现方法,提高综合运用各专业课知识的能力,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统地设计和实现思路,并了解操作系统的发展动向和趋势。最重要的是,能提高自己实际动手操作能力和独立思考能力,让我们受益匪浅。2、总体设计 此二级文件管理系统包含的功能包括:登录到文件管理系统,创建文件,打开文件,关闭文件,删除文件

    4、,写文件,读文件,创建目录,删除目录,修改目录表,显示目录信息。总体结构:#define MEM_D_SIZE 1024*1024 /总磁盘空间为1M#define DISKSIZE 1024 /磁盘块的大小1K#define DISK_NUM 1024 /磁盘块数目1K#define FATSIZE DISK_NUM*sizeof(struct fatitem) /FAT表大小#define ROOT_DISK_NO FATSIZE/DISKSIZE+1 /根目录起始盘块号#define ROOT_DISK_SIZE sizeof(struct direct) /根目录大小#define D

    5、IR_MAXSIZE 1024 /路径最大长度为1KB#define MSD 5 /最大子目录数5#define MOFN 5 /最大文件深度为5#define MAX_WRITE 1024*128 /最大写入文字长度128KB struct fatitem /size 8 ,定义磁盘 ; struct direct /定义文件/目录信息 ; struct opentable /定义打开表 ; struct fatitem *fat; /FAT表 struct direct *root; /根目录 struct direct *cur_dir; /当前目录struct opentable u_

    6、opentable; /文件打开表 int fd=-1; /文件打开表的序号char *bufferdir; /记录当前路径的名称 char *fdisk; /虚拟磁盘起始地址 void initfile(); /申请磁盘空间void format(); /初始化void enter(); /进入操作void halt(); /结束操作int create(char *name); /创建文件int open(char *name); /打开文件 int close(char *name); /关闭文件 int write(int fd,char *buf,int len); /写文件 int

    7、 read(int fd,char *buf); /读文件 int del(char *name); /删除文件 int mkdir(char *name); /创建目录 int rmdir(char *name); /删除目录 void dir(); /显示目录 int cd(char *name); /修改目录 void print(); void show();Int main(); /主函数原理框图:3、详细设计该系统采用菜单方式与用户交互,实现文件操作,各菜单具体功能如下:1、创建文件:在某用户下建立一个或多个指定名字的文件,即在目录中增加一项,不考虑文件的内容,文件中也可以保存一条

    8、或多条记录,文件名不能大于8字节,不能允许重名,对于重名文件给出错误信息。2、打开文件:打开已经建立的文件,任何文件必须先打开后使用,包括读、写和查看显示,若要打开没有建立的文件,返回错误提示。不允许同时打开太多文件。3、删除文件:删除已经建立的文件,若文件已经被打开,则先关闭再删除。4、关闭文件:关闭已经打开的文件,若文件内容被修改,则需要保存新的内容。5、读文件:读某个被打开的文件的记录内容,读出记录后,可以选择对文件记录进行修改或删除操作,也可不做任何改动,直接返回主菜单。6、写文件:对打开的文件写入记录数据。7、显示目录:显示用户文件表。8、创建目录:在有空闲磁盘块的情况下创建新的目录

    9、,目录名不能大于8字节,不允许重名,9、删除目录:删除已经存在的目录,删除指定目录及其下的全部文件和子目录。如果指定目录为空,可直接删除,否则给出用户提示是否删除。10、退出操作:退出当前操作,直接退出程序。详细结构设计:void initfile() /申请磁盘空间 fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char); /申请 1M空间 format(); void format() /初始化 int i; FILE *fp; fat = (struct fatitem *)(fdisk+DISKSIZE); /计算FAT表地址,引导区向后偏移 1k

    10、 /*-初始化FAT表-*/ fat0.item=-1; /引导块 fat0.em_disk=1; for(i=1;iROOT_DISK_NO-1;i+) /存放 FAT表的磁盘块号 fati.item=i+1; fati.em_disk=1; fatROOT_DISK_NO.item=-1; /存放根目录的磁盘块号 fatROOT_DISK_NO.em_disk=1; for(i=ROOT_DISK_NO+1;idirectitem0.sign = 1; root-directitem0.firstdisk = ROOT_DISK_NO; strcpy(root-directitem0.na

    11、me,.); root-directitem0.next = root-directitem0.firstdisk; root-directitem0.property = 1; root-directitem0.size = ROOT_DISK_SIZE; /*-指向上一级目录的目录项-*/ root-directitem1.sign = 1; root-directitem1.firstdisk = ROOT_DISK_NO; strcpy(root-directitem1.name,.); root-directitem1.next = root-directitem0.firstdis

    12、k; root-directitem1.property = 1; root-directitem1.size = ROOT_DISK_SIZE; if(fp = fopen(disk.dat,wb)=NULL) printf(Error:n 不能打开文件!n); return; for(i=2;idirectitemi.sign = 0; root-directitemi.firstdisk = -1; strcpy(root-directitemi.name,); root-directitemi.next = -1; root-directitemi.property = 0; root

    13、-directitemi.size = 0; if(fp = fopen(disk.dat,wb)=NULL) printf(Error:n 不能打开文件!n); return; if(fwrite(fdisk,MEM_D_SIZE,1,fp)!=1) /把虚拟磁盘空间保存到磁盘文件中 printf(Error:n 文件写入错误! n); fclose(fp); void enter() /进入操作 FILE *fp; int i; fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char); /申请1M空间 if(fp=fopen(disk.dat,rb)=

    14、NULL) printf(Error:n不能打开文件n); return; if(!fread(fdisk,MEM_D_SIZE,1,fp) /把磁盘文件disk.dat读入虚拟磁盘空间 printf(Error:n不能读文件n); exit(0); fat = (struct fatitem *)(fdisk+DISKSIZE); /找到FAT表地址 root = (struct direct *)(fdisk+DISKSIZE+FATSIZE);/找到根目录地址 fclose(fp); /*-初始化用户打开表-*/ for(i=0;iMOFN;i+) strcpy(u_opentable.

    15、openitemi.name,); u_opentable.openitemi.firstdisk = -1; u_opentable.openitemi.size = 0; u_opentable.cur_size = 0; cur_dir = root; /当前目录为根目录 bufferdir = (char *)malloc(DIR_MAXSIZE*sizeof(char); strcpy(bufferdir,Root:); void halt() /停止操作 FILE *fp; int i; if(fp=fopen(disk.dat,wb)=NULL) printf(Error:n不能

    16、打开文件n); return; if(!fwrite(fdisk,MEM_D_SIZE,1,fp) /把虚拟磁盘空间内容写入磁盘文件disk.dat printf(Error:n写入文件错误!n); fclose(fp); free(fdisk); free(bufferdir); return;各功能程序图:关闭文件: 读文件: 写文件: 删除文件:创建文件: 创建目录: 打开文件: 删除目录: 四、运行结果(含运行及测试结果和用户使用说明书)用户使用说明书:本程序使用的函数均为标准C+函数,可以由任何支持标准C+语言的编译器编译运行,已经通过测试的编译环境如下:Windows平台:Visu

    17、al C+ 6.0 使用方法:用VC6打开lty.cpp文件,执行Build,根据对话框提示创建工程文件。工程文件创建完在空白页面处输入所需运行的代码,调试完没有任何错误提示,即可用于程序运行。Linux平台: G+ 使用方法:如果存在lty.cpp文件,执行命令g+ lty.cpp生成可执行文件lty,执行./a.out运行程序。测试结果:5、课程设计小结与心得体会文件管理系统是操作系统中数据信息抽象模块,它不仅提供给用户使用,也提供给操作系统其他部分使用。内存中的文件系统数据形成了文件系统的内存映像,在Linux系统中把它称为虚拟文件系统。在模拟的虚拟文件系统中,简化了数据结构,虽然目录和

    18、文件这些文件系统的关键数据结构在这个实例中都有具体实现,但是很简单,只是没失去其基本特征而已。操作系统课程设计,自己通过查找资料、复习课本上的内容、编程调试,写实验报告等环节,进一步掌握了以前学过但是已经慢慢遗忘的知识,并且还对操作系统应用知识有了更深入的认识与掌握。比如对二级文件系统也有了很好的了解,更懂得了如何解决实现里面功能的各种问题。本课程设计是对操作系统课程的一次具体实践。在课程设计过程中,既练习了动手能力又加强了对课本知识的理解,同时培养了自己独立思考的能力,由于实践是以小组的形式进行的,虽然每个人都分配到不同题目,但是小组成员之间都是互帮互助共同找资料,所以更是锻炼了我们的团队协作能力,效果很好。通过实践学习,我认识到学好计算机要重视实践操作,不管是学习c+语言,或者其它的语言,以及其它的计算机方面的知识都重在实践,所以在以后的学习过程中,我会更加注重实践操作,以便自己更好地学习计算机。在这次的实践过程中也遇到不少问题,一开始对二级文件的概念不是特别清楚,根本无从下手,所以就上网找了很多资料,终于是有所了解了。这次实践让我掌握了很多专业知识的同时,更让我懂得了很多人生态度。即遇到问题不能轻易放弃,要努力克服,要学会思考问题,要懂得借助已有的资料来充实自己的大脑,实在是受益匪浅。六、成绩评定指导老师评语:成绩评定 指导老师签名: 年 月 日优秀良好中等及格不及格


    注意事项

    本文(闽 南 师 范 大 学 操作系统课程设计 模拟一个简单二级文件管理系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开