1 / 15
文档名称:

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

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

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

分享

预览

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

上传人:xxj16588 2016/6/3 文件大小:0 KB

下载得到文件列表

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

相关文档

文档介绍

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