资源描述:
《最先适应算法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include#include#include#include#include#include#include#defineMAX_THREAD3typedefstructfreearea{//表示空闲区域的数据结构structfreearea*next;//指向下一个结点的指针intstart_address;//空闲区起始地址intsize;//空闲区大小}FREEAREA;typedefstruct
2、require_memory{//记录线程申请内存的数据结构structrequire_memory*next;//指向下一个结点的指针charthread_name[10];//线程名intsize;//申请内存大小(以KB为单位)intduration;//在内存的驻留时间(以秒为单位)}REQUIRE_MEMORY;typedefstructthread_residence_memory{//描述线程驻留区的数据结构structthread_residence_memory*next;//指向下一个结点的指针charthre
3、ad_name[10];//线程名intstart_address;//驻留区起始地址intsize;//驻留区大小}THREAD_RESIDENCE_MEMORY;FREEAREAinit_free_area_table[5]={{NULL,10,10},{NULL,40,30},{NULL,80,5},{NULL,145,15},{NULL,180,20}};//测试数据:初始空闲区表REQUIRE_MEMORYinit_thread_require_memory_table[3]={{NULL,"thread_1",20,4
4、},{NULL,"thread_2",10,5},{NULL,"thread_3",5,6}};//测试数据:初始内存申请表THREAD_RESIDENCE_MEMORYinit_thread_residence_memory_table[5]={{NULL,"a",0,10},{NULL,"b",20,20},{NULL,"c",70,10},{NULL,"d",85,60},{NULL,"e",160,20}};//测试数据:初始线程驻留区表FREEAREA*p_free_area_list=NULL;//空闲区链首REQUI
5、RE_MEMORY*p_thread_require_memory_queue=NULL;//内存申请队列队首THREAD_RESIDENCE_MEMORY*p_thread_residence_memory_list=NULL;//线程驻留链首THREAD_RESIDENCE_MEMORY*tail_thread_residence_memory_list=NULL;//线程驻留区链尾CRITICAL_SECTIONCS_THREAD_MEMORY_LIST;//保护线程驻留区链表的临界区CRITICAL_SECTIONCS_S
6、CREEN;//保护屏幕的临界区CRITICAL_SECTIONCS_FREEAREA_LIST;//保护空闲区链表的临界区HANDLEh_thread[MAX_THREAD];//线程句柄数组voidprint_space(intnum);//输出若干个空格voiddisplay_thread_residence_memory_list();//显示线程驻留区表voiddisplay_freearea_list();//最先适应分配法的函数FREEAREA*FF_initialize_freearea_list(FREEAREA
7、*init_table,intnum);//初始化空闲区链表voidFF_delete_freearea_list();//删除空闲区链表REQUIRE_MEMORY*FF_initialize_require_memory_list(REQUIRE_MEMORY*init_table,intnum);//初始化内存申请链表voidFF_delete_require_memory_list();//删除内存申请链表THREAD_RESIDENCE_MEMORY*FF_initialize_thread_residence_memo
8、ry_list(THREAD_RESIDENCE_MEMORY*init_table,intnum);//初始化线程驻留区链表voidFF_delete_thread_residence_memory_list();//删除线程驻留区链表voidF