}
//内存信息的自动产生 void create_apply() {
int k=0;//空闲区数量 for (i=0;i if(ary1[i][3]!=2) {ary2[k][0]=ary1[i][0]; ary2[k][1]=ary1[i][1]; ary2[k][2]=ary1[i][2]; k++; } 6 int i; for (i=0;i ary1[i][0]=i+1; ary1[i][1]=rand()0; if(i==0) { } ary1[i][3]=rand()%3; //cout < ary1[i][2]=ary1[i-1][2]+ary1[i-1][1]; ary1[i][2]=0; else cout<<\您将创建几个进程---:\cin>>choice2; q=choice2; cout<<\输入想创建的作业请求大小\for(int i=0;i cout<<\你创建了\个进程 \for(int i=0;i cout< cout<>j; ary3[i]=j; } //内存信息的手动生成 int create_fenqu(){ } //首次适应算法 void first_fit() 7 int k,x,y,o=0; int a=0; cout<<\输入想创建的内存分区块数 : \cin>>k; cout<<\输入\个内存分区块 大小\for(int i=0;i cout<<\输入内存块的分配状态\for(int i=0;i ary1[0][2]=0; ary1[1][2]=ary1[0][1]; for(int i=2;i for (int i=0;i if(ary1[i][3]!=2){ } ary2[a][0]=ary1[i][0]; ary2[a][1]=ary1[i][1]; ary2[a][2]=ary1[i][2]; a++; ary1[i][2]=ary1[i-1][2]+ary1[i-1][1];//起始地址 cin>>y; if(y==2){ } ary1[i][3]=y;//状态 n++; ary1[i][0]=i; //序号 cin>>x; ary1[i][1]=x;//大小 } n=k;//空闲块数量 { vision(); int i; int j; int k; int l; int d;//用来保存第k个的值 int id2=0; for(i=0;i for(j=0;j if(ary2[j][1]>=ary3[i])//进程占用空间小于等于其中一个空闲区的大小 { cout<<\与\相匹配\stream.open(\ stream<<\与\相匹配\stream.close(); if(ary2[j][1]==ary3[i])//进程占用空间等于其中一个空闲区块大小 { ary1[ary2[j][0]-1][3]=2; for(k=j+1;k ary2[k-1][0]=ary2[k][0]; ary2[k-1][1]=ary2[k][1]; ary2[k-1][2]=ary2[k][2]; } n--; }else//否则的话,空闲链对应的地方盘块大小小了进程占用的大小,并且内存分配从对应的 { l=ary2[j][0]; d=ary1[l-1][1];//大小 ary1[l-1][1]=ary3[i]; ary1[l-1][3]=2; m++; for(k=m;k>ary2[j][0]+1;k--) { ary1[k-1][0]=ary1[k-2][0]+1; ary1[k-1][1]=ary1[k-2][1]; ary1[k-1][2]=ary1[k-2][2]; ary1[k-1][3]=ary1[k-2][3]; 那一项开始增加一项 } l=ary2[j][0]; 8 } } { if(ary1[id2][3]!=2) } } n=k; } break; } else { } cout<<\与\不匹配\stream.open(\ stream<<\与\不匹配\stream.close(); { ary2[k][0]=ary1[id2][0]; ary2[k][1]=ary1[id2][1]; ary2[k][2]=ary1[id2][2]; k++; } ary1[l][0]=l+1; ary1[l][1]=d-ary3[i]; ary1[l][2]=ary1[l-1][1]+ary1[l-1][2]; ary1[l][3]=0; k=0; for(id2=0;id2 vision(); //首次循环适应算法 void next_fit() { vision(); int i; int j; int k; int s; int d; int id2; for(i=0;i 9 { for(j=r;j if(ary3[i]<=ary2[j][1]) { cout<<\与\相匹配\stream.open(\ { } else//对应的空闲块大小大于进程需要大小 { //-----改变内存分配情况----- r=(r+1)%n; //改变第k块的内容 k=ary2[j][0]; d=ary1[k-1][1]; ary1[k-1][1]=ary3[i]; ary1[k-1][3]=2; //从k+1之后所有向后移一格 m++;//内存块数增加1 for(s=m-1;s>k;s--) { ary1[s][0]=ary1[s-1][0]+1; ary1[s][1]=ary1[s-1][1]; ary1[s][2]=ary1[s-1][2]; 10 //---改变内存分配--- k=ary2[j][0];//得到对应空闲块对应内存块的序号 k--; ary1[k][3]=2;//把对应内存块标志位上改成已分配 //------------------ //--改变空闲块表:把从这块空闲块以下的所有空闲块向上移一格-- n--; for(k=j;k //------------------ break; ary2[k][0]=ary2[k+1][0]; ary2[k][1]=ary2[k+1][1]; ary2[k][2]=ary2[k+1][2]; stream<<\与\相匹配\stream.close(); if(ary3[i]==ary2[j][1])