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

更新时间:2023-04-25 18:48:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

操作系统实验(三)可变分区存储管理模拟实验作者:顾熙杰

准考证号:4

报到号:177

实验地点:浙工大计算机中心

1)实验目的

理解操作系统中可变分区管理的算法,

掌握分配和回收算法

掌握空闲分区的合并方法

掌握不同的适应算法

2)实验内容

建立数据结构

建立空闲分区队列

根据不同的适应算法建立队列

编写分配算法

编写回收算法

3)数据结构

'分区首地址

'分区长度

'分区状态-1表示不存在,0表示空闲分区,1表示已经分配的分区'该分区正在活动的进程代号

4)程序流程图

面向对象程序设计由事件驱动,画流程图比较困难。

(1)分配新的分区

最先适应按地址找

最优适应,找最小可以满足的

最坏适应,找最大可以满足的

(2)分区回收

既无上邻又无下邻

既有上邻又有下邻

只有上邻

1 / 18

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

只有下邻

5)实验中需要改进的地方

由于没有使用链表,程序结构比较混乱,需要大大改进,提高可阅读性。

6)程序代码()

"32" "" ( , , , , , )

'表示内存分区的结构信息类型的变量类型

'分区首地址

'分区长度

'分区状态-1表示不存在,0表示空闲分区,1表示已经分配的分区'该分区正在活动的进程代号

'定义最多640个,总共640K内存数组

(1 640)

'表示可以使用的进程代号

(1 640)

'0表示该进程号可以使用

'.>=1表示该进程号不可以使用

'表示分配方法

2 / 18

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

'0=最先分配

'1=最优分配

'2=最坏分配

()

'取可以使用的进程号

i

i = 1 640

(i) = 0

(i) = 1

= i

= 0

()

'取可以使用的为了表示分区的存储空间,模拟c语言的指针

i

i = 1 640

(i) = -1

= i

= 0

3 / 18

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

( )

i

,

'分配新的分区

0 '最先适应按地址找

i = 1 640

(i) = 0

(i) >=

= i

i

1 '最优适应,找最小可以满足的

= 10000

i = 1 640

(i) = 0

(i) >=

(i) <

= (i)

= i

4 / 18

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

= 0

("内存不足!", )

=

2 '最坏适应,找最大可以满足的

= 10000

i = 1 640

(i) = 0

(i) >=

(i) >

= (i)

= i

i

= 0

("内存不足!", )

=

5 / 18

操作系统可变分区存储管理模拟("内存不足!", )

()

i

j

L

'新的进程进入

= ()

= ()

i = ()

(i) = 1

L = (i) -

(i) =

(i) =

L > 0

= ()

() = 0

() = L

() = (i) +

6 / 18

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

()

i = ((1) * 6 + 1)

= (i)

:

"请在文本框内输入正确的数字"

()

'刷新显示

i

j, k

i = 1 640

(i) <> -1

(i) = 1

(i 2) = 1

7 / 18

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

= 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)) + "未分配"

8 / 18

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

(j, 5) = ""

k = 1 5

= k

j = + 1 +

= j

=

j <> + 1

(, ) = ""

j

k

()

i

p, n

j

9 / 18

操作系统可变分区存储管理模拟'回收进程的内存和合并空闲分区

= ()

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

10 / 18

本文来源:https://www.bwwdw.com/article/cfbq.html

Top