操作系统可变分区存储管理模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验(三)可变分区存储管理模拟实验作者:顾熙杰
准考证号:4
报到号:177
实验地点:浙工大计算机中心
1)实验目的
理解操作系统中可变分区管理的算法,
掌握分配和回收算法
掌握空闲分区的合并方法
掌握不同的适应算法
2)实验内容
建立数据结构
建立空闲分区队列
根据不同的适应算法建立队列
编写分配算法
编写回收算法
3)数据结构
'分区首地址
'分区长度
'分区状态-1表示不存在,0表示空闲分区,1表示已经分配的分区'该分区正在活动的进程代号
4)程序流程图
面向对象程序设计由事件驱动,画流程图比较困难。
(1)分配新的分区
最先适应按地址找
最优适应,找最小可以满足的
最坏适应,找最大可以满足的
(2)分区回收
既无上邻又无下邻
既有上邻又有下邻
只有上邻
只有下邻
5)实验中需要改进的地方
由于没有使用链表,程序结构比较混乱,需要大大改进,提高可阅读性。
6)程序代码()
"32" "" ( , , , , , )
'表示内存分区的结构信息类型的变量类型
'分区首地址
'分区长度
'分区状态-1表示不存在,0表示空闲分区,1表示已经分配的分区'该分区正在活动的进程代号
'定义最多640个,总共640K内存数组
(1 640)
'表示可以使用的进程代号
(1 640)
'0表示该进程号可以使用
'.>=1表示该进程号不可以使用
'表示分配方法
'0=最先分配
'1=最优分配
'2=最坏分配
()
'取可以使用的进程号
i
i = 1 640
(i) = 0
(i) = 1
= i
= 0
()
'取可以使用的为了表示分区的存储空间,模拟c语言的指针
i
i = 1 640
(i) = -1
= i
= 0
( )
i
,
'分配新的分区
0 '最先适应按地址找
i = 1 640
(i) = 0
(i) >=
= i
i
1 '最优适应,找最小可以满足的
= 10000
i = 1 640
(i) = 0
(i) >=
(i) <
= (i)
= i
i
= 0
("内存不足!", )
=
2 '最坏适应,找最大可以满足的
= 10000
i = 1 640
(i) = 0
(i) >=
(i) >
= (i)
= i
i
= 0
("内存不足!", )
=
("内存不足!", ) ()
i
j
L
'新的进程进入
= ()
= ()
i = ()
(i) = 1
L = (i) -
(i) =
(i) =
L > 0
= ()
() = 0
() = L
() = (i) +
()
i = ((1) * 6 + 1)
= (i)
:
"请在文本框内输入正确的数字"
()
'刷新显示
i
j, k
i = 1 640
(i) <> -1
(i) = 1
(i 2) = 1
= 4
= 5
= 6
= (i)
= (i)
= (i)
j = + 1
(i) = 1
(j, 1) = (i)
(j, 2) = ((i)) + "K"
(j, 3) = ((i)) + "K"
(j, 4) = ((i)) + "已分配"
(j, 5) = () + "号进程"
(i) = 0
(j, 1) = (i)
(j, 2) = ((i)) + "K"
(j, 3) = ((i)) + "K"
(j, 4) = ((i)) + "未分配"
(j, 5) = ""
k = 1 5
= k
j = + 1 +
= j
=
j <> + 1
(, ) = ""
j
k
()
i
p, n
j
'回收进程的内存和合并空闲分区
= ()
i = 1 640
(i) =
'既无上邻又无下邻
(i) = 0
(i) = 0
() = 0
i = 1
n = 0
'找下一个相连的分区
j = 1 640
(i) + (i) = (j)
(j) = 0
n = j
j
n <> 0