计算机操作系统动态分区Word文档下载推荐.docx

上传人:b****3 文档编号:7728960 上传时间:2023-05-09 格式:DOCX 页数:15 大小:182.06KB
下载 相关 举报
计算机操作系统动态分区Word文档下载推荐.docx_第1页
第1页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第2页
第2页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第3页
第3页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第4页
第4页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第5页
第5页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第6页
第6页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第7页
第7页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第8页
第8页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第9页
第9页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第10页
第10页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第11页
第11页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第12页
第12页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第13页
第13页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第14页
第14页 / 共15页
计算机操作系统动态分区Word文档下载推荐.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机操作系统动态分区Word文档下载推荐.docx

《计算机操作系统动态分区Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机操作系统动态分区Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。

计算机操作系统动态分区Word文档下载推荐.docx

applyarea)

{

freeblock[i].startaddress=freeblock[i].startaddress+applyarea;

freeblock[i].size=freeblock[i].size-applyarea;

tag=1;

returnfreeblock[i].startaddress-applyarea;

}

else

freeblock[i].size==applyarea)

freeblock[i].state=0;

returnfreeblock[i].startaddress;

if(tag==0)

return-1;

}

intalloc2(intapplyarea,ints)

{

for(i=s;

start=freeblock[i].startaddress-applyarea;

returni;

if(freeblock[i].state==1&

start=freeblock[i].startaddress;

returni;

}

intalloc3(intapplyarea)

inti,k,h,flag,tag=0,j=0;

inta[N];

structfreeareamin;

structfreeareamid;

applyarea)a[j++]=i;

if(j>

1)

h=a[0];

min=freeblock[h];

for(k=1;

k<

j;

k++)

h=a[k];

if(freeblock[h].size<

min.size)

mid.size=freeblock[h].size;

mid.state=freeblock[h].state;

mid.startaddress=freeblock[h].startaddress;

freeblock[h].size=min.size;

freeblock[h].state=min.state;

freeblock[h].startaddress=min.startaddress;

min.size=mid.size;

min.state=mid.state;

min.startaddress=mid.startaddress;

min.startaddress=min.startaddress+applyarea;

min.size=min.size-applyarea;

tag=1;

returnmin.startaddress-applyarea;

elseif(j==1)

tag=1;

if(tag==0)

voidsetfree()

ints,l,tag1=0,tag2=0,tag3=0,i,j;

printf("

inputfreeareastartaddress:

\n"

);

scanf("

%d"

&

s);

inputfreeareasize:

l);

{

if(freeblock[i].startaddress==s+l&

freeblock[i].state==1)

l=l+freeblock[i].size;

tag1=1;

for(j=0;

j<

j++)

if(freeblock[j].startaddress+freeblock[j].size==s&

freeblock[j].state==1)

{

freeblock[i].state=0;

freeblock[j].size=freeblock[j].size+l;

tag2=1;

break;

}

if(tag2==0)

freeblock[i].startaddress=s;

freeblock[i].size=l;

break;

}

if(tag1==0)

for(i=0;

if(freeblock[i].startaddress+freeblock[i].size==s&

{

freeblock[i].size=freeblock[i].size+l;

tag3=1;

}

if(tag3==0)

if(freeblock[j].state==0)

freeblock[j].startaddress=s;

freeblock[j].size=l;

freeblock[j].state=1;

voidadjust()

inti,j;

structfreeareamiddata;

for(j=0;

if(freeblock[j].startaddress>

freeblock[j+1].startaddress)

middata.startaddress=freeblock[j].startaddress;

middata.size=freeblock[j].size;

middata.state=freeblock[j].state;

freeblock[j].startaddress=freeblock[j+1].startaddress;

freeblock[j].size=freeblock[j+1].size;

freeblock[j].state=freeblock[j+1].state;

freeblock[j+1].startaddress=middata.startaddress;

freeblock[j+1].size=middata.size;

freeblock[j+1].state=middata.state;

if(freeblock[j].state==0&

freeblock[j+1].state==1)

middata.startaddress=freeblock[j].startaddress;

middata.size=freeblock[j].size;

middata.state=freeblock[j].state;

freeblock[j].startaddress=freeblock[j+1].startaddress;

freeblock[j].size=freeblock[j+1].size;

freeblock[j].state=freeblock[j+1].state;

freeblock[j+1].startaddress=middata.startaddress;

freeblock[j+1].size=middata.size;

freeblock[j+1].state=middata.state;

voidprint()

inti;

|---------------------------------------------------------------|\n"

|startsizestate|\n"

printf("

|%3d%3d%3d|\n"

freeblock[i].startaddress,freeblock[i].size,freeblock[i].state);

voidshouci()

intapplyarea,start,i,j;

charend;

getchar();

\nisthereanyjobrequestmemory?

yorn:

"

while((end=getchar())=='

y'

atfirstthefreememoryisthis:

adjust();

print();

inputrequestmemorysize:

scanf("

applyarea);

start=alloc(applyarea);

if(start==-1)

printf("

thereisnofitmemory,pleasewait\n"

afterallocation,thefreememoryisthis:

job'

smemorystartaddressis:

%d\n"

start);

jobsizeis:

applyarea);

jobisrunning.\n"

jobisterminated.\n"

for(j=1;

100000;

j++);

setfree();

adjust();

print();

isthereanyjobthatiswaiting?

y/n:

end=getchar();

voidxunhuan()

intapplyarea,i=0,j;

if(i==N-1)

i=alloc2(applyarea,i);

if(i==-1)i=0;

elseif(i<

N-1)

if(i==-1)

adjust();

print();

voidbest()

start=alloc3(applyarea);

main()

chars;

choseonemethod:

a首次适应b循环首次c最佳适应\n"

s=getchar();

switch(s)

case'

a'

:

shouci();

b'

xunhuan();

c'

best();

default:

printf("

error\n"

运行结果:

调试、编辑、运行程序,开始显示如图:

输入a,选择进行首次适应,然后输入y显示空闲区,显示如图:

再输入区间大小20,选择进行分配空间,作业开始运行,显示如图:

输入空闲区的开始地址1000,空闲区大小30,显示如图:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2