1、 实验四 操作系统-动态分区分配算法萨斯的发生的 v 设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为 n,空闲分区大小分别为 P1, ,Pn,在动态分区分配过程中需要分配的进程个数为 m(mn) ,它们需要的分区大小分别为 S1, ,Sm,分别利用四种动态分区分配算法将 m 个进程放入 n 个空闲分区,给出进程在空闲分区中的分配情况。程序要求如下:1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区中的分
2、配情况。3)输入:空闲分区个数 n,空闲分区大小 P1, ,Pn,进程个数m,进程需要的分区大小 S1, ,Sm,算法选择 1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法。4)输出:最终内存空闲分区的分配情况。代码实现:#include#include#includeusing namespace std;const int MaxNumber=100;int FreePartitionMaxNumber;/空闲分区大小int FirstPartitionMaxNumber;/1-首次适应算法int CycleFirstPartitionMaxNumber;/2-循
3、环首次适应算法int BestPartitionMaxNumber;/3-最佳适应算法int WorstPartitionMaxNumber;/4-最坏适应算法int ProcessNeedMaxNumber;/进程需要的分区大小int PartitionNum,ProcessNum;char ProcessNameMaxNumber;/进程名char ProcessPartitionMaxNumber;/进程分配的序列int PartitionMaxNumber;char strMaxNumberMaxNumber;void FirstFit(int n,int m);void NextFi
4、t(int n,int m);void BestFit(int n,int m);void WorstFit(int n,int m);void Print(int n, int m);void Print2(int n, int m);/=void FirstFit(int n, int m)cout BestPartitionPartitioni)temp = BestPartitionPartitioni;id = Partitioni;BestPartitionid=BestPartitionid-ProcessNeedflag1;ProcessPartitionflag1=id;flag1 += 1;Print(n,m);cout temp)temp = WorstPartitionPartitioni;id = Partitioni;WorstPartitionid=WorstPartitionid-ProcessNeedflag1;ProcessPartitionflag1=id;flag1 += 1;Print(n,m);coutintput;coutn;for(i=0; iFreePartitioni;inm;for(j=0; jProcessNamej;for(j=0; jProcessNeedj;choice(n,m);运行结果: