操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc

上传人:b****1 文档编号:13168725 上传时间:2022-10-07 格式:DOC 页数:15 大小:235.50KB
下载 相关 举报
操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc_第1页
第1页 / 共15页
操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc_第2页
第2页 / 共15页
操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc_第3页
第3页 / 共15页
操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc_第4页
第4页 / 共15页
操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc

《操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc(15页珍藏版)》请在冰豆网上搜索。

操作系统课程设计动态异长分区的存储分配与回收算法文档格式.doc

,p->

start_address);

itoa(p->

start_address,buffer,10);

print_space(19-strlen(buffer));

size);

itoa(p->

size,buffer,10);

print_space(17-strlen(buffer));

|\n"

p=p->

next;

};

printf("

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

}

//2.最先适应分配法:

内存释放函数

voidFF_release_memory(intstart_address,intsize){

EnterCriticalSection(&

CS_FREEAREA_LIST);

__int64t1,t2;

//记录该算法起止时间

t1=GetCycleCount();

//记录起始时间

FREEAREA*temp,*p,*pp;

//将空闲区按start_address由小到大排序,以便整合相邻空闲区

while

(1){

intchange=0;

p=p_free_area_list;

if(p->

next!

=NULL){

if(p->

start_address>

p->

next->

start_address){

pp=p->

p->

next=pp->

pp->

next=p;

p_free_area_list=pp;

change=1;

}

}

while(p->

if(p->

start_address){

pp=p->

p->

pp->

next=p->

next=pp;

change=1;

}

p=p->

next;

if(change==0){

break;

}

//插入空闲区

temp=newFREEAREA;

p=newFREEAREA;

temp->

start_address=start_address;

size=size;

next=NULL;

p->

next=p_free_area_list;

while(p->

temp->

start_address){

temp->

p->

next=temp;

else{

p=p->

if(p->

next==NULL){

p->

elseif(temp->

next==p_free_area_list){

p_free_area_list=temp;

}

//整合碎片

if(p==NULL){

while(p->

if((p->

start_address+p->

size)==(p->

start_address)){

size=p->

size+p->

size;

free(p->

next);

else{

break;

else{

//整理线程结束后的驻留链表

THREAD_RESIDENCE_MEMORY*q;

q=p_thread_residence_memory_list;

if(q->

start_address==start_address){

p_thread_residence_memory_list=p_thread_residence_memory_list->

else{

while(q->

if(q->

if(q->

next==tail_thread_residence_memory_list){

tail_thread_residence_memory_list=q;

q->

next=q->

q=q->

//记录结束时间,并将运行时间存入对应数组

t2=GetCycleCount();

if(time[0][0]>

t2-t1){

time[0][0]=t2-t1;

if(time[0][1]<

time[0][1]=t2-t1;

}

LeaveCriticalSection(&

//3.最佳适应分配算法的内存释放函数

voidBF_release_memory(intstart_address,intsize){

//插入空闲区

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

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1