操作系统课程设计模拟DOS文件的建立与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书题目: 模拟DOS文件的建立与使用
院系:计算机科学与工程
专业班级:计算机10-3
学号: **********
学生姓名:***
指导教师:**
2013年 1月 9 日
安徽理工大学课程设计(论文)任务书
计算机科学与工程学院计算机科学与技术系
2012年 11月 20日
安徽理工大学课程设计(论文)成绩评定表
摘要
操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。
文件管理是操作系统的五大职能之一,主要涉及文件的逻辑组织和物理组织,目录的结构和管理。所谓文件管理,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称(是操作系统中负责存取和管理文件信息的机构)文件管理是操作系统中一项重要的功能。其重要性在于,在现代计算机系统中,用户的程序和数据,操作系统自身的程序和数据,甚至各种输出输入设备,都是以文件形式出现的。可以说,尽管文件有多种存储介质可以使用,如硬盘、软盘,光盘,闪存,记忆棒,网盘等等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。
磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的,主要研究的问题包括磁盘调度的算法,访存时延,调度算法的优劣性和适用场合等等。
关键词:模拟dos文件的建立和使用,索引存贮,链式存贮,磁盘调度
目录
1 设计目的 (1)
2 设计要求 (1)
2.1模拟设计DOS操作系统中磁盘文件的存储结构 (1)
2.1.1算法分析: (2)
2.2模拟设计便于直接存取的索引文件结构 (3)
2.2.1算法分析: (4)
3 模拟算法的实现 (5)
3.1流程图 (5)
3.1.1主窗口(main函数) (5)
3.1.2直接存取的索引文件结构 (6)
3.2程序源代码 (7)
3.3运行效果图 (11)
总结 (13)
参考文献 (14)
1 设计目的
磁盘文件是磁盘上存储的重要信息,通过本实验模拟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(file[filenumber].name,tmpname);//复制文件名和文件块个数
file[filenumber].length=tmplength;
for(i=2;i if(FAT[i]==0){ file[filenumber].start=i;//首个空闲块为文件开始块 last=i; FAT[last]=FFF; break; } } for(i=1;i for(j=2;j if(FAT[j]==0){ FAT[last]=j; last=j; FAT[last]=FFF; break; } } FAT[last]=FFF;//文件末存结束标记 freespace-=tmplength;//改变空闲块个数 filenumber++; printf("文件名和长度:%s %d\n",tmpname,tmplength); } void insert(char *tmpname,int insertpoint) { int i; int last,brpoint; for(i=0;i { if(strcmp(file[i].name,tmpname)==0)//比较插入文件名与已存在文件名是否相同 { last=i; break; } } brpoint=file[last].start; //brpoint记录当前文件扫描到的位置 for(i=0;i { brpoint=FAT[brpoint]; //扫描直到找到插入位置 } for(i=0;i { if(FAT[i]==0) { FAT[i]=FAT[brpoint]; FAT[brpoint]=i; break; } } file[last].length++; //改变空闲块个数与文件长度 freespace--; printf("\t文件名和长度:%s %d\n",tmpname,file[last].length); } 2.2 模拟设计便于直接存取的索引文件结构 为了便于用户直接存取文件的各个逻辑记录,在 MS-DOS 中通过文件目录,再沿着链查找FAT表,便可直接找到指定逻辑记录对应的物理块。在小型机或更高级的文件系统中,直接存取文件的方法是为每个文件建立一个索引表,指出各逻辑记录与物理块的对应关系。