操作系统存储器的分配与回收算法实现Word文件下载.doc

上传人:wj 文档编号:1455700 上传时间:2023-04-30 格式:DOC 页数:20 大小:287.50KB
下载 相关 举报
操作系统存储器的分配与回收算法实现Word文件下载.doc_第1页
第1页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第2页
第2页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第3页
第3页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第4页
第4页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第5页
第5页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第6页
第6页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第7页
第7页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第8页
第8页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第9页
第9页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第10页
第10页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第11页
第11页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第12页
第12页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第13页
第13页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第14页
第14页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第15页
第15页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第16页
第16页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第17页
第17页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第18页
第18页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第19页
第19页 / 共20页
操作系统存储器的分配与回收算法实现Word文件下载.doc_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统存储器的分配与回收算法实现Word文件下载.doc

《操作系统存储器的分配与回收算法实现Word文件下载.doc》由会员分享,可在线阅读,更多相关《操作系统存储器的分配与回收算法实现Word文件下载.doc(20页珍藏版)》请在冰点文库上搜索。

操作系统存储器的分配与回收算法实现Word文件下载.doc

stdlib.h>

typedefstructFreeLink{//定义自由链

structFreeLink*prior;

charname;

intstart;

intsize;

boolflag;

structFreeLink*next;

}*ptr,*head;

headtop;

ptrp;

voidprint(){//将内存分配情况打印到屏幕上

p=top;

cout<

<

"

************************内存分配情况表************************"

endl;

区号\t\t"

起始位置\t"

区间长度\t"

区间状态\t"

do{

cout<

p->

name<

\t\t"

start<

size<

;

if(p->

flag==false){cout<

空闲"

}

else{cout<

已占用"

p=p->

next;

}

while(p!

=NULL);

voidclear(){//结束操作时清空“内存”以备其他操作

p=top;

top=top->

free(p);

while(top!

voidasc(ptr&

p){//最佳适应法的内存分配函数

intmin;

ptrop;

FreeLink*fl=(FreeLink*)malloc(sizeof(FreeLink));

请输入要分配内存的进程名"

cin>

>

fl->

name;

请输入要分配内存的大小"

size;

min=256;

fl->

flag=true;

flag==false&

&

=min&

size>

=fl->

size){

min=p->

op=p;

}

if(op->

fl->

start=op->

start;

op->

start=fl->

start+fl->

size=op->

size-fl->

next=op;

prior=op->

prior;

prior->

next=fl;

op->

prior=fl;

gotoflag1;

size==fl->

flag=fl->

flag;

name=fl->

free(fl);

内存过小,分配失败!

gotoflag2;

flag1:

cout<

分配成功!

flag2:

;

voiddec(ptr&

p){//最坏适应法的内存分配函数

intmax;

max=fl->

=max){

max=p->

gotoflag3;

gotoflag4;

flag3:

flag4:

voidsplice(ptr&

p){//若被操作的内存有相邻空闲区则将空闲区拼接合并

intx;

if(p->

next->

flag==false)x=1;

if((p->

flag==true)||(p->

next==NULL))x=2;

flag==true&

flag==false)||(p->

prior==NULL&

flag==false))x=3;

next==NULL))x=4;

switch(x){

case1:

prior=p->

p->

next=p->

size=p->

size+p->

if(p->

next!

=NULL)p->

free(p->

next);

free(p);

break;

case2:

if(p->

next==NULL){

p->

}else{

}

case3:

prior==NULL){

top=p->

prior=NULL;

start=p->

p->

p->

p->

p->

case4:

name='

@'

flag=false;

voidallocate(ptr&

p){//最先适应法的内存分配函数

fl->

next=p;

p->

gotoa;

free(fl);

gotob;

a:

b:

voidrecover(ptr&

p){//内存回收函数

charn='

'

请输入要回收的内存对应的进程名"

n;

if(p->

name==n){

splice(p);

gotoc;

p=p->

内存并未分配给对应进程,回收失败!

gotod;

c:

内存回收成功!

d:

intffa(){//最先适应法

charchoice='

print();

ptrpcb=(FreeLink*)malloc(sizeof(FreeLink));

pcb->

next=top;

prior=top->

top->

prior=pcb;

start=top->

请输入要为系统分配的内存块名"

pcb->

gotof;

e:

超过内存最大容量请重新输入要分配内存的大小"

f:

if(pcb->

256)gotoe;

top->

size=top->

size-pcb->

top=pcb;

start+=top->

while(true){

p=top->

请从下列选项中进行选择"

1.分配内存"

2.回收内存"

3.结束操作"

请输入你的选择"

cin>

choice;

while(choice!

='

1'

choice!

2'

3'

);

switch(choice){

case'

:

allocate(p);

print();

break;

recover(p);

clear();

return0;

intbfa(){//最佳适应法

gotoh;

g:

h:

256)gotog;

asc(p);

intwfa(){//最坏适应法

gotoj;

i:

j:

256)gotoi;

dec(p);

intmain(){//主函数

charchoice='

ptrfree=(FreeLink*)malloc(sizeof(FreeLink));

top=free;

start=0;

size=256;

next=NULL;

***************Memoryallocationandrecoveryalgorithm***************"

************************存储器的分配与回收算法************************"

do{

cout<

1.最先适应算法"

2.最优适应算法"

3.最坏适应算法"

4.退出"

cin>

while(choice!

4'

switch(choice){

case'

ffa();

bfa();

wfa();

四、实验结果

最先适应法

最佳适应法

最坏适应法

五.实验总结

知道了存储器的分配与回收算法实现方法,采用最先适应法、最佳适应法、最坏适应法分配主存空间。

当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。

当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。

最后感谢李老师的指导。

19

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

当前位置:首页 > PPT模板 > 商务科技

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

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