操作系统实验六 文件系统设计试验Word格式.docx
- 文档编号:7189106
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:9
- 大小:119.04KB
操作系统实验六 文件系统设计试验Word格式.docx
《操作系统实验六 文件系统设计试验Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验六 文件系统设计试验Word格式.docx(9页珍藏版)》请在冰点文库上搜索。
(3)定义作业;
(4)设计文件建立;
(5)设计文件系统的其它功能;
实验结论:
试验运行结果:
图1程序运行结果
4、思考
该试验中,从功能能上讲,根据所学的文件系统管理方面知识,你所设计的(模拟)文件还有那些没有实现:
对以后设计的修改建议:
目前所做的修改及实际结果如下:
程序清单:
#include"
stdio.h"
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;
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;
//将文件名以及大小,索引地址填写到文件目录
size[N]=job[N].size;
wq=(structindex*)malloc(sizeof(structindex));
p[N]=wq;
//对分配文件的索引表初始化
for(z=0;
z<
32;
z++){
wq->
lr[z]=z;
//逻辑块号
pr[z]=0;
////物理块地址
st[z]='
N'
;
}
//从位图中分配,分配出去的块其状态为1。
一直到分配完成
for(j=0;
j<
4&
&
(ly<
job[N].size);
j++)
for(i=0;
i<
8&
i++)
{
if(J[j][i]==0){li=j*8+i;
wq->
pr[ly]=li;
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"
NAMEINDEX_ADDRESS\n"
for(x1=0;
x1<
N+1;
x1++)fprintf(e,"
%c%x\n"
HEAD->
names[x1],HEAD->
p[x1]);
//其次报告文件索引表的部分信息
x1++){
//////////TheindexofFILE%c:
/////////\n"
names[x1]);
LOGIC_NUMBERPHYSICAL_NUMBERFLAG\n"
for(y=0;
y<
HEAD->
size[x1];
y++)fprintf(e,"
%d%d%c\n"
p[x1]->
lr[y],HEAD->
pr[y],HEAD->
st[y]);
}
//第三,报告位图信息
Thistimethebitmappinggraph:
4;
j++){
fprintf(e,"
"
for(i=0;
8;
i++)fprintf(e,"
%d"
J[j][i]);
voidmain(){
intk;
e=fopen("
results.txt"
"
w"
//打开保存结果的文件
for(j=0;
for(i=0;
J[j][i]=0;
//初始化位图
HEAD=(structlist*)malloc(sizeof(structlist));
i++){HEAD->
names[i]='
'
size[i]=0;
p[i]=NULL;
}//初始化文件目录
printf("
Pleaseinputnumberofjobs:
"
scanf("
&
jobs);
%c"
bb);
intkk=0;
//以下输入建立的文件数以及文件名字,并将这些信息保存在job数组之中
while(kk<
jobs){
FILE%d:
kk);
NameandSize"
%c,%d"
(job[kk].name),&
(job[kk].size));
job[kk].name,job[kk].size);
kk++;
for(k=1;
k<
=jobs;
k++)run();
//每个文件进行一次分配
//回收资源
fclose(e);
i++){free(HEAD->
p[i]);
free(HEAD);
HEAD=NULL;
}
文件系统模拟程序
1.索引结构和文件目录
2.文件目录模拟
该模拟文件最多只能模拟32个文件,HEAD指针指向了该模拟目录。
3.文件索引表模拟
文件索引表的定义
4.位图
intJ[4][8]。
位图J表示这些磁盘物理块的情况。
J[j][i]为0时标记块空闲,为1标记该块已分配出去。
各块号按行存储。
因此,J[j][i]表示j*8+i(块号)块的分配情况
5.run函数
6.Main函数
实验分析:
程序要为每个文件建立一张索引表,索引表中用数组指出文件信息所在的逻辑块号和与之对应的物理块号。
程序中intJ[j][i]表示这些磁盘物理块的情况。
实验总结(包括过程总结、心得体会及实验改进意见等):
1.在命令提示符中运行应用程序时要先转到应用程序所在的盘符下,要把应用程序所在目录位置输入正确,才能找到相应的程序运行。
2.文件的物理结构和组织是指逻辑文件在物理存储空间中存放方法和组织关系;
使用多级目录可以解决文件重名问题与缩短搜索时间;
现代操作系统文件管理就是对块空间的管理,包括空闲块的分配、回收和组织;
索引文件结构中的索引表是用来指示逻辑记录和物理块之间对应关系的。
3.通过本次实验我了解了文件系统的基本概念,物理文件结构有三种结构,连续文件、链接文件、索引文件。
用户能直接处理其中的结构与数据的是逻辑结构,文件在外存上的存储组织形式是物理结构。
只有合理的进行存储空间的管理,才能保证多用户共享外存和快速的实现文件的按名存取。
指导教师评语:
完成所有规定的实验内容,实验步骤正确,结果正确;
以后需要进一步改进或注意的是:
(1)实验目的与要求、实验设备、实验内容格式要对齐。
(2)源代码要进行命名以便区分。
(3)标题文字首行缩进。
(4)实验总结要分点讲述,并与分析、心得体会分开。
成绩评定A(优秀)
教师签字王远帆
2015年6月22日
备注:
注:
1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内
感谢下载!
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验六 文件系统设计试验 实验 文件系统 设计 试验