操作系统课程设计 - 动态分区分配存储管理(2)

2019-08-30 23:32

}

//内存信息的自动产生 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])


操作系统课程设计 - 动态分区分配存储管理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:桥梁基础类型的选择 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: