




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可变分区存储管理1目的和要求通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。2实验内容编写程序模拟实现内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时要与相邻空闲区的合并。初始状态信息:假定系统的内存共640K,初始状态为操作系统本身占用64K。将要申请内存的作业信息(存储在document/job.txt文件中),当前时间是0。输入:用户打开document/job.txt文件,输入作业信息。处理:模拟时间逐歩增加,每次加1.采用先来先服务算法调度作业,模拟作业运行,用最坏适应算法进行内存的分配。且进行内存的回收,注意与空闲分区的合并。直到所以作业运行完成程序结束。输出:把当前时间为0,为1,为2.的内存分配状况和作业信息写入文件document/information.txt。3实验环境Windows操作系统、VC+6.0C语言4设计思想4.1 结点定义 /空闲区结点描述typedef struct FreeNodeint length; / 分区长度 int address; / 分区起始地址FreeNode,*PFreeNode;/空闲区自由链表的描述typedef struct FreeLink FreeNode freeNode;struct FreeLink * next;FreeLink,*PFreeLink;/内存占用区链表描述typedef struct BusyNodechar name20;/标明此块内存被哪个进程所占用int length; / 分区长度 int address; / 分区起始地址BusyNode,*PBusyNode;/内存占用区忙碌链表的描述typedef struct BusyLink BusyNode busyNode;struct BusyLink * next;BusyLink,*PBusyLink;/作业控制块的结点描述typedef struct JCBNodechar name20; /作业名称int length; /作业申请的内存大小int start_time; /作业申请内存的时间,即到达后备作业队列的时间 int use_time; /作业占用内存的时间,随着该作业的运行逐渐减小, int state; /作业内存分配描述: /0表示未申请内存,此时作业在后备队列 /1表示申请内存成功,作业进入就绪队列 /2表示申请内存失败,此时作业插入到后备队列队尾 /3表示该作业占用cpu,正在运行 /4表示作业运行完成,释放占用的内存JCBNode,*PJCBNode;/作业队列的描述,用带头结点的循环链表实现typedef struct JCBQueueJCBNode jcbNode;struct JCBQueue* next;JCBQueue,*PJCBQueue;4.2 全局变量定义 /全局变量#define ALL_MEMORY 640 /系统总内存#define OS_MEMORY 64 /操作系统占用的内存#define SIZE 2 /门限值PFreeLink freeLink; /空闲区自由链表PBusyLink busyLink; /内存占用区链表PJCBQueue jcbQueue; /外存中待分配内存的作业队列PJCBQueue readyQueue; /已分配内存的就绪队列PJCBQueue finishQueue; /已完成的作业队列PJCBNode currentJCB; /当前正在执行的进程(作业)int current_time; /当前时间4.3 算法流程图 1.程序总算法流程图如下:此流程图描述了作业从外存进入内存,再到进程完毕的过程。以及此过程中系统对内存的分配和回收。步骤:作业申请内存 - 作业进入内存 - 作业执行 - 作业完成,释放内存涉及到的算法:(1)最坏适应算法 (2)内存回收算法 (3)先来先服务算法注:作业进入内存时,此程序并没有模拟创建PCB,而是以JCB代替2.内存分配最坏适应算法流程图:3.内存回收算法流程图:4.先来先服务算法流程图:4.4 代码设计采用多文件结构:1. 其中document文件夹下存放输入作业信息的文本文档job.txt和输出信息information.txt2. BusyLink.c文件定义实现了关于忙碌链表busyLink的操作:/初始化忙碌链表void initBusyLink(PBusyLink* pBusyLink)/在指定的结点后面插入新的结点void insertBusyLink(PBusyLink prior,BusyNode busyNode)/在链表尾部插入结点void insertBusyLinkAtTail(PBusyLink head,BusyNode busyNode)/判断链表是否为空int BusyLinkIsEmpty(PBusyLink head)/根据作业名称删除结点PBusyNode deleteBusyLinkByName(PBusyLink head,char *str)3. FreeLink.c文件定义实现了关于自由链表freeLink的操作:/初始化自由链表void initFreeLink(PFreeLink* pFreeLink)/在指定的结点后面插入新的结点void insertFreeLink(PFreeLink prior,FreeNode freeNode)/在链表尾部插入结点void insertFreeLinkAtTail(PFreeLink head,FreeNode freeNode)/判断链表是否为空int FreeLinkIsEmpty(PFreeLink head)/删除头结点int deleteFreeLink(PFreeLink head)/删除指定结点int deleteFreeLinkByIndex(PFreeLink head,PFreeLink index)/按空闲区由大到小排序,选择排序法void sortFreeLink(PFreeLink head)4. JobQueue定义实现了关于作业队列的操作:/初始化void initJCBQueue(PJCBQueue* tail)/队尾插入结点void inseartJCBQueue(PJCBQueue* tail,JCBNode jcbNode)/判断队列是否为空int JCBQueueIsEmpty(PJCBQueue* tail)/队头删除结点PJCBNode deleteJCBQueue(PJCBQueue* tail)/取队头元素PJCBNode getFrontJCBQueue(PJCBQueue tail)/按申请内存的时间先后排序(选择排序)void sortJCBQueue(PJCBQueue tail)5. Memory.c实现了各个算法:void init(); / 设置系统初始状态 int freeMemo(JCBNode); /模拟内存回收 int requireMemo(JCBNode); /模拟内存分配void timePast(); /模拟系统时间 void write(); /把当前时间的内存信息,作业信息写入文件information.txt/主函数void main()/1.初始化系统init();/2.时间逐步加1 timePast();/3.提示信息printf(各个时间的内存及作业信息已存入document/information.txt文件中nn);5源程序 已上传至:/blog/10689686实例运行结果输入作业信息:运行结果:7总结1.通过此次实验,更进一步的了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版医疗器械零容忍廉洁供应链合作协议
- 河北省承德县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版基础设施建设借款合同模板
- 2025年地热能供暖水暖工程承包合同范本
- 海南省五指山市2025年上半年公开招聘村务工作者试题含答案分析
- 2025年度大豆产业链上下游合作协议
- 2025版汽车租赁押金合同范本资料正规范本
- 2025车库停车场消防设施维护合同
- 海南省澄迈县2025年上半年事业单位公开遴选试题含答案分析
- 2025年度吊车租赁设备操作风险控制合同范本
- 设计服务质量承诺及保证措施
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 成都旅游宣传课件下载
- 刺骨术原理-西安讲课
- 运行维护电工技术技能考试卷
- 数学学科项目化设计
- T-CACM 1217-2019 中医肿瘤科临床诊疗指南 胰腺癌
- 员工心理健康培训课件
- 离婚协议书无子女无财产(电子版)
- 设备检修及维护保养培训课件
- 中国莫干山象月湖国际休闲度假谷一期项目环境影响报告
评论
0/150
提交评论