操作系统--实验六-文件系统设计试验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

宁德师范学院计算机系实验报告(2014—2015学年第二学期)课程名称操作系统实验名称实验六文件系统设计试验专业计算机科学与技术(非师)年级2012级学号B2012102147姓名王秋指导教师王远帆实验日期2015-06-20实验目的与要求:通过设计一个基于索引结构的文件系统,加深对文件系统的基本知识理解。了解文件系统设计的基本概念。(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。实验设备(环境):(1)一台安装有CygwinTerminal的计算机(2)WindowsXP操作系统(3)VC++6.0实验内容:(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。实验步骤、实验结果及分析:(1)设计一个文件系统的索引结构,描述逻辑结构与物理索引结构之间的关系;(2)设计文件目录,描述文件名与文件物理结构之中的映射关系;(3)定义作业;(4)设计文件建立;(5)设计文件系统的其它功能;实验结论:试验运行结果:图1程序运行结果4、思考该试验中,从功能能上讲,根据所学的文件系统管理方面知识,你所设计的(模拟)文件还有那些没有实现:对以后设计的修改建议:目前所做的修改及实际结果如下:程序清单:#includestdio.h#includestdlib.h//文件索引表的定义structindex{intlr[32];intpr[32];charst[32];}*wq;#defineJOBN20//文件目录的定义structlist{charnames[32];intsize[32];structindex*p[32];//文件的索引表地址}*HEAD;//作业序列structque{charname;intsize;}job[JOBN];inti,j,ly,li;charbb;intNFile=0;//系统的总文件数,模拟开始时为0;intN=0;//工作变量,标记当前分配文件intM=32;//系统中空闲磁盘物理块数,开始为32块intJ[4][8];//用位图表示这些磁盘物理块,J[j][i]为0时标记第j*8+i块空闲,为1标记该块已分配出去FILE*e;//记录模拟中的相关数据intjobs=0;//作业数voidrun(){intx1,y,z;//如果当前空闲磁盘物理块数能够满足需要,则进行分配if(job[N].size=M){ly=0;N=NFile;//标记当前分配文件NFile++;//标记下次分配处理文件M-=job[N].size;HEAD-names[N]=job[N].name;//将文件名以及大小,索引地址填写到文件目录HEAD-size[N]=job[N].size;wq=(structindex*)malloc(sizeof(structindex));HEAD-p[N]=wq;//对分配文件的索引表初始化for(z=0;z32;z++){wq-lr[z]=z;//逻辑块号wq-pr[z]=0;////物理块地址wq-st[z]='N';}//从位图中分配,分配出去的块其状态为1。一直到分配完成for(j=0;j4&&(lyjob[N].size);j++)for(i=0;i8&&(lyjob[N].size);i++){if(J[j][i]==0){li=j*8+i;wq-pr[ly]=li;wq-st[ly]='Y';ly++;J[j][i]=1;}//找到一个空闲块,就分配出去}}//如果当前空闲磁盘物理块数不能够满足需要,则出错处理else{fprintf(e,\nTherearenofreeblocksinthememorynow!\n);fprintf(e,File%cmustwait!\n,job[N].name);}//报告目前为止的分配情况,首先报告文件目录的部分信息fprintf(e,...Thistime,thefiledirectory:----\n);fprintf(e,NAMEINDEX_ADDRESS\n);for(x1=0;x1N+1;x1++)fprintf(e,%c%x\n,HEAD-names[x1],HEAD-p[x1]);//其次报告文件索引表的部分信息for(x1=0;x1N+1;x1++){fprintf(e,//////////TheindexofFILE%c://///////\n,HEAD-names[x1]);fprintf(e,LOGIC_NUMBERPHYSICAL_NUMBERFLAG\n);for(y=0;yHEAD-size[x1];y++)fprintf(e,%d%d%c\n,HEAD-p[x1]-lr[y],HEAD-p[x1]-pr[y],HEAD-p[x1]-st[y]);}//第三,报告位图信息fprintf(e,Thistimethebitmappinggraph:\n);for(j=0;j4;j++){fprintf(e,);for(i=0;i8;i++)fprintf(e,%d,J[j][i]);fprintf(e,\n);}}voidmain(){intk;e=fopen(results.txt,w);//打开保存结果的文件for(j=0;j4;j++)for(i=0;i8;i++)J[j][i]=0;//初始化位图HEAD=(structlist*)malloc(sizeof(structlist));for(i=0;i32;i++){HEAD-names[i]='';HEAD-size[i]=0;HEAD-p[i]=NULL;}//初始化文件目录printf(Pleaseinputnumberofjobs:);scanf(%d,&jobs);scanf(%c,&bb);intkk=0;//以下输入建立的文件数以及文件名字,并将这些信息保存在job数组之中while(kkjobs){fprintf(e,FILE%d:\n,kk);printf(FILE%d:\n,kk);printf(NameandSize);scanf(%c,%d,&(job[kk].name),&(job[kk].size));scanf(%c,&bb);fprintf(e,%c,%d,job[kk].name,job[kk].size);kk++;}for(k=1;k=jobs;k++)run();//每个文件进行一次分配//回收资源fclose(e);for(i=0;i32;i++){free(HEAD-p[i]);HEAD-p[i]=NULL;}free(HEAD);HEAD=NULL;}文件系统模拟程序1.索引结构和文件目录2.文件目录模拟structlist{charnames[32];intsize[32];structindex*p[32];//文件的索引表地址}*HEAD;该模拟文件最多只能模拟32个文件,HEAD指针指向了该模拟目录。3.文件索引表模拟文件索引表的定义structindex{intlr[32];intpr[32];charst[32];}*wq;4.位图intJ[4][8]。位图J表示这些磁盘物理块的情况。J[j][i]为0时标记块空闲,为1标记该块已分配出去。各块号按行存储。因此,J[j][i]表示j*8+i(块号)块的分配情况5.run函数12……N文件名等块块块6.Main函数实验分析:程序要为每个文件建立一张索引表,索引表中用数组指出文件信息所在的逻辑块号和与之对应的物理块号。程序中intJ[j][i]表示这些磁盘物理块的情况。J[j][i]为0时标记块空闲,为1标记该块已分配出去。各块号按行存储。实验总结(包括过程总结、心得体会及实验改进意见等):1.在命令提示符中运行应用程序时要先转到应用程序所在的盘符下,要把应用程序所在目录位置输入正确,才能找到相应的程序运行。2.文件的物理结构和组织是指逻辑文件在物理存储空间中存放方法和组织关系;使用多级目录可以解决文件重名问题与缩短搜索时间;现代操作系统文件管理就是对块空间的管理,包括空闲块的分配、回收和组织;索引文件结构中的索引表是用来指示逻辑记录和物理块之间对应关系的。3.通过本次实验我了解了文件系统的基本概念,物理文件结构有三种结构,连续文件、链接文件、索引文件。用户能直接处理其中的结构与数据的是逻辑结构,文件在外存上的存储组织形式是物理结构。只有合理的进行存储空间的管理,才能保证多用户共享外存和快速的实现文件的按名存取。指导教师评语:完成所有规定的实验内容,实验步骤正确,结果正确;以后需要进一步改进或注意的是:(1)实验目的与要求、实验设备、实验内容格式要对齐。(2)源代码要进行命名以便区分。(3)标题文字首行缩进。(4)实验总结要分点讲述,并与分析、心得体会分开。成绩评定A(优秀)教师签字王远帆2015年6月22日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功