您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 29操作系统课程设计
操作系统原理课程设计报告模拟设计磁盘文件的链接存储结构学生姓名班级学号同组成员时间指导老师2015年1月1日1目录一、课程设计目标...................................................................................................................................................2二、课题内容...........................................................................................................................................................2三、设计思路...........................................................................................................................................................21、开发工具.....................................................................................................................................................22、系统模块图.................................................................................................................................................23.相关知识.....................................................................................................................................................34、结构体.........................................................................................................................................................3四、源代码...............................................................................................................................................................4五、运行与测试......................................................................................................................................................111.创建、打开、写、读文件..........................................................................................................................112.位示图..........................................................................................................................................................113.删除文件、退出系统.................................................................................................................................12六、心得体会.........................................................................................................................................................122一、课程设计目标操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。通过本课题,深入理解文件物理结构与存取方法之间的关系,掌握磁盘空间管理与文件分配过程间的联系,从而更好地掌握文件系统概念。其中模拟设计磁盘文件的链接存储结构的目的如下:1.了解磁盘文件的管理方式。2.掌握文件物理结构和存取方式。3.明晰文件的逻辑地址和物理地址。二、课题内容1.磁盘文件的管理采用显式链接结构,将文件占用的物理块号和链接指针记录在一张文件分配表(FAT)中。文件第一块的块号记录在索引结点中。文件目录只记录文件名和索引结点的编号。索引结点的结构如下:2.假定磁盘存储空间共有100个物理块用于存放数据,目录文件和索引结点可直接访问,不存放在这100个块中。3.一个物理块可存放3个文件逻辑记录,并且假设文件逻辑记录定长。4.要求用键盘输入的方式模拟用户读写请求,输入格式如下:Create(filename)Write(filename,text,logical_record_no)Read(filename,logical_record_no)Delete(filename)其中filename是要读写的文件名,text是写入的内容,logical_record_no是逻辑记录号。Create、Write、Read、Delete分别表示创建一个文件,向文件的某个逻辑记录写,从文件的某个逻辑记录读,删除一个文件。5.文件存储空间管理采用位示图(位示图为7行,16列)的方式。6.要求程序可以打印FAT以及位示图的情况。三、设计思路1、开发工具:MicrosoftVisalC++6.02、系统模块图索引结点编号文件属性创建时间文件第一块块号文件占用盘块数备用33.相关知识(1)显式链接这是指把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置一张。表的序号是物理盘块号,从0开始,直至N-1;N为盘块总数。在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的FCB的“物理地址”字段中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表FAT(FileAllocationTable)。(2)位示图位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1”作为空闲标志。(它们在本质上是相同的,都是用一位的两种状态来标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。通常可用m*n个位数来构成位示图,并使m*n等于磁盘的总块数。(3)索引结点在检索目录文件的过程中只用到了文件名,仅当找到一个目录项时,才需从该目录项中读出该文件的物理地址。而其他一些对该文件进行描述的信息,在检索目录时一概不用。显然,这些信息在检索目录时不需调入内存。为此有的系统便采用了把文件名与文件描述信息分开的方法,亦即,使文件描述信息单独形成一个称为索引结点的数据结构,简称i结点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点的指针所构成。4、结构体structFCB{charfname[16];//文件名inttype;//1代表普通文件2代表目录文件0表示空文件intsize;//文件大小intfatherBlockNum;//当前的父目录盘块号intfirstBlockNum;//该文件第一个盘块号intcurrentBlockNum;//当前的盘块intlastBlockNum;创建文件用户操作打开文件读文件写文件删除文件关闭文件位示图文件管理4四、源代码#includestdio.h#includememory.h#includestring#includeiostream#includewindows.husingnamespacestd;structFCB{charfname[16];inttype;intsize;intfatherBlockNum;intfirstBlockNum;intcurrentBlockNum;intlastBlockNum;voidinitialize(){strcpy(fname,\0);type=0;size=0;fatherBlockNum=firstBlockNum=currentBlockNum=lastBlockNum=0;}};constchar*FilePath=C:\\myfiles;constintBlockSize=512;constintOPEN_MAX=5;constintBlockCount=BlockSize/sizeof(int);constintDiskSize=BlockSize*BlockCount;constintBlockFcbCount=BlockSize/sizeof(FCB);constintm=16;constintn=BlockCount/m;intOpenFileCount=0;structOPENLIST{intfiles;FCBf[OPEN_MAX];OPENLIST(){files=0;for(inti=0;iOPEN_MAX;i++){f[i].fatherBlockNum=-1;f[i].type=0;}}};structdirFile{structFCBfcb[BlockFcbCount];voidinit(int_FatherBlockNum,int_FirstBlockNum,int_CurrentBlockNum,int_LastBlockNum,char*name)//父块号,第一个盘块号,当前块号,目录名{strcpy(fcb[0].fname,name);fcb[0].fatherBlockNum=_FatherBlockNum;fcb[0].firstBlockNum=_FirstBlockNum;fcb[0].lastBlockNum=_LastBlockNum;fcb[0].currentBlockNum=_CurrentBlockNum;fcb[0].type=2;for(inti=1;iBlockFcbCount;i++){fcb[i].fatherBlockNum=_CurrentBlockNum;fcb[i].type=0;}}};structDISK{intFAT1[BlockCount];intFAT2[BlockCount];structdir
本文标题:29操作系统课程设计
链接地址:https://www.777doc.com/doc-4170775 .html