大学
操作系统课程综合实践
题目: 磁盘文件操作
班级:
姓名:
学号:
指导教师:
2011年 12 月 23日
磁盘文件操作
摘要:
为了正确地实现文件的存取,文件系统设计了一组与存取文件有关的功能模块,用户可以用“访问指令”调用这些功能模块,以实现文件的存取要求。我们把文件系统设计的这一组功能模块称为“文件操作“,实验就是要模拟实现一些文件操作。文件操作不是独立的,它和文件系统的其他部分密切相关,若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。因此,这个实习虽然是文件操作的模拟实现,但还是必须模拟一部分文件的组织结构、目录结构和磁盘空间管理的实现。
关键字:磁盘、文件、目录、分配表。 一、实验内容:
设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现; 1. 2. 3. 4.
支持多级目录结构,支持文件的绝对路径;
文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;
采用文件分配表;
实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性。
最后编写主函数对所做工作进行测试。 二、实验目的: 1、 2、 3、 4、
文件的操作。
文件的逻辑结构和物理结构 磁盘空间的管理 磁盘目录结构
三、实验环境: Windows XP、VC++
四、程序运行结果(详图):
程序运行的主界面:用户运行命令7-建立目录
用户运行命令1-建立文件:
显示目录内容:
打开文件:
写文件:
关闭文件:
再次显示目录内容:
以上为程序的运行的部分截图。 五、程序清单: #define false 0 #define true 1 #include \//#include
//#param warning(disable:4996) FILE*x1,*x2; typedef struct {
char name[3]; /*文件或目录名*/ char type[2]; /*文件类型名*/ char attribute; /*属性*/
char address; /*文件或目录的起始盘块号*/ char length; /*文件长度,以盘块为单位*/
}content; /*目录结构*/
#define n 5 /*模拟实验中系统允许打开文件的最大数量*/ typedef struct {
int dnum; /*磁盘盘块号*/ int bnum; /*盘块内第几项*/
}pointer; /*已打开文件表中读写指针的结构*/ typedef struct