可变分区算法c语言,OS_可变分区的存储管理:C++实现

一、实验目的:

加深对可变分区存储管理的理解;

提高用C语言编制大型系统程序的能力,特别是掌握C语言编程的难点:指针和指针作为函数参数;

掌握用指针实现链表和在链表上的基本操作。

二、实验内容:

参照教材P123-P125的内容,编写一个C程序,用char *malloc(unsigned size)函数向系统申请一次内存空间(如size=1000,单位为字节),用循环首次适应算法、最佳适应算法和最坏适应算法,模拟可变分区存储管理,实现对内存区的分配和回收管理。

三、实验要求:

分配函数addr=(char *)lmalloc(unsigned size)和释放函数lfree(unsigned size,char *addr)的参数size和addr,要以键盘命令的形式输入,每次分配和释放后显示空闲分区表。

空闲分区表可采用结构数组的形式(最低要求)或双向链表的形式。

以上为实验的要求接下来来探讨如何的去实现,这里我用的是codeblocks加上notepad++,结合了很多人的代码,慢慢从小白蜕化····>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

物理分割

#include#include#include#include

我们引入这些库函数,要使用到malloc、cout、cin等等,我是从c转型的所以可能或许有些许的不同吧

假定我们的内存的分区可用空间为1000kb 那么我们需要定义一些预处理

#define maxsize 1000这个应该都可以看懂我就不过多的叙述了

定义数据结构

//结构的定义

typedef struct freePart{//空闲分区

long size;//分区的大小

long add;//分区的地址

int state;//状态

}elemType;

typedef struct twoNode{//双向链表

elemType data;

struct twoNode *pri;//前趋

struct twoNode *nex;//后驱

}twoNode,*linkTwoList;

typedef struct T{//排序的链表结构(单)

linkTwoList p;

struct T *next;

}T;

linkTwoList tou;//头节点

linkTwoList wei;//尾节点

T *headtou;

这些的定义我们可以参考一下书上的讲解,首先假设我们都实现了我们在main中需要怎么去写我们的代码呢?

我们得初始化我们的代码,因为我们的内存分区是由双向链表中的结构体实现的,所以我们首先得初始化我们的双向链表,头节点不需要指向任何东西,尾部的节点需要pri头节点,指向1000的空闲区,最后链接上一个null,这样我们的第一个就做好了。这个是我们的想法,具体的实现,之后再讲解。

当我们初始化完了之后我们会想着去显示在控制台上,那么我们也可以将我们的显示给定义为一个函数(方法),那么如何的去实现呢?

我们之前并未说明分区号因为我们是从0开始让它自动的递加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值