操作系统课程设计磁盘文件操作报告.docx
《操作系统课程设计磁盘文件操作报告.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计磁盘文件操作报告.docx(22页珍藏版)》请在冰豆网上搜索。
![操作系统课程设计磁盘文件操作报告.docx](https://file1.bdocx.com/fileroot1/2023-1/3/db0cf8da-cbf9-4a2d-95ad-496467cc5c34/db0cf8da-cbf9-4a2d-95ad-496467cc5c341.gif)
操作系统课程设计磁盘文件操作报告
操作系统
课程设计报告
理论成绩
实践成绩
总成绩
院系:
信息管理学院
专业:
软件工程
班级:
组员:
教师:
时间:
2012.11
一、课程设计的题目和目的
设计一个简单的文件系统,要求实现:
(1)支持多级目录结构;
(2)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件、关闭文件、改变文件属性。
本设计的目的是通过设计和调试一个简单的文件系统,主要是模拟文件操作命令的执行,来模拟文件管理,使我们对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。
二、课程设计的实现的具体功能
1.支持多级目录结构,支持文件的绝对路径;
2.文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;
3.采用文件分配表;
4.实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件、关闭文件、改变文件属性。
三、文件系统的基本原理和概念
1、文件系统设计需要解决的两个问题:
一是如何定义对用户的接口。
如定义文件机器属性、文件所允许的操作、组织文件的目录结构;二是创建数据结构和算法来将逻辑文件系统映射到物理外存设备上。
文件系统存在于辅助存储器——磁盘。
2、文件的实现,需要建立磁盘结构,这个涉及到如何启动所存储的操作系统、磁盘总的块数、空闲块的数目和位置、目录结构以及各个具体文件等。
3、目录的实现:
为了实现用户对文件的按名存取,系统必须首先利用用户提供的文件名,对文件目录进行查询,找出该文件的文件控制块FCB,然后根据找到的FCB中所记录的文件物理地址,并根据文件物理组织方式找出文件的磁盘号,进而换算出文件在磁盘上的物理位置,然后启动磁盘驱动程序,将所需文件读入内存。
4、基于连接分配的磁盘空间:
每个文件是磁盘块的链表:
磁盘块可以分散在磁盘的任何地方,目录包括文件第一块的指针和最后一块指针。
本次设计采用的是文件分配表(FAT),它是连接分配方法的一个变种。
FAT用于MS—DOSandOS/2操作系统,每个分区的开始部分用于存储该FAT表。
每块都在该表中有一项,该表可通过块号码来索引。
四、课程设计的分工
团队成员
负责模块
1、用户界面的设计
2、建立目录
3、删除目录
4、显示目录内容
5、程序测试
6、程序使用说明
1、流程图的制作
2、建立文件
3、写文件
4、读文件
5、关闭文件
6、删除文件
1、课程设计的分析
2、数据结构的设计
3、打开文件
4、显示文件内容
5、改变文件的属性
6、程序设计报告
五、总体设计
1、系统功能流程图:
2、数据结构设计
(1)目录结构
typedefstruct{
charname[3];//文件或目录名
chartype[2];//文件类型名
charattribute;//属性
charaddress;//文件或目录的起始盘块号
charlength;//文件长度,以盘块为单位
}content;
(2)已达开文件表中读写指针的结构
typedefstruct{
intdnum;//磁盘盘块号
intbnum;//磁盘盘块内第几个字节
}pointer;
(3)已打开文件表项类型定义
typedefstruct{
charname[20];//文件绝对路径名
charattribute;//文件的属性,用1个字节表示,char类型
intnumber;//文件起始盘块号
intlength;//文件长度,文件占用的字节数
intflag;//操作类型,用"0"表示以读操作方式开文件的,用"1"表示写操作方式打开文件的
pointerread;//读文件的位置,文件刚打开时dnum为文件起始盘
pointerwrite;//写文件的位置,文件刚建立时dnum为文件起始盘块号,bnum为"0",文件打开时为文件的末尾
}OFILE;
(4)已打开文件表定义
struct{
OFILEfile[n];//已打开文件表
intlength;//已打开文件表中登记的文件数量
}openfile;
六、详细设计
1、建立目录函数intmd(char*name)功能流程图
2、删除目录函数intrm(char*name)功能流程图
3、显示目录函数intdir(char*name)功能流程图
4、建立文件函数intcreate_file(char*name,intattribute)功能流程图
5、打开文件函数intopen_file(char*name,intattribute)功能流程图
6、写文件函数intwrite_file(char*name,char*buff,intlength)功能流程图
7、读文件函数intread_file(char*name,intlength)功能流程图
8、删除文件函数intDelete(char*name)功能流程图
9、关闭文件函数intclose_file(char*name)功能流程图
10、显示文件内容函数chartypefile(char*name)功能流程图
11、改变文件属性函数intchange(char*name,intattribute)功能流程图
12、分配磁盘内存块函数intallocate()功能流程图
13、在已打开文件表中插入文件函数intiopen(content*x)功能流程图
14、在已打开文件表中删除文件函数voiddopen(char*name)功能流程图
15、在已打开文件表中查找文件intsopen(char*name)功能流程图
16、voidcopen(OFILE*x1,OFILE*x2)
17、查找路径名为name的文件或目录函数intsearch(char*name,intflag,int*dnum,int*bnum)功能流程图
七、程序测试与测试结果
1、建立目录
2、在a目录下建立文件,然后在打开文件
3、写文件,按后保存关闭文件
4、读文件
5、显示文件内容,该操作之前应该先关闭文件,否则不能显示文件内容。
6、显示目录内容
7、删除文件,并查看目录内容看是否已删除文件
8、在a目下建立一个目录,形成多级目录,并在该目录下建立文件
在新建的文件下写文件
在目录a下删除新建目录
9、改变文件的属性后,若将文件的属性改为只读,则不能进行写操作,如下,就会出错。
八、简要的使用说明
九、设计总结
在设计过程中,我们三个人,分工协作,查询了不少相关资料,不断的发现问题、提出问题、解决问题。
在程序设计过程和中和对所编写的源程序段的纠错的过程中,我们对操作系统中文件系统的理论知识有了深刻的理解和认识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便。
虽然在这次课程设计中在设计和算法设计上还存在一些不足,但是总的来说通过这次的设计的学习使我们学到了很多在平时的学习中学不到的很多东西,对操作系统有了更深一层的了解,同时也提高了C++语言的应用能力。
十、程序设计源代码