first fit与next fit方法
在学习操作系统的过程中遇到了不少的问题与难点,在这里记录一下学习的过程,便于以后查看。
first fit方法介绍
first fit称为首次适应算法,是从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。链接
next fit方法介绍
next fit对应的方法名称有很多,有下次适应算法还有循环首次适配算法等,不过所对应的思想却是一致的,即分配内存时不是从链首或表首进行查找可以分配 内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找。
c++算法实现
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
#define MAXNUMBER 100
static int PartitionNum; //内存中空闲分区的个数
static int ProcessNum; //需要分配的进程个数
static int FreePartition[MAXNUMBER]; //空闲分区对应的内存
static int ProcessNeed[MAXNUMBER]; //需要分配的进程大小
static int time1=0;
static int compare1[MAXNUMBER];
static int searchtime=0;
static int LeftFreePartition[MAXNUMBER];
static int LeftProcessNeed[MAXNUMBER];
static char ProcessName[MAXNUMBER];
static char NameProcessToPartition[MAXNUMBER][MAXNUMBER];
typedef struct
{
int partitionSize;
int id;
}sortNeed;
void readDataFunction();
void display();
void display1();
void FirstFit();
void NextFit();
void BestFit();
void WorstFit();
void selectAlgorithm(int chooceAlgorithm);
void recycle();
void display();
void readDataFunction()
{
ifstream readData;
readData.open("data.txt");
readData>>PartitionNum;
for (int i=0;i<PartitionNum;i++)
{
readData>>FreePartition[i];
}
readData>>ProcessNum;
for (int i=0;i<ProcessNum;i++)
{
readData>>ProcessName[i];
}
for (int i=0;i<ProcessNum;i++)
{
readData>>ProcessNeed[i];
}
}
void initial()
{
readDataFunction(); //读取原始数据
for (int i=0;i<ProcessNum;i