当前位置:文档之家› 磁盘存储空间的分配和回收

磁盘存储空间的分配和回收

图 2-a 初始化截图 (2)申请5块空间函数 如图 2-b
图 2-b 申请空间截图 (3)回收实习2要求如图 2-c1 的磁盘块 如图 2-c2
柱面号 0 0 1
磁道号 0 1 0
物理记录号 2 0 1
图 2-c1 实习2回收要求
图 2-c2 回收截图
第三题:
1、数据结构设计: int a[9][5]={{0,3,1,2,3},{0,3,4,5,6},{0},{0},{0,3,0,7,8},{0},{0},{0},{0}}; int m[5]; 2、模块设计:
输入选择 1.分配 2.回收 3.退出
Switch
Cese 1
Cese 3
Fenpei()
退出
Cese 2
Huishou()
结束 图 2-1 主函数的流程图
(2)分配函数:fenpei() 函数功能: 实现分配 入口参数:无 流程图如图2-2 所示
开始
申请空间的块数 m I=0,i++

否 I<2
否 p=p->next;i++
链表是否 空
是 q=q->next;i++
否 结束
图 1-4输出函数的流程图
3、程序实现及运行结果 1.源代码如下:源程序 2.程序运行图如下:
(1)开始初始值显示如图 1-a:
图 1-a.初始化截图 (2)分配 10 块空间如图 1-b:
图 1-b.分配函数截图
(3)删除 1 号柱面 2 号磁道,0 号物理记录开始的 4 块如图 1-c:
1、数据结构设计: struct biao {
int start; int count; char zt; struct biao *next; }; 2、模块设计:
//起始空闲块号 //空闲块个数 //m 状态满,k 空闲
//指向下一个连续空闲表
(1)主函数:main() 函数功能:提供各个分支程序的入口 入口参数:无 流程图如图 1-1 所示
输出空间表 结束
图 2-3回收函数的流程图
(4)输出函数:shuchu() 函数功能: 实现输出空间表 入口参数:无 流程图如图 2-4所示
开始
位示图中的 值=1
输出对应的柱面号,磁道 号,物理纪录号
否 位示图中数全 扫描过
是 结束
图 2-4 输出函数的流程图 (5)输出函数:chushihua()
m2->next=&m4; m4.start=m1->start+count1; m4.count=m1->count-count1; m4.zt='k'; m4.next=m1->next;
柱面号=m3.count/200 磁道号=m3.count/20 物理纪录号=m3.count/6
shuchu()
地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实习使学生掌握磁盘存储空间的分配和回收
算法。
三、实习过程
本实习模拟三种磁盘存储空间的管理方法。
第一题:连续的磁盘存储空间的分配和回收。
第二题:用位示图管理磁盘存储空间
第三题:模拟 UNIX 系统的空闲块成组链接法,实现磁盘存储空间的管理。
第一题:
M1->next=null
m2=m1;m1=m1->next;
输出空闲表没有定义
m3.start=m1->start; m3.count=count1; m3.zt='m'; m3.next=m0->next; front->next=&p3;
count1=m

1->count

m2->next=m1->next;
开始 初始定义并输出
Case 1
Switch Case 2
Case 3
Fenpei()
Shanchu()
图 1-1主函数流程图
结束
(2)分配函数:fenpei() 函数功能:实现分配空闲块 入口参数:无 流程图如图 1-2 示
开始
输入空间大小 coumt1
是 Count1< m1.coun
t 否
图 1-2 分配函数流程图
结束
(3) 删除函数 shanchu() 函数功能:实现回收空闲块 入口参数:无 流程图如图 1-3 示
开始
输入柱面号 a,磁道号 b,物 理纪录号 c,块数 count1
计算 start1=200*a+20*b+c
是 start1!=
m0->sta
rt
m2->next=m0->next;
J=0,j++



J<8
位示图 否 中为0 的数

把为0的数改为1;输出 对应的柱面号,磁道号, 物理纪录号 m--
否 M=0
是 输出
结束 图 2-2 分配函数的流程图
(3)分配函数:huishou() 函数功能: 实现回收 入口参数:无 流程图如图 2-3所示
开始 输出空间表 要回收空间的柱面号,磁 道号,物理记录号 算出对应的位示图的 I,j 把位示图 i,j 的值改为0



M0->next=null
m3.start=m0->start; m3.count=count1; m3.zt='k'; m3.next=m1->next; head->next=&m3;
整理空闲链表中连续在一起的内容
count1=m0>count

否 m2->next=&m4; m4.start=m0->start+count1; m4.count=m0->count-count1; m4.zt='m'; m4.next=m0->next;
函数功能: 实现初始化定义空间 入口参数:无 流程图如图 2-5 所示
开始
输入分配的空间的块数 m
输入柱面号 磁道号 物理纪录号
计算对应的位示图 并把其值改为1 m--
否 M=0 是 输出
结束
图 2-5初始化函数的流程图
3、程序实现及运行结果 1.源代码如下:源代码
2.程序运行图如下: (1)开始初始值显示如图 2-a
(1)主函数:main() 函数功能:提供各个分支程序的入口 入口参数:无 流程图如图 3-1 所示
开始 输出初始化内容
switch
Case 1
Case 2
分配
回收
Case 3 退出
结束
图 3-1 主函数流程图
(2)分配函数:fenpei() 函数功能:实现分配空闲块 入口参数:无 流程图如图 3-2 所示
石家庄经济学院
实习报告
(学 院)系: 院
专 业:
姓 名:
班 级:
学 号:
40
指导教师:
日期:2011 年 1 月 14 日
操作系统实习报告
姓名
学号
日期 2011.1.3-2011.1.14
实验 152 机房
指导教师
设备编号

实 习 磁盘存储空间的分配和回收
题目
一、实习内容
模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。
二、实习目的
磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期
间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一
个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘
存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效
m2->next=m0->next;
空闲表没定义
shuchu() 图 1-3 删除函数流程图
结束
(3) 输出函数 shuchu() 函数功能:实现显示空闲块表 入口参数:无 流程图如图 1-4 示
开始
输出 p 的 序号 起始空闲块号 空闲块数 状态
链表是否 空

输出 q 的 序号 起始空闲块号 空闲块数 状态
图 1-c.回收函数截图 (4)删除 0 号柱面 6 号磁道 10 号物理记录开始的 20 块如图 1-d
图 1-d 回收截图 2
第二题
1、数据结构设计: int d[2][8];
2、模块设计:
(1)主函数:main() 函数功能:提供各个分支程序的入口 入口参数:无 流程图如图 2-1 所示
开始 初始化定义
图 3-2.分配函数流程图
五、实习总结
通过三种分配回收磁盘空闲区号,让我对磁盘存储有更深的认识,同时对 c++的语言更加了解,更加明 白做程序得慢慢来,不能做不稳,在实习过程当中,沟通很重要,尤其是实在不懂为什么的可以向老师询问, 当明白时就会豁然开朗。
六、教师评语及成绩
评语:
成绩:
年月日
相关主题