操作系统课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计报告课程名称操作系统课题名称模拟实现单级目录、单级索引的文件系统专业计算机科学与技术班级计算机1001学号201003010106姓名贺填填指导老师周铁山2013年1月5日湖南工程学院课程设计任务书课程名称操作系统课题模拟实现单级目录、单级索引的文件系统专业班级计算机1001学生姓名贺填填学号2010030106指导老师周铁山审批任务书下达日期2012年12月15日任务完成日期2012年12月28日一、课程设计的性质和目的操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。二、设计课题课题一:模拟实现单级目录的FAT文件系统基本思路:用二进制文件空间模拟磁盘空间,用文件块操作模拟磁盘块操作。基本设计要求:1、实现如下文件系统功能(过程或函数):a、挂载文件系统FILE*OPENSYS(char*filename);b、卸载文件系统intCLOSESYS(FILE*stream);c、显示目录voidLISTDIR(void);d、建立文件intFCREATE(char*filename);e、删除文件intFDELETE(char*filename);f、打开文件intFOPEN(char*filename);g、关闭文件intFCLOSE(intfileid);h、文件块读intFREAD(void*ptr,intn,intfileid);i、文件块写intFWRITE(void*ptr,intn,intfileid);j、判断文件结束intFEOF(intfileid);k、获取文件指针longFGETPOS(intfileid);l、设置文件指针intFSETPOS(intfileid,longoffset);m、取得文件长度longFGETLEN(char*filename);2、提供文件系统创建程序3、有功能检测模块4、为简化程序设计,假定目录区域大小固定。文件系统空间划分:保留扇区FAT表区(或字节映像图区)根目录区文件分区可以使用的C语言文件操纵函数:FILE*fopen(constchar*filename,constchar*mode);intfclose(FILE*stream);intfseek(FILE*stream,longoffset,intwhence);longftell(FILE*stream);size_tfread(void*ptr,size_tsize,size_tn,FILE*stream);size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream);课题二:模拟实现单级目录、单级索引的索引文件系统使用链接域将同一文件的各索引块按顺序连接起来;其余各项同课题一。三、课程设计报告要求1、设计报告要求A4纸打印成册;2、使用学院统一的封面;3、课程设计报告每人一份,必须包含如下几个方面的内容:1)基本设计思想;2)主要数据结构;3)主要实施流程;4)所有源代码;5)课程设计总结与体会。四、分组及选题办法1、按学号顺序一人一组,学号为奇数者为课题一,偶数者为课题二。2、成绩考核按个人课题完成情况、设计报告质量及对课程设计的态度等综合评定。五、设计进度安排1、讲课及上机调试时间安排:上课时间:未定上机时间:2、其余时间:查阅资料,确定方案,设计课题相关程序。3、个人答辩,交课程设计报告。目录1.程序的功能...........................................................................................................................12.程序的基本设计思想...........................................................................................................13.主要的数据结构...................................................................................................................24.主要实施流程.......................................................................................................................45.程序调试及其运行结果.......................................................................................................66.设计总结与心得体会.........................................................................................................137.附件.....................................................................................................................................13湖南工程学院课程设计报告11.程序的功能该程序设计主要是来模拟一个以索引分配方式分配的外存分配的文件系统,该模拟的文件系统应该能实现文件系统的基本功能:如:创建文件、打开文件、向文件写数据、读取文件内的数据及显示文件目录等功能。更重要的是实现用索引分配方式来给文件分配外存。2.程序的基本设计思想在该程序设计中,确定了文件系统的外存分配方式及用C语言中的二进制文件来模拟外存空间后,其中首要设计的便是文件的目录管理。采用何种目录结构尤为重要,在此设计中采用的是二级目录结构,并且把第一级目录视为文件夹,第二级目录视为文件,这样在一定程度上提高了建立文件的灵活性,但也给编码带来了一定的难度。然后,再设计文件系统各功能实现的流程图及其算法、数据结构。在此次设计中,文件系统的空间设计如下:图1文件系统空间结构图其中保留区中存储该外存磁盘块的块数、根目录数及根目录入口磁盘地址。从根目录(文件夹目录索引表)到文件目录,再到文件内容所占磁盘块,通过各级索引表方式来组织文件系统。各文件信息均存储在设计的磁盘块中,且把磁盘块设定成可存储多种类型的数据(用C语言中的共用体类型实现),各级文件在相对应的磁盘块中写入的数据不同。对于根目录区,其中存储的数据是文件夹目录索引表,其中索引表中的内容是某文件夹所在磁保留区剩余磁盘区根目录区湖南工程学院课程设计报告2盘块的磁盘号,可通过该磁盘块号来找到该文件夹。在每个文件夹中,设有该文件夹中的文件索引表,组织该文件夹中所有文件所在的磁盘块号。而在文件中的索引表,则是该文件内容所占的磁盘块号的集合。各级文件的组织如下:根目录20-40图2各级文件的组织结构及其索引分配当某一级文件所在的磁盘块所写数据已满时,则可为该文件分配新的磁盘块,并设定一个值把该文件新的磁盘块组织起来(如图2中,每个磁盘块后的箭头,便是指向该磁盘块的下一个磁盘)3.主要的数据结构3.1.常量#defineSize32/*每个磁盘块能够写入的最大字符数*/3.2.保留扇区结构typedefstructReserveBlock{intsysblocknum;/*文件系统磁盘总数*/intresblocknum;/*保留扇区所占的磁盘数*/introotblocknum;/*根目录区所占的磁盘数*/intenter;/*根目录区入口磁盘地址*/}ReserveBlock;其中,保留扇区所占的磁盘数默认为1,且为磁盘区的首块磁盘。2021。。。文件夹信息40。文件信息50。湖南工程学院课程设计报告33.3.目录信息结构typedefstructMuLu{charfilename[11];/*文件名*/intfilelen;/*文件长度(该文件所占的磁盘块数)*/intyear,month,day;/*文件创建日期*/intnext;/*该文件所占的下一个磁盘块号*/intid;/*文件所在的磁盘块号*/}MuLu;3.4.文件信息结构typedefstructFileMuLu{MuLufile;/*文件目录信息*/intSERA[Size];/*索引表*/}FileMuLu;3.5.磁盘共享数据结构unionDATA{charch[Size];/*存储写入到文件中的数据*/ReserveBlockBlock;/*存储保留区的数据*/FileMuLuMuLufile;/*存储有关文件信息的数据*/};3.6.磁盘块数据结构typedefstructPanKuai{intID;/*盘块号*/longpoint;/*盘块在文件中的位置*/boolmark;/*标括识该盘块是否已用*/unionDATAtype;/*盘块数据*/}PanKuai,*PPanKuai;3.7.目录索引信息数据结构typedefstructIndex{intbian;/*文件盘块号*/charname[11];/*文件名*/湖南工程学院课程设计报告4MuLu*head;/*文件数组*/intcount;/*文件数*/}Index,*PIndex;3.8.目录索引数据结构typedefstructFNI{intnum;/*文件夹数量*/PIndexphead;/*文件夹数组*/intlength;/*数组长度*/}FNI;创建目录索引,主要是为了快速地找到某文件而不要从磁盘块中查找该文件,提高查找效率。目录索引的创建,是通过从保留区里读取到根目录入口地址,从根目录入口地址逐级地来获取各级文件的信息,建立两级目录索引表。4.主要实施流程4.1.创建文件12图3创建文件的实施流程创建文件的流程如上图所示,在创建文件成功后,要把新用的磁盘块连接到正确的创建文件选择文件类型:1、文件夹;2、文件输入文件夹的基本信息:如文件名、文件创建日期选择文件夹输入文件的基本信息:如文件名、文件创建日期取未用磁盘块来存储该文件信息,并将该磁盘块记录做相应的修改湖南工程学院课程设计报告5位置,以确保文件索引结构的正确。另外,若外存磁盘块已用完,则不能再建立文件,表明文件建立的失败。4.2.删除文件删除文件的流程与创建文件基本相同,也是先选择文件类型,然后再进行相应的操作。在删除文件中,要把该文件中所有属于该文件范围内的所占有的磁盘块都要进行“清零”处理,即释放磁盘块。4.3.向文件写数据在向文件写数据的功能中,规定只能向二级文件中写数据,不能向一级文件夹中写数据。其实施流程图如下:NY图4向文件写入数据的基本的实施流程在向文件写入数据的过程中,若外存磁盘已满,则会停止向文件写入数据。向文件写数据选择文件夹及文件(若文件夹为空,则文件写操作失败)文件是否为空则显示该文件已占有的磁盘块及每块磁盘块上的内容,并从中选择写入数据的首磁盘块及写入位置写入数据湖南工程学院课程设计报告64.3.读取文件数据读取文件内的数据较为简单。可直接从目录索引表中查找到该文件,并得到该文件所在的磁盘块号,然后读取该磁盘块里的内容,获取该文件的索引表,通过索引表来读取数据。4.4.打开文件打开文件也较为简单,可直接通过目录索引表来打开相应的文件。打开文件分为打开文件夹和打开文件两种方式。打开文件,则显示该文件的指针(文件所在的磁盘块)、文件创建日期及文件大小;打开文件夹,除了显示所述信息外,还要显示该文件夹里所有的文件的信息。4.5.系统功能流程1234567

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功