版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/该文件所含代码是课设需要学生自己写的代码和补充的代码,包含部分需要修改的课程设计指导书中的代码,不包含不需修改的代码/1.显示空闲区表void display_freearea_list() FREEAREA *p;char buffer20; p=p_free_area_list;printf("|-|-|n");printf("| start_address(kB) | size(KB) |n");printf("|-|-|n");while(p!=NULL)printf("| %d",p->start
2、_address);itoa( p->start_address, buffer, 10 );print_space(19-strlen(buffer);printf("| %d",p->size);itoa(p->size, buffer, 10 );print_space(17-strlen(buffer);printf("|n");p=p->next; printf("|-|-|nn");/2.最先适应分配法:内存释放函数void FF_release_memory(int start_address,i
3、nt size)EnterCriticalSection(&CS_FREEAREA_LIST);_int64 t1, t2;/记录该算法起止时间t1 = GetCycleCount();/记录起始时间FREEAREA *temp,*p,*pp;/将空闲区按start_address由小到大排序,以便整合相邻空闲区while(1)int change = 0;p = p_free_area_list;if(p->next != NULL)if(p->start_address > p->next->start_address)pp = p->next;
4、p->next = pp->next;pp->next = p;p_free_area_list = pp;change = 1;if(p->next != NULL)while(p->next->next != NULL)if(p->next->start_address > p->next->next->start_address )pp = p->next->next;p->next->next = pp->next;pp->next = p->next;p->next
5、 = pp;change = 1;p = p->next ;if(change = 0)break;/插入空闲区temp = new FREEAREA;p = new FREEAREA;temp->start_address = start_address;temp->size = size;temp->next = NULL;p->next = p_free_area_list;while(p->next != NULL)if(p->next->start_address > temp->start_address)temp->
6、;next = p->next ;p->next = temp;break;elsep = p->next ;if(p->next = NULL)p->next = temp;else if(temp->next = p_free_area_list)p_free_area_list = temp;/整合碎片while(1)int change = 0;p = p_free_area_list;if(p = NULL)break;while(p->next != NULL)if(p->start_address + p->size) = (
7、p->next->start_address)p->size = p->next->size + p->size;change = 1; if(p->next->next = NULL)free(p->next);p->next = NULL;elsep->next = p->next->next;if(p->next = NULL)break;elsep = p->next ;if(change = 0)break;/整理线程结束后的驻留链表THREAD_RESIDENCE_MEMORY *q;q =
8、p_thread_residence_memory_list;if(q->start_address = start_address)p_thread_residence_memory_list = p_thread_residence_memory_list->next ;elsewhile(q->next != NULL)if(q->next->start_address = start_address)if(q->next = tail_thread_residence_memory_list)tail_thread_residence_memory_
9、list = q;q->next = q->next->next ;break;q = q->next;/记录结束时间,并将运行时间存入对应数组t2 = GetCycleCount();if(time00 > t2 - t1)time00 = t2 - t1;if(time01 < t2 - t1)time01 = t2 - t1; LeaveCriticalSection(&CS_FREEAREA_LIST);/3.最佳适应分配算法的内存释放函数void BF_release_memory(int start_address,int size)En
10、terCriticalSection(&CS_FREEAREA_LIST);_int64 t1, t2;/记录该算法起止时间t1 = GetCycleCount();/记录起始时间FREEAREA *temp,*p,*pp;/将空闲区按start_address由小到大排序,以便整合相邻空闲区while(1)int change = 0;p = p_free_area_list;if(p->next != NULL)if(p->start_address > p->next->start_address)pp = p->next;p->next
11、 = pp->next;pp->next = p;p_free_area_list = pp;change = 1;if(p->next != NULL)while(p->next->next != NULL)if(p->next->start_address > p->next->next->start_address )pp = p->next->next;p->next->next = pp->next;pp->next = p->next;p->next = pp;chan
12、ge = 1;p = p->next ;if(change = 0)break;/插入空闲区temp = new FREEAREA;p = new FREEAREA;temp->start_address = start_address;temp->size = size;temp->next = NULL;p->next = p_free_area_list;while(p->next != NULL)if(p->next->start_address > temp->start_address)temp->next = p-
13、>next ;p->next = temp;break;elsep = p->next ;if(p->next = NULL)p->next = temp;else if(temp->next = p_free_area_list)p_free_area_list = temp;/整合碎片while(1)int change = 0;p = p_free_area_list;if(p = NULL)break;while(p->next != NULL)if(p->start_address + p->size) = (p->next
14、->start_address)p->size = p->next->size + p->size;change = 1; if(p->next->next = NULL)free(p->next);p->next = NULL;elsep->next = p->next->next;if(p->next = NULL)break;elsep = p->next ;if(change = 0)break;/将空闲区按SIZE由小到大排序,以便符合BF算法while(1)int change = 0;p = p_
15、free_area_list;if(p->size > p->next->size)pp = p->next;p->next = pp->next;pp->next = p;p_free_area_list = pp;change = 1;while(p->next->next != NULL)if(p->next->size > p->next->next->size )pp = p->next->next;p->next->next = pp->next;pp-&g
16、t;next = p->next;p->next = pp;change = 1;p = p->next ;if(change = 0)break;/整理线程结束后的驻留链表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->next ;elsewhile(q->next != NULL)
17、if(q->next->start_address = start_address)if(q->next = tail_thread_residence_memory_list)tail_thread_residence_memory_list = q;q->next = q->next->next ;break;q = q->next;/记录结束时间,并将运行时间存入对应数组t2 = GetCycleCount();if(time10 > t2 - t1)time10 = t2 - t1;if(time11 < t2 - t1)time1
18、1 = t2 - t1; LeaveCriticalSection(&CS_FREEAREA_LIST);/4.最坏适应分配算法:内存释放函数void WF_release_memory(int start_address,int size)EnterCriticalSection(&CS_FREEAREA_LIST);_int64 t1, t2;/记录该算法起止时间t1 = GetCycleCount();/记录起始时间FREEAREA *temp,*p,*pp;/将空闲区按start_address由小到大排序,以便整合相邻空闲区while(1)int change = 0
19、;p = p_free_area_list;if(p->next != NULL)if(p->start_address > p->next->start_address)pp = p->next;p->next = pp->next;pp->next = p;p_free_area_list = pp;change = 1;if(p->next != NULL)while(p->next->next != NULL)if(p->next->start_address > p->next->n
20、ext->start_address )pp = p->next->next;p->next->next = pp->next;pp->next = p->next;p->next = pp;change = 1;p = p->next ;if(change = 0)break;/插入空闲区temp = new FREEAREA;temp->start_address = start_address;temp->size = size;temp->next = NULL;p = new FREEAREA;p->
21、next = p_free_area_list;while(p->next != NULL)if(p->next->start_address > temp->start_address)temp->next = p->next ;p->next = temp;break;elsep = p->next ;if(p->next = NULL)p->next = temp;else if(temp->next = p_free_area_list)p_free_area_list = temp;/整合碎片while(1)in
22、t change = 0;p = p_free_area_list;if(p = NULL)break;while(p->next != NULL)if(p->start_address + p->size) = (p->next->start_address)p->size = p->next->size + p->size;change = 1; if(p->next->next = NULL)free(p->next);p->next = NULL;elsep->next = p->next->
23、;next;if(p->next = NULL)break;elsep = p->next ;if(change = 0)break;/将空闲区按SIZE由大到小排序,以便符合WF算法while(1)int change = 0;p = p_free_area_list;if(p->size < p->next->size)pp = p->next;p->next = pp->next;pp->next = p;p_free_area_list = pp;change = 1;while(p->next->next !=
24、NULL)if(p->next->size < p->next->next->size )pp = p->next->next;p->next->next = pp->next;pp->next = p->next;p->next = pp;change = 1;p = p->next ;if(change = 0)break;/整理线程结束后的驻留链表THREAD_RESIDENCE_MEMORY *q;q = p_thread_residence_memory_list;if(q->start_
25、address = start_address)p_thread_residence_memory_list = p_thread_residence_memory_list->next ;elsewhile(q->next != NULL)if(q->next->start_address = start_address)if(q->next = tail_thread_residence_memory_list)tail_thread_residence_memory_list = q;q->next = q->next->next ;break;q = q->next;/记录结束时间,并将运行时间存入对应数组t2 = GetCycleCount();if(time20 > t2 - t1)time20 = t2 - t1;if(time21 < t2 - t1)time21 = t2 - t1; LeaveCriticalSection(&CS_FREEAREA_LIST);/5.二维数组,用于存放各种算法所需的最长时间和最短时间_int64 time32 = 99999999,0,99999999,0,99999999,0;/6.显示程序运行时间void display_time(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团建设项目管理公司高校毕业生招聘考试参考题库(浓缩500题)及答案详解【名师系列】
- 2026国网江苏省电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题及答案详解一套
- 2026国网黑龙江省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题附答案详解(夺分金卷)
- 2026国网山西电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题及完整答案详解
- 2025国网北京市电力校园招聘(提前批)笔试模拟试题浓缩500题及答案详解(全优)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试参考试题(浓缩500题)及参考答案详解一套
- 2026国网甘肃省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(黄金题型)
- 2026年鹰潭市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(基础题)
- 2026国网重庆市高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题带答案详解(完整版)
- 2026国家管网集团高校毕业生招聘考试参考题库(浓缩500题)附参考答案详解(a卷)
- 新世纪福音战士课件
- 超材料(metamaterials)教学讲解课件
- 《毕业设计指导》课件
- 秸秆综合利用课件
- 医院重点部位安全保卫制度
- Q∕SY 1835-2015 危险场所在用防爆电气装置检测技术规范
- Q∕SY 1287-2010 地质导向钻井系统
- 人才战略规划梯队建设人才盘点激活之道课件
- 家具厂首件检验记录表
- 钩端螺旋体病疫情应急处置技术方案
- 用材林主要树种主伐年龄表
评论
0/150
提交评论