1 / 7
文档名称:

linux 内存分配--最先适配法和最优适配法.doc

格式:doc   大小:210KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux 内存分配--最先适配法和最优适配法.doc

上传人:wzt520728 2018/5/24 文件大小:210 KB

下载得到文件列表

linux 内存分配--最先适配法和最优适配法.doc

文档介绍

文档介绍:“网络操作系统”课程
实验报告
姓名:
学号: 20**********
专业: 计算机科学与技术
编制时间: 2012年5月19日
指导教师:
XX大学-信息学院编制
Linux –模拟内存管理程序
实验目的
了解简单的固定大小内存分配方法,掌握分区存储管理技术,了解在分区管理机制下所需的数据结构。
实验过程


在桌面右击打开终端,返回到stu2根目录
编译c文件
gcc -o
运行文件:
./
实验步骤及分析

分区开始地址startaddress
分区大小size
分区状态state

(1)首次适应算法
在首次适应算法中,是从已建立好的数组中顺序查找,直至找到第一个大小能满足要求的空闲分区为止,然后再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空间令开辟一块新的地址,大小为原来的大小减去作业大小,若查找结束都不能找到一个满足要求的分区,则此次内存分配失败。
(2)最佳适应算法
最坏适应分配算法是每次为作业分配内存时,扫描整个数组,总是把能满足条件的,又是最小的空闲分区分配给作业。

内存块大小起始地址 内存块状态
128 0 0
256 200 0
512 500 0
1600 1500 0
150 5000 0
其中,在内存状态中用0代表该内存块未被分配;用1代表该内存块已被分配。
,并在此文件里输入以下代码:
#include <>
#define L 10//宏定义,即把N的值定义为10
typedef struct Lnode// 定义了一个Lnode结构体,其中包括起始地址,大小,状态;
{
int startaddress;//起始地址
int size;//内存块大小
int state;//内存块状态
}LNode;// typedef把struct Lnode这个结构体类型名字重新定义为Lnode
LNode P[L]={{0,128,0},{200,256,0},{500,512,0},{1500,1600,0},{5000,150,0}};//静态为Lnode类型的P[L]赋值,分别为{0,128,0},{200,256,0},{500,512,0},{1500,1600,0},{5000,150,0}。
int N=5;//定义N的起始值为5
void print()//定义一个print()函数
{
int i;
printf("Startaddress size state\n");//在屏幕上打印Startaddress size state并换行
for(i=0;i<N;i++)//用for循环,显示内存块的分配状况
printf("%3d%8d%4d\n",P[i].startaddress,P[i].size,P[i].state);
}
void First()定义一个First()函数
{
int i,l=0,m;//i用于循环内存