操作系统课程设计—文件系统的实现

操作系统课程设计—文件系统的实现

ID:9416171

大小:238.50 KB

页数:19页

时间:2018-04-30

操作系统课程设计—文件系统的实现_第1页
操作系统课程设计—文件系统的实现_第2页
操作系统课程设计—文件系统的实现_第3页
操作系统课程设计—文件系统的实现_第4页
操作系统课程设计—文件系统的实现_第5页
资源描述:

《操作系统课程设计—文件系统的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计报告(20--20年度第学期)课程名称:操作系统实验课设题目:文件系统的实现院系:控制与计算机工程学院班级:姓名:指导教师:设计周数:一周成绩:20年月日设计报告内容一、需求分析用C或C++编写和调试一个文件系统,功能使用命令行的方式实现。模拟文件管理的工作过程。加深理解文件系统的内部功能和内部实现。用内存模拟磁盘用结构体数组描述个不同的磁盘区域。磁盘的存取单元是磁盘块,一个盘块的大小是64字节。每个目录项16个字节,目录项下只允许建立4个子目录或者文件。i-node位图1块64个字节,共512位,可以描述512个i-node的使用情况。i-node的长度是16字节。文件超过两

2、个盘块会用到一级索引。每个以及索引盘块(64字节)可以包含16个盘块号。文件包含目录文件和文本文件。实现Format,Mkfile,Mkdir,Cd,Delfile,Deldir,Dir,Copy,Open,Viewinodebitmap,Viewblockbitmap等功能。二、整体功能及设计(功能划分及流程图)1、数据结构:structDirectoryEntry{//目录项charname[8];//文件或目录名intdirid;//目录标志(0为文件,1为目录)intinodenumber;//i-node编号};structDirectoryEntryInBlock{Dire

3、ctoryEntryde[4];//每个目录项大小为16字节,64字节空间最多可以存储4个目录项intnum;//磁盘块存储的目录项数目};structindexaddressstruct{intindexaddress[16];//每个索引块大小为4字节,64字节空间最多可以存储16个索引块号intnum;//索引块存储的索引数目};unionBlock{//单个盘块64个字节大小可以存储文件内容或者存储目录项或者存储索引块号charspace[64];//空间大小为64个字节用于存储文件内容DirectoryEntryInBlockdeib;indexaddressstructia

4、s;};structinodeStruct{//i-node结构intblockamount;//盘块数intdirectblockaddress1,directblockaddress2;//直接盘块地址*2intstairindexaddress;//一级索引地址};structDiskBlock{//磁盘布局DirectoryEntryrootdirectory[4];//根目录,最多4个目录项charinodebitmap[512];//512个i-node状态charblockbitmap[1024];//1024个磁盘块状态inodeStructinode[512];//5

5、12个i-node存储区Blockdatablock[1024];//数据块存储区};staticDiskBlockdb;//全局磁盘变量introotdirectoryamount;//用于记录根目录的使用数目,最大为4intinodeamount;//用于记录i-node的使用数目,最大为512intdatablockamount;//用于记录数据块的使用数目,最大为1024intspaceamount;//用于记录数据块中64位字节的使用数目,最大为64DirectoryEntryfilelist[500];//用于记录文件方便遍历检索DirectoryEntrydirector

6、ylist[500];//用于记录目录方便intfileamount;//用于记录文件数目intdirectoryamount;//用于记录目录的数目charlocalposition[8];//用于记录当前位置2、文件系统相关图(1)文件系统简单结构图如图1所示。图1文件系统简单结构图(2)磁盘构成示意图如图2所示图2磁盘构成示意图(3)文件构成图如图3所示。文件或目录名目录标志I-node编号图3文件构成图(4)I-node构成图如图4所示。图4I-node构成图三、编程实现:(主要功能代码及解释)voidFormat(){//初始化inti,j;for(i=0;i<4;i++){

7、memset(db.rootdirectory[i].name,0,8);//给文件或目录名初始化db.rootdirectory[i].dirid=-1;db.rootdirectory[i].inodenumber=-1;}for(i=0;i<512;i++){db.inodebitmap[i]=0;db.inode[i].blockamount=0;db.inode[i].directblockaddress1=-1;db.inode[i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。