动态分区分配算法

1.实验步骤:

主函数:一个菜单栏的形式,可以选择要执行的算法。
首次适应算法:每次都从开始往后找满足条件的分区。
循环首次适应算法:从前一次找到的地方往后继续找分区。
最佳适应算法:先从小到大排序,找比前一个大后一个小的分区。

2.算法描述:

1.首次适应算法:该算法从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。
2.循环首次适应算法:该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。
3.最佳适应算法: 该算法总是把既能满足要求,又是最小的空闲分区分配给作业。为了加速查找,该算法要求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足要求的空闲区,必然是最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序,这也带来了一定的开销。

3.源代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct info{
	int quhao;	//区号 
	int dress;	//起始地址 
	int num;	//大小 
	int free;	//是否空闲 
	string name; //进程名 
};
info IN[100];	//原始内存分配表 
int Kong[100];//空闲分区表 
int Ready[100];//已分配分区表 

//初始化分区 
void init(){
	Kong[0]=0;
	ifstream fen("data.txt");
//	从文件中导入内存分区表 
	for(int i
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值