操作系统可变分区存储管理模拟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档