1 / 3
文档名称:

用C语言模拟内存分区分配管理的最佳适应算法.docx

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

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

分享

预览

用C语言模拟内存分区分配管理的最佳适应算法.docx

上传人:niupai11 2022/5/6 文件大小:12 KB

下载得到文件列表

用C语言模拟内存分区分配管理的最佳适应算法.docx

文档介绍

文档介绍:: .
编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找分配描述:
//0表示未申请内存,此时作业在后备队列//1表示申请内存成功,作业进入就绪队列//2表示申请内存失败,此时作业插入到后备队列队尾//3表示该作业占用cpu,正在运行//4表示作业运行完成,释放占用的内存}JCBNode,*PJCBNode;〃作业队列的描述,用带头结点的循环链表实现typedefstructJCBQueue{
JCBNodejcbNode;structJCBQueue*next;}JCBQueue,*PJCBQueue;〃全局变量#defineALL_MEMORY640/係统总内存#defineOS_MEMORY64/操作系统占用的内存#defineSIZE2〃门限值PFreeLinkfreeLink;/空闲区自由链表PBusyLinkbusyLink;〃内存占用区链表PJCBQueuejcbQueue;〃夕卜存中待分配内存的作业队列PJCBQueuereadyQueue;〃已分配内存的就绪队列PJCBQueuefinishQueue;〃已完成的作业队列PJCBNodecurrentJCB;〃当前正在执行的进程(作业)intcurrent_time;〃(已上传,在此没贴出)1•程序总算法流程图如下:
此流程图描述了作业从外存进入内存,再到进程完毕的过程。以及此过程中系统对内存的分配和回收。
步骤:作业申请内存---作业进入内存-4作业执行---作业完成,释放内存涉及到的算法:(1)最坏适应算法(2)内存回收算法(3)先来先服务算法注:作业进入内存时,此程序并没有模拟创建PCB,而是以JCB代替2•内存分配最坏适应算法流程图:
3•内存回收算法流程图:
4•先来先服务算法流程图:
代码设计采用多文件结构:
1. ・c文件定义实现了关于忙碌链表busyLink的操作:
〃初始化忙碌链表
voidinitBusyLink(PBusyLink*pBusyLink)
〃在指定的结点后面插入新的结点
voidinsertBusyLink(PBusyLinkpriorRusyNodebusyNode)
〃在链表尾部插入结点
voidinsertBusyLinkAtTail(PBusyLinkhead,BusyNodebusyNode)
〃判断链表是否为空
intBusyLinkIsEmpty(PBusyLinkhead)
〃根据作业名称删除结点
2. PBusyNodedeleteBusyLinkByName(PBusyLinkhead,char*str):
〃初始化自由链表
voidinitFreeLink(PFreeLink*pFreeLink)
〃在指定的结点后面插入新的结点
voidinsertFreeLink(P