




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书题目: 模拟DOS文件的建立与使用 院 系: 计算机科学与工程专业班级: 计算机10-3 学 号: 2010303091 学生姓名: 张杨杨 指导教师: 王 琳 2013年 1月 9 日安徽理工大学课程设计(论文)任务书 计算机科学与工程学院 计算机科学与技术系 学 号2010303091学生姓名张杨杨专业(班级)计算机10-3班设计题目模拟dos文件的建立与使用设计技术参数Vc+6.0Word文档最低松弛度优先算法链式存储模式索引存储模式设计要求 磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS文件的建立和使用情况,理解磁盘文件的物理结构。文件管理是操作系统中重要的内容之一,不同的文件系统提供了不同的物理结构,通过实验,深入理解文件的物理结构与存取方法之间的关系,以便更好的掌握文件系统的概念。工作量 论文的字数要求必须不少于4000工作计划2012.11.23 分析课程设计的目的、要求2012.11.25 结合课本选择相应的算法实现要求2012.12.09 制定具体的步骤实现算法2012.12.20 参考书籍构造算法模型2012.12.24 编写源程序代码2013.1.07 做课程设计文档2013.1.09 检验文档并提交参考资料1.计算机操作系统 第三版 汤小丹 梁红兵等,2.操作系统教程 孟庆昌3.计算机操作系统实验教程 黄详喜4.c语言程序设计5.算法设计与分析 吕国英指导教师签字系主任签字2012年 11月 20日学生姓名: 张杨杨 学号: 2010303091 专业班级: 计算机10-3 设计题目: 模拟dos文件的建立与使用 指导教师评语:成绩: 指导教师: 2013年1月 10日 安徽理工大学课程设计(论文)成绩评定表 摘要操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。 文件管理是操作系统的五大职能之一,主要涉及文件的逻辑组织和物理组织,目录的结构和管理。所谓文件管理,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)文件管理是操作系统中一项重要的功能。其重要性在于,在现代计算机系统中,用户的程序和数据,操作系统自身的程序和数据,甚至各种输出输入设备,都是以文件形式出现的。可以说,尽管文件有多种存储介质可以使用,如硬盘、软盘,光盘,闪存,记忆棒,网盘等等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的 ,主要研究的问题包括磁盘调度的算法,访存时延,调度算法的优劣性和适用场合等等。 关键词:模拟dos文件的建立和使用,索引存贮,链式存贮,磁盘调度目录1 设计目的12 设计要求12.1 模拟设计DOS操作系统中磁盘文件的存储结构12.1.1算法分析:22.2 模拟设计便于直接存取的索引文件结构32.2.1算法分析:43 模拟算法的实现53.1流程图53.1.1主窗口(main函数)53.1.2直接存取的索引文件结构63.2程序源代码73.3运行效果图12总结14参考文献151 设计目的磁盘文件是磁盘上存储的重要信息,通过本实验模拟DOS文件的建立和使用情况,理解磁盘文件的物理结构。文件管理是操作系统中重要的内容之一,不同的文件系统提供了不同的物理结构,通过实验,深入理解文件的物理结构与存取方法之间的关系,以便更好的掌握文件系统的概念。2 设计要求2.1 模拟设计DOS操作系统中磁盘文件的存储结构 DOS操作系统对磁盘文件的管理采用链接结构,将所有的链接指针集中在一起,存放在文件分配表(FAT)中。连接文件的第一个物理块号登记在文件目录中。其设计思想是:假定磁盘上共有N个物理块可供使用,当要存放文件时,从FAT表中寻找其值为0的项,用其对应的物理块存放文件信息,并把文件占有的各物理块用链接指针登记在FAT表中,再把文件的第一个物理块号登记在文件目录中。文件目录及FAT表如图所示: 图2-1在DOS中FAT表的前两项用来记录磁盘的类型。而从第2项开始记录磁盘的分配情况和文件各物理块的链接情况。在FAT表中第三项的值如果为0,表示对应的第三块空闲。由图还知道文件A的各记录依次存放在第2、第4、第15、第16、第50等六个物理块中。第50块中的指针为FFF,表示文件A的结束。文件B的各记录依次存放在第7、第10、第20等三个物理块中。第20块中的指针为FFF。 假定磁盘存储空间共有100个物理块,设计一个文件分配表。为了简单,文件分配表可用一个数组定义,其中每一个元素与一个物理块对应。当第 i 个元素为 0 时,表示第 i 块空闲;当第 i 个元素既不为 0 也不为 FFF 时,其值表示该文件的下一个物理块号。另外,再设一个空闲块总数变量记录系统还有的空闲块数。为了简单,假定一个物理块指存放一个逻辑记录,要求设计一个程序,把文件的逻辑记录结构转换成 DOS 的链接结构。当用户要求将已在主存的文件保存在磁盘上时,给出文件名及文件的记录个数,系统应能在磁盘上正确地保存文件。或当用户要求给指定文件增加记录时,也应正确的实现,并插在指定记录之后。为了正确地执行模拟程序,可用键盘模拟输入用户的要求。输入格式为: write(文件名,记录个数) 或i nsert(文件名,逻辑记录号) 2.1.1算法分析: void write(char *tmpname,int tmplength)int last,i,j;strcpy(,tmpname);/复制文件名和文件块个数filefilenumber.length=tmplength;for(i=2;iN;i+)/存文件if(FATi=0) filefilenumber.start=i;/首个空闲块为文件开始块last=i;FATlast=FFF;break;for(i=1;itmplength;i+)/last为上个记录的位置for(j=2;jN;j+)if(FATj=0)FATlast=j;last=j;FATlast=FFF; break;FATlast=FFF;/文件末存结束标记freespace-=tmplength;/改变空闲块个数filenumber+;printf(文件名和长度:%s %dn,tmpname,tmplength);void insert(char *tmpname,int insertpoint)int i;int last,brpoint;for(i=0;ifilenumber;i+)/寻找要执行插入操作的文件,将其数组下标存入lastif(strcmp(,tmpname)=0)/比较插入文件名与已存在文件名是否相同 last=i;break;brpoint=filelast.start;/brpoint记录当前文件扫描到的位置for(i=0;iinsertpoint-1;i+) brpoint=FATbrpoint; /扫描直到找到插入位置 for(i=0;iN;i+)/寻找一个空闲块插入 if(FATi=0) FATi=FATbrpoint;FATbrpoint=i;break;filelast.length+;/改变空闲块个数与文件长度freespace-;printf(t文件名和长度:%s %dn,tmpname,filelast.length);2.2 模拟设计便于直接存取的索引文件结构为了便于用户直接存取文件的各个逻辑记录,在 MS-DOS 中通过文件目录,再沿着链查找FAT表,便可直接找到指定逻辑记录对应的物理块。在小型机或更高级的文件系统中,直接存取文件的方法是为每个文件建立一个索引表,指出各逻辑记录与物理块的对应关系。最简单的形式是一个逻辑记录对应一个物理块。文件目录与索引表的关系如图所示。图2-2通常索引表按照逻辑记录顺序建立,这样既有利于顺序存储,又有利于直接存储。为了标识哪些记录已经建立,哪些记录还没建立,故在索引表中增设一个标志位。写文件或插入一个记录的过程是寻找一个空闲物理块,然后将其填入索引表对应项中。其建立过程同第一题,即 write(文件名,记录号)和 insert(文件名,记录号)。要求用位示图描绘出磁盘的使用情况,并要求模拟程序执行过程的每一步都能显示文件目录、位示图、索引表。2.2.1算法分析:void search(char *tmpname) int i; for(i=0;ifilenumber;i+)if(strcmp(,tmpname)=0)/比较插入文件名与已存在文件名是否相同 printf(t找到了!n); printf(t文件名 起始块号 文件长度n); printf( %s %d %dn,,filei.start,filei.length); void search2(int searchpoint) int i; int m; if(FATsearchpoint=0) printf(t该点空缺,没有文件!); else if(FATsearchpoint=-1&FATsearchpoint-1=-2|FATsearchpoint=-2&FATsearchpoint+1=-1)printf(t此处为系统空间!);else if(FATsearchpoint=-1&FATsearchpoint+1=0) printf(t找到了!此处的文件名为:%s,); else if(FATsearchpoint!=0&FATsearchpoint+1!=-1) for(m=searchpoint;m+)if(FATm=-1)printf(t找到了!此处的文件名为:%s,);break;else if(FATsearchpoint!=0&FATsearchpoint+1=-1) printf(找到了!此处的文件名为:%s,);3 模拟算法的实现3.1流程图3.1.1主窗口(main函数)Main函数直接存取的索引文件结构0.退出磁盘文件的存储结构4.显示FAT表 6.搜索索引点5.搜索文件 3.显示文件目录2.插入文件1.写入文件 3.1.2直接存取的索引文件结构文件是否找到? YN,tmpname)=0?NY输出文件搜索列表信息FATsearchpoint=0?FATsearchpoint!=0&FATsearchpoint+1=-1FATsearchpoint!=0&FATsearchpoint+1!=-1FATsearchpoint=-1&FATsearchpoint+1=0输出搜索点文件内容3.2程序源代码#include#include#include#includeconst int FDF=-2;const int FFF=-1;const int N=100;/存储空间(FAT表长度)int filenumber;/文件数量struct FILEINFOchar name10;int start;int length;FILEINFO file10;int FATN,freespace; /FAT表和剩余空间void printfmenu()int i;printf(t文件个数:%d n,filenumber);printf(t文件名 起始块号 文件长度n);for(i=0;ifilenumber;i+)printf( %s %d %dn,,filei.start,filei.length);void printFAT()int i;printf(t空闲块数:%dn,freespace);printf(t-2代表FDF,-1代表FFFn); for(i=0;iN;i+)printf( No.%d %dn,i,FATi);void search(char *tmpname) int i; for(i=0;ifilenumber;i+)if(strcmp(,tmpname)=0)/比较插入文件名与已存在文件名是否相同 printf(t找到了!n); printf(t文件名 起始块号 文件长度n); printf( %s %d %dn,,filei.start,filei.length); void search2(int searchpoint) int i; int m; if(FATsearchpoint=0) printf(t该点空缺,没有文件!); else if(FATsearchpoint=-1&FATsearchpoint-1=-2|FATsearchpoint=-2&FATsearchpoint+1=-1)printf(t此处为系统空间!);else if(FATsearchpoint=-1&FATsearchpoint+1=0)printf(t找到了!此处的文件名为:%s,); else if(FATsearchpoint!=0&FATsearchpoint+1!=-1) for(m=searchpoint;m+)if(FATm=-1)printf(t找到了!此处的文件名为:%s,);break;else if(FATsearchpoint!=0&FATsearchpoint+1=-1) printf(找到了!此处的文件名为:%s,);void write(char *tmpname,int tmplength)int last,i,j;strcpy(,tmpname);/复制文件名和文件块个数filefilenumber.length=tmplength;for(i=2;iN;i+)/存文件if(FATi=0) filefilenumber.start=i;/首个空闲块为文件开始块last=i;FATlast=FFF;break;for(i=1;itmplength;i+)/last为上个记录的位置for(j=2;jN;j+)if(FATj=0)FATlast=j;last=j;FATlast=FFF;break;FATlast=FFF;/文件末存结束标记freespace-=tmplength;/改变空闲块个数filenumber+;printf(文件名和长度:%s %dn,tmpname,tmplength);void insert(char *tmpname,int insertpoint)int i;int last,brpoint;for(i=0;ifilenumber;i+)/寻找要执行插入操作的文件,将其数组下标存入lastif(strcmp(,tmpname)=0)/比较插入文件名与已存在文件名是否相同 last=i;break;brpoint=filelast.start;/brpoint记录当前文件扫描到的位置for(i=0;iinsertpoint-1;i+)brpoint=FATbrpoint; /扫描直到找到插入位置for(i=0;iN;i+)/寻找一个空闲块插入if(FATi=0)FATi=FATbrpoint;FATbrpoint=i;break;filelast.length+;/改变空闲块个数与文件长度freespace-;printf(t文件名和长度:%s %dn,tmpname,filelast.length);int main()int i;char tmpname10;int tmplength;/要写入文件长度int m;/命令filenumber=0;for(i=0;iN;i+) /初始化FAT表FATi=0;FAT0=FDF;FAT1=FFF;/FAT3=999;freespace=98;while(true) printf(n); printf( *n); printf( *欢 迎 进 入* n); printf( n); printf( n); printf( 0.退 出 n); printf( 1.写入文件 2.插入文件 3.显示文件目录 n); printf( 4.显示FAT表 5.搜索文件 6.搜索索引点 n); printf( *n); printf(n); printf(t选择服务菜单:);scanf(%d,&m);switch(m)case 0: exit(0); case 1: printf(t输入要写入的文件名:);scanf(%s,&tmpname);printf(t输入要写入的文件长度:);scanf(%d,&tmplength);write(tmpname,tmplength);break;case 2: printf(t输入要插入的文件名:);scanf(%s,&tmpname);int insertpoint;printf(t输入要插入的点:);scanf(%d,&insertpoint);insert(tmpname,insertpoint);break;case 3: printfmenu(); break;case 4: printFAT(); break; case 5: printf(t请输入要搜索的文件名:); scanf(%s,&tmpname); search(tmpname);break; case 6: printf(t请输入要搜索
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康医疗业健康档案管理与服务平台建设方案
- 健康管理技术手册
- 农业生产性劳务对接服务平台建设指南
- 内部审计质量提升的操作手册
- (2025年标准)果林赔偿协议书
- (2025年标准)规划编制协议书
- (2025年标准)广东免租协议书
- 环境监测和可持续发展指标作业指导书
- (2025年标准)关于物业协议书
- (2025年标准)挂车出售协议书
- 学校食堂员工薪资方案
- 2025-2030中国冷冻榴莲行业供需现状究及未来销售渠道趋势报告
- DBJ41T 137-2014 防渗墙质量无损检测技术规程
- 百岁居区域+乐活内外勤宣导材料
- 内蒙古职工考勤管理制度
- GB/T 21220-2024软磁金属材料
- 《数字媒体技术导论》全套教学课件
- 吉林大学介绍
- 卫浴设备安装技能的培训与认证
- 废气处理工程协议
- SH/T 3158-2024 石油化工管壳式余热锅炉(正式版)
评论
0/150
提交评论