欢迎来到天天文库
浏览记录
ID:55941053
大小:126.00 KB
页数:8页
时间:2020-06-17
《操作系统实验六文件系统设计试验.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、宁德师范学院计算机系实验报告(2014—2015学年第二学期)课程名称操作系统实验名称实验六文件系统设计试验专业计算机科学与技术(非师)年级2012级学号B2012102147姓名王秋指导教师王远帆实验日期2015-06-20实验目的与要求:通过设计一个基于索引结构的文件系统,加深对文件系统的基本知识理解。了解文件系统设计的基本概念。(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。实验设备(环境):(1)一台安装有CygwinTerminal的计算机(2)Windo
2、wsXP操作系统(3)VC++6.0实验内容:(1)熟悉文件系统的物理结构;(2)熟悉文件系统的目录管理;(3)掌握文件系统空闲空间管理的基本方法;(4)进一步理解现代操作系统文件管理知识。实验步骤、实验结果及分析:(1)设计一个文件系统的索引结构,描述逻辑结构与物理索引结构之间的关系;(2)设计文件目录,描述文件名与文件物理结构之中的映射关系;(3)定义作业;(4)设计文件建立;(5)设计文件系统的其它功能;实验结论:试验运行结果:图1程序运行结果4、思考该试验中,从功能能上讲,根据所学的文件系统管理方面知识,你所设计的(模拟)文件还有那些没有实现:对以后设
3、计的修改建议:目前所做的修改及实际结果如下:程序清单:#include"stdio.h"#include"stdlib.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;intNF
4、ile=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
5、].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;z<32;z++){wq->lr[z]=z;//逻辑块号wq->pr[z]=0;////物理块地址wq->st[z]='N';}//从位图中分配,分配出去的块其状态为1。一直到分配完成for(j=0;j<4&&(ly6、);j++)for(i=0;i<8&&(lypr[ly]=li;wq->st[ly]='Y';ly++;J[j][i]=1;}//找到一个空闲块,就分配出去}}//如果当前空闲磁盘物理块数不能够满足需要,则出错处理else{fprintf(e,"Therearenofreeblocksinthememorynow!");fprintf(e,"File%cmustwait!",job[N].name);}//报告目前为止的分配情况,首先报告文件目录的部分信息7、fprintf(e,"...Thistime,thefiledirectory:----");fprintf(e,"NAMEINDEX_ADDRESS");for(x1=0;x1names[x1],HEAD->p[x1]);//其次报告文件索引表的部分信息for(x1=0;x1names[x1]);fprintf(e,"LOGIC_NUMBERPHY8、SICAL_NUMBERFLAG"
6、);j++)for(i=0;i<8&&(lypr[ly]=li;wq->st[ly]='Y';ly++;J[j][i]=1;}//找到一个空闲块,就分配出去}}//如果当前空闲磁盘物理块数不能够满足需要,则出错处理else{fprintf(e,"Therearenofreeblocksinthememorynow!");fprintf(e,"File%cmustwait!",job[N].name);}//报告目前为止的分配情况,首先报告文件目录的部分信息
7、fprintf(e,"...Thistime,thefiledirectory:----");fprintf(e,"NAMEINDEX_ADDRESS");for(x1=0;x1names[x1],HEAD->p[x1]);//其次报告文件索引表的部分信息for(x1=0;x1names[x1]);fprintf(e,"LOGIC_NUMBERPHY
8、SICAL_NUMBERFLAG"
此文档下载收益归作者所有