操作系统实验三、四:动态分区存储管理(python)

本文通过Python代码详细介绍了如何实现操作系统中的动态分区存储管理,包括BF(最佳适应算法)和FF(首次适应算法)两种算法,涵盖了分区初始化、动态分配、回收和合并的全过程,并展示了具体的操作步骤和代码实现。
摘要由CSDN通过智能技术生成

目录

一、实验目的:

二、实验内容: 

三、实验代码(BF算法)

BF算法完整实验代码:

四、实验代码(FF算法)

FF算法完整实验代码:


一、实验目的

编写程序,实现动态分区存储管理算法,模拟动态分区存储分配、回收和合并的过程,加深对动态分区存储管理的理解。

二、实验内容: 

模拟实现至少两种动态分区存储管理算法(首次适应算法、最佳适应算法或最坏适应算法等)。每种算法包括动态分区存储分配、回收和合并的过程,熟悉并掌握各种算法的空闲区组织方式。实验内容如下:

1、分区的初始化——可以由用户输入初始分区的大小(初始化后只有一个空闲分区,起始地址为0,大小是用户输入的大小)。

2、分区的动态分配过程:由用户输入作业号和作业的大小,实现分区过程。

3、分区的回收:用户输入作业号,实现分区回收,同时,分区的合并也要体现出来(注意:不存在的作业号要给出错误提示!)。

4、分区的显示:任何时刻,可以查看当前内存的情况(起始地址是什么,大小多大的分区是空闲或者占用的,能够显示出来)。

实验要求如下:

(1)内存空间不足的情况,要有相应的显示;

(2)作业不能同名,但是删除后可以再用这个名字;

(3)作业空间回收时输入作业名,回收相应的空间,如果这个作业名不存在,也要有相应的提示。

三、实验代码(BF算法)

本次实验采用BF算法(最佳适应算法)具体步骤如下:

分区的初始化:

elif select == '1':

   print("请输入内存大小:")

   size = int(input())

   a = Memory(0, size - 1, size, state=1, ID=0)

   b = []

   b.append(a)

分区的动态分配过程:

BF分配算法

def BF(work_id, work_length, li):

    for i in li:

        if i.Id == work_id:

            print('作业已存在!')

            return

    q = copy.copy(li)

    q = bubble_sort(q)      

    s = -1

    ss12 = -1

    for i in range(0, len(q)):

        p = q[i]

        if p.state == 1 and p.length > work_length:

            s = p.start                              

        elif p.state == 1 and p.length == work_length:

            ss12 = p.start

    if s == -1 and ss12 == -1:

        print("内存空间不足!")

        return

    for i in range(0, len(li)):

        p = li[i]

        if p.start == s:

            node2 = Memory(p.start + work_length, p.end, p.length - work_length, 1, 0)  

            a = Memory(p.start, p.start + work_length - 1, work_length, state=0, ID=work_id)

            del li[i]

            li.insert(i, node2)

            li.insert(i, a)

            show_memory(li)

            return

        elif p.start == ss12:

            p.state = 0

            show_memory(li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本科小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值