• 大小: 132.01 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-26
  • 语言: 其他
  • 标签: 内存分配  

资源简介

模拟首次适应动态分区存储管理方案中的内存分配与回收
含源码
设计文档

资源截图

代码片段和文件信息

// memorry.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include 
#include 
#include 



using namespace std;


class freeBlock
{
public: int size;
public: int startAdd;
freeBlock()
{

size=0;
startAdd=0;

}
};
class usedBlock
{
public :int size;
public : int startAdd;
public :string process ;
public :usedBlock()
{

size=0;
startAdd=0;
process=“null“;

}
};
list  FreeBlocks;
list  UsedBlocks;
int S =10;
 void init()
{
int size =0;
int Start=0;
cout<<“请输入空闲块的块数(确认块数大于0):“< cin>> size;
for (int i=0;i {
cout<<“请输入空闲块“< <<“(请确认块小于最大内存大小256MB):“;
freeBlock temp ;
cin>>temp.size;
cout<<“===================================“< temp.startAdd=Start;
FreeBlocks.push_back(temp);
Start +=temp.size;
}
}

bool allocate()
{
int Blocksize;
string process;
cout<<“请输入进程名称“< cin>>process;
cout<<“请输入进程“< cin>> Blocksize;
cout<<“===================================“< list::iterator theIterator;
int t;
for( theIterator = FreeBlocks.begin(); theIterator != FreeBlocks.end();)
{
t =theIterator->size-Blocksize;
if (t>=0)
{

if (t>=S)
{
freeBlock temp ;
temp.size =theIterator->size-Blocksize;
temp.startAdd=theIterator->startAdd+Blocksize;
FreeBlocks.push_back(temp);
usedBlock usedtemp;
usedtemp.size=Blocksize;
usedtemp.process =process;
usedtemp.startAdd=theIterator->startAdd;
UsedBlocks.push_back(usedtemp);
}
else {
usedBlock usedtemp;
usedtemp.size=theIterator->size;
usedtemp.process =process;
usedtemp.startAdd=theIterator->startAdd;
UsedBlocks.push_back(usedtemp);
}

theIterator=FreeBlocks.erase(theIterator);
return true;
}
else{theIterator++;}
}
return false;
}

bool recycle()
{
string process;
cout<<“请输入要回收的进程名称“< cin>>process;
cout<<“===================================“< list::iterator theIterator;
for( theIterator = UsedBlocks.begin(); theIterator != UsedBlocks.end(); )
{
if(theIterator->process == process)
{
freeBlock temp ;
temp.size =theIterator->size;
temp.startAdd=theIterator->startAdd;
FreeBlocks.push_back(temp);
theIterator=UsedBlocks.erase(theIterator);
return true;
}else{

theIterator++;
}
}
return false;
}
void merger()
{
list::iterator theIterator;
for( theIterator = FreeBlocks.begin(); theIterator != FreeBlocks.end(); theIterator++ )
{
list::iterator Iterator;

for( Iterator = FreeBlocks.begin(); Iterator != FreeBlocks.end(); )
{
if (theIterator->startAdd+theIterator->size==Iterator->startAdd)
{
theIterator->size=Iterator->size+theIterator->size;
Iterator=FreeBlocks.erase(Iterator);
}
else Iterator++ ;
}
}
}
void display()
{ int i=0;
list

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4883  2009-04-13 15:17  模拟首次适应动态分区存储管理方案中的内存分配与回收\memorry.cpp

     文件     102400  2009-04-13 15:19  模拟首次适应动态分区存储管理方案中的内存分配与回收\memorry.exe

     文件       4487  2009-04-13 10:11  模拟首次适应动态分区存储管理方案中的内存分配与回收\memorry.vcproj

     文件       1427  2009-04-20 23:28  模拟首次适应动态分区存储管理方案中的内存分配与回收\memorry.vcproj.E96CEF8920554E9.Administrator.user

     文件        950  2009-04-13 10:11  模拟首次适应动态分区存储管理方案中的内存分配与回收\ReadMe.txt

     文件        212  2009-04-13 10:11  模拟首次适应动态分区存储管理方案中的内存分配与回收\stdafx.cpp

     文件        276  2009-04-13 10:11  模拟首次适应动态分区存储管理方案中的内存分配与回收\stdafx.h

     文件     126919  2009-04-21 11:14  模拟首次适应动态分区存储管理方案中的内存分配与回收\模拟首次适应动态分区存储管理方案中的内存分配与回收.pdf

     目录          0  2009-04-21 11:18  模拟首次适应动态分区存储管理方案中的内存分配与回收

----------- ---------  ---------- -----  ----

               241554                    9


评论

共有 条评论