1 / 11
文档名称:

课程设计-最先适应算法.doc

格式:doc   大小:81KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

课程设计-最先适应算法.doc

上传人:2028423509 2022/2/12 文件大小:81 KB

下载得到文件列表

课程设计-最先适应算法.doc

相关文档

文档介绍

文档介绍:-
. z.
课程设计:最先适应算法
设计1 动态异长分区存分配与去配算法的设计-最先适应算法
设计目的
理解存储管理的功能,掌握动态异长分区存管理中的最先1、图1-2、图1-3中的一行,不同之处是为了构成链表在三个构造体中都有前向指针。数组init_free_area_table对应于图1-6,数组init_thread_require_memory_table对应于图1-5,数组init_thread_residence_memory_table对应于图1-7,为了实现动态分配与释放,用链表重新组织空闲区域表、线程驻留区表和存申请表,全局变量p_free_area_list是空闲区链首,p_thread_require_memory_queue是存申请队列的队首,p_thread_residence_memory_list是线程驻留区链首,tail_thread_residence_memory_list是线程驻留区链尾,由于线程驻留区链表被存分配函数和存释放函数共享,故用临界区变量CS_THREAD_MEMORY_LIST来保护,同理,屏幕是所有线程共享的,所以用临界区变量CS_SCREEN来保护,空闲区链表被存分配函数和存释放函数共享,故用临界区变量CS_FREEAREA_LIST来保护。h_thread是线程句柄数组,用来存放各个线程的句柄。
程序共包含12个函数,按照作用可以将它们分成五组。
第一组包括函数print_space()和函数display_thread_residence_memory(),前者用来显示假设干个空格,后者用来显示线程驻留区表;
第二组共十个函数,用来实现最先适应分配法,它们的名称及功能如图1-9。
函数名称
函数功能
FF_initialize_freearea_list
初始化空闲区链表:按地址从低到高排序
FF_delete_freearea_list
删除空闲区链表
FF_initialize_require_memory_list
初始化存申请链表
FF_delete_require_memory_list
删除存申请链表
FF_initialize_thread_residence_memory_list
初始化线程驻留区链表
FF_delete_thread_residence_memory_list
删除线程驻留区链表
-
. z.
FF_thread
线程函数:申请存;驻留存;释放存
FF_require_memory
存申请函数
FF_release_memory
存释放函数
FF()
初始化函数:创立线程并等待它们完毕
图1-9 最先适应分配法的函数及其功能
源代码:

#include <>
#include <>
#include <>
#include <>
#include <>
#include <>
#define MAX_THREAD 3
typedef struct freearea{ //表示空闲区域的数据构造
struct freearea *next; //指向下一个结点的指针
int start_address; //空闲区起始地址
int size; //空闲区大小
}FREEAREA;
typedef struct require_memory{ //记录线程申请存的数据构造
struct require_memory *next; //指向下一个结点的指针
char thread_name[10]; //线程名
int size; //申请存大小〔以KB为单位〕
int duration; //在存的驻留时间〔以秒为单位〕
}REQUIRE_MEMORY;
typedef struct thread_residence_memory{ //描述线程驻留区的数据构造
struct thread_residence_me