OS_可变分区的存储管理:C++实现

1、实验目的:ios

  1. 加深对可变分区存储管理的理解;
  2. 提升用C语言编制大型系统程序的能力,特别是掌握C语言编程的难点:指针和指针做为函数参数;
  3. 掌握用指针实现链表和在链表上的基本操做。
    2、实验内容:
    参照教材P123-P125的内容,编写一个C程序,用char *malloc(unsigned size)函数向系统申请一次内存空间(如size=1000,单位为字节),用循环首次适应算法、最佳适应算法和最坏适应算法,模拟可变分区存储管理,实现对内存区的分配和回收管理。
    3、实验要求:
  4. 分配函数addr=(char *)lmalloc(unsigned size)和释放函数lfree(unsigned size,char *addr)的参数size和addr,要以键盘命令的形式输入,每次分配和释放后显示空闲分区表。
  5. 空闲分区表可采用结构数组的形式(最低要求)或双向链表的形式。

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

#include<stdio.h>#include<stdlib.h>#include<iostream>#include<iomanip>
咱们引入这些库函数,要使用到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开始让它自动的递加code

相关文章
相关标签/搜索