模拟实现单级目录、单级索引的索引文件系统
课 程 设 计 报 告
课程名称 课题名称
专 业 班 级 学 号 姓 名 指导教师
2014年 01 月 02 日
湖南工程学院 课 程 设 计 任 务 书
课程名称 课 题 专业班级 学生姓名 学 号 指导老师 审 批
任务书下达日期 2013 年 12 月 26 日
任务完成日期 2014年 01 月 02 日
一、课程设计的性质和目的
操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。
二、设计课题
课题一:模拟实现单级目录的FAT文件系统
基本思路:用二进制文件空间模拟磁盘空间,用文件块操作模拟磁盘块操作。 基本设计要求:1、实现如下文件系统功能(过程或函数):
a、 挂载文件系统 FILE *OPENSYS(char *filename); b、卸载文件系统 int CLOSESYS(FILE *stream); c、 显示目录 void LISTDIR(void);
d、建立文件 int FCREATE(char *filename); e、 删除文件 int FDELETE(char *filename); f、 打开文件 int FOPEN(char *filename); g、关闭文件 int FCLOSE(int fileid);
h、文件块读 int FREAD(void *ptr, int n, int fileid); i、 文件块写 int FWRITE(void *ptr, int n, int fileid); j、 判断文件结束 int FEOF(int fileid);
k、获取文件指针 long FGETPOS(int fileid);
l、 设置文件指针 int FSETPOS(int fileid, long offset); m、 取得文件长度 long FGETLEN(char *filename); 2、提供文件系统创建程序 3、有功能检测模块
4、为简化程序设计,假定目录区域大小固定。
本课题限制C语言文件操纵函数的使用,只能使用下列C语言文件操纵函数:
FILE *fopen(const char *filename, const char *mode); int fclose(FILE *stream);
int fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
课题二:模拟实现单级目录、单级索引的索引文件系统
使用链接域将同一文件的各索引块按顺序连接起来;其余各项同课题一。
三、课程设计报告要求
1、设计报告要求A4纸打印成册; 2、使用学院统一的封面;
3、课程设计报告每人一份,必须包含如下几个方面的内容:
1) 基本设计思想; 2) 主要数据结构; 3) 主要实施流程; 4) 所有源代码;
5) 课程设计总结与体会。
四、分组及选题办法
1、按学号顺序一人一组,学号为奇数者为课题一,偶数者为课题二。
2、成绩考核按个人课题完成情况、设计报告质量及对课程设计的态度等综合评定。
五、设计进度安排
1、讲课及上机调试时间安排: 上课时间: 未定
上机时间:
2、其余时间:查阅资料,确定方案,设计课题相关程序。 3、个人答辩,交课程设计报告。
目录
一、程序的功能 ............................................... 6 二、程序的基本设计思路 ....................................... 7 三、主要的数据结构 ........................................... 8 四、主要实施流程 ............................................ 10 五、程序调试及其运行结果 .................................... 13 六、设计总结与心得体会 ...................................... 15 七、附录(源程序清单) ........................................ 16
一、程序的功能
该程序主要模拟实现单级目录、单级索引的索引文件系统,该系统要求能打开文件系统;关闭
文件系统;显示目录;建立文件;删除文件;打开文件;关闭文件;文件块读;文件块写;判断文件结束;获取文件指针;设置文件指针;取得文件长度等功能。要求使用链接域将同一文件的各索引块按顺序连接起来。
二、程序的基本设计思路
模拟实现单级目录、单级索引的索引文件系统基本思路:用二进制文件空间模拟磁盘空间,用
文件块操作模拟磁盘块操作。在一个文件系统中对文件进行操作,实现文件的创建、读写等等操作。在创建文件时先在目录项中进行查找,若创建的文件已存在,文件的创建首先检验目录是否为空,为空则把文件夹或文件连接到该目录下,不为空则把检查目录下是否有同名文件夹或文件,有则提示创建不成功,而文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛出。文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,每次操作成功都要更改目录和FCB信息。该过程都保存在文件中,是对文件的操作。本系统建于Windows平台,开发环境为WIN-TC。
三、主要的数据结构
1.常量
#define BlockSize 512 #define DirSize 32
2.保留扇区结构
struct ReserveBlock{
int sysblocknum; /*文件系统总扇区数*/ int resblocknum; /*保留扇区扇区数*/ int mapblocknum; /*字节映像图扇区数*/ int rootblocknum; /*根目录区扇区数*/
char fillchar[BlockSize-4*sizeof(int)]; /*填充字节*/ };
3.目录结构
struct DirBlock{
char filename[11]; /*文件名限长11个字符*/
char fillchar[DirSize-4*sizeof(int)-sizeof(long int)-11]; /*填充字节*/ long filelen; /*文件长度*/ int year,month,day; /*定义年月日*/
int firstindexaddr; /*文件首索引块扇区号*/ };
4.索引块结构
struct IndexBlock{
int dataaddr[BlockSize/sizeof(int)-1]; /*数据块块号数组*/ int nextindexaddr; /*本文件下一索引块块号*/ };
5.索引节点结构
struct IndexNode{
struct IndexBlock block; /*索引块数据*/ int blockaddr; /*本节点索引块块号*/
struct IndexNode *nextnode; /*指向下一索引节点的指针*/};
6.FCB(文件控制块)结构
struct FCBBlock{
int fileid; /*文件标识*/ struct DirBlock fileinfo; /*目录信息*/ long filepos; /*文件读写指针*/ int fdtblockaddr; /*目录项所在块号*/ int fdtblockindex; /*目录项所在块内序号*/
struct FCBBlock *next; /*指向下一个文件控制块的指针*/ struct IndexNode *firstindexnode; /*指向第一个索引节点的指针* /}
四、相关流程图
4.1创建文件流程图
4.2删除文件流程图
4.3 FREAD函数流程图
五、程序调试及其运行结果
下面是程序调试时的一些截图。
图五、输入扇区块数
图六、 成功创建文件
图七、未打开文件,不能进行 …… 此处隐藏:3513字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学