1 / 15
文档名称:

磁盘存储空间模拟管理系统位示图方向.doc

格式:doc   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

磁盘存储空间模拟管理系统位示图方向.doc

上传人:nb6785 2015/12/25 文件大小:0 KB

下载得到文件列表

磁盘存储空间模拟管理系统位示图方向.doc

文档介绍

文档介绍:*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年秋季学期
操作系统课程设计
题目: 磁盘空间管理模拟实验
专业班级: 计算机科学与技术11级4班
姓名: 刘文清
学号: 11240425
指导教师: 李明
成绩:
目录
摘要 1
1. 设计思想 2
2. 算法设计 2
3. 源程序 2
4. 运行结果 2
5. 总结 2
参考文献 2
摘要
要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块。存储介质上某个文件不再需要时,又要收回它所占的存储空间作为空闲块。用户作业在执行期间经常要求建立一个新文件或撤消一个不再需要的文件,因此,文件系统必须要为它们分配存储空间或收回它所占的存储空间。如何实现存储空间的分配和收回,取决于对空闲块的管理方法,此系统采用的对磁盘存储空间的分配和收回的方法是:位示图法(用一张位示图(简称位图)来指示磁盘存储空间的使用情况)。
此磁盘存储模拟管理系统采用C++语言实现的,其运行环境是Windows xp,Windows 7操作系统。
关键词:磁盘的分配和回收管理;位示图,磁盘存储空间管理。
设计思想
在Windows XP,Windows 7等操作系统中对磁盘存储空间的管理是位示图法,位示图法:一个简单的管理方法,是用一张位示图(简称位图)来指示磁盘存储空间的使用情况。一个盘组的分块确定后,根据分配的总块数决定位图由多少个字组成,建筑位图中的每一位与盘组分块1-1对应,“1”状态表示相应块已占用,“0”状态表示该块空闲。在分配时先查看要分配的位置的数值,若其值为0,则分配,否则不予分配,输出此空间已被占用;在释放时分别找到柱面号,磁道号和扇区号所对应的在位示图中的位置,进行释放,若其值为0,则表示为分配,若其值为1,则变为0,回收完成。
算法设计
数据结构如下:
unsigned int size[5]={1,1,1,1,1} ;/*保存位示图*/
算法流程图如下:
分配流程图如下图2-1:
进行分配
开始
N+1=1/0?/?
分配N+1
输出分配成功
结束
继续分配?
ji

N+1=1

N+1=0

图2-1
回收空间流程图如下:
开始
输入信息
判断信息?
是否分配?
分配成功
是否继续?
结束
错误

正确




图2-2
源程序
位示图法算法如下:
#include<>
unsigned int size[5]={1,1,1,1,1} ;/*保存位示图*/
void out()/*输出位示图函数*/
{ unsigned int i,j,m;
for(j=0;j<5;j++)/*循环输出size的各个数的各个二进制位*/
{m=size[j];
for(i=0;i<16;i++)/**/
{printf("%d ",m%2);
m=m/2;
if(i==7)
printf("\n");
}
printf("\n");
}
}
void callback()/*回收函数*/
{ unsigned int i,j,k,s=1,q,m,sq,zhm,cid;
printf("确定要回收块的柱面号、磁道号、扇区号:\n");
printf("请输入柱面号:");
scanf("%d",&zhm);
printf("\n请输入磁道号:");
scanf("%d",&cid);
printf("\n请输入扇区号:");
scanf("%d",&sq);
if(zhm%2==0)/*计算对应的位示图位置*/
{ i=zhm/2;
j=cid*4+sq+1;
}
else
{ i=(zhm-1)/2;
j=cid*4+sq+9;
}
q=size[i];
m=j-1;
while(m)
{q=q/2;
m--;}
if(q%2==1)/*判断该块是否被分配*/
{if(j==1)size[i]-=1;/*将位示图对应为置零*/
else
{for(m=1;m<j;m++)
s*=2 ;
size[i]-=s;}
printf("回收成功!");
printf("回收后的位示图为:\n");
out();
}
else
printf("该块以被分配!");
}
void assign()/*分配函数*/
{ unsign