OS课程的设计模拟内存分配算法MFC实现.docxVIP

OS课程的设计模拟内存分配算法MFC实现.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OS课程的设计模拟内存分配算法MFC实现

课程设计报告设计题目:内存的连续分配算法班级 : 学号:姓名:指导老师:设计时间:摘要主要算法包括:固定分区分配、动态分区分配、伙伴算法、可重定位分区分配。2、内容要求:1)定义与算法相关的数据结构,如PCB,空闲分区表;2)至少实现两种以上分配算法,且用户可以选择在某次执行过程中使用何种算法;3)在使用动态分区分配或可重定位分区分配算法时必须实现紧凑和对换功能;4)动态分区分配和可重定位分区分配必选一个实现。本系统模拟了操作系统内存分配算法的实现,实现了固定分区分配和动态分区分配,以及可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表采用单链表来模拟实现。关键词:固定分区分配、动态分区分配、可重定位分区分配。目录1.概述……………………….42.课程设计任务及要求 2.1 设计任务………………………..4 2.2 设计要求………………………..43.算法及数据结构 3.1算法的总体思想(流程)………………………5 3.2 PCB模块3.2.1功能(运算)……………………….53.2.2数据结构(存储结构)……………………….53.2.3算法(实现)……………………….5 3.3 进程队列模块3.3.1功能………………………63.3.2数据结构………………………63.3.3算法………………………64.程序设计与实现 4.1 程序流程图……………………..7 4.2 程序说明(代码) 4.3实验结果……………………..95.结论……………………..106.参考文献。……………………..107.收获、体会和建议。……………………..10一:概述本系统模拟了操作系统内存分配算法的实现,实现了固定分区分配和动态分区分配,以及可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表采用单链表来模拟实现。固定分区实现就是将单链表的每个节点的大小设为固定大小,系统默认如果按固定分区分配的话,只能分成20个相等大小的分区,因此系统只能最多运行20个进程。动态分区的实现是根据进程所申请的内存大小来决定动态的有系统进行分配内存空间大小,因此分区表里的空闲分区个数是不定的,根据进程数和进程大小决定的。可重定位分区算法比动态分区算法增加了紧凑和进程对换的功能。二:课程设计任务及要求设计任务:使用C++ MFC实现模拟操作系统内存分配算法的实现,定义结构体数据结构表示进程,定义单链表表示内存分区表。设计要求:定义与算法相关的数据结构,如PCB,空闲分区表;至少实现两种以上分配算法,且用户可以选择在某次执行过程中使用何种算法;在使用动态分区分配或可重定位分区分配算法时必须实现紧凑和对换功能;动态分区分配和可重定位分区分配必选一个实现。三:算法及数据结构#definefree 0//表示进程状态空闲#definebusy 1//表示进程状态忙typedefintStatus;//表示进程状态structPCB//表示进程PCB结构体{CStringname;//进程nameStatusstatus;//进程状态busy or freeintlStartAddres;//进程起始地址intSize;//进程大小};structNode//表示组成链表的结点结构体{PCBdata;Node *next;};classQueue//表示分区表的单链表类{public:Queue();~Queue(){}//void Show();//内存区分配情况显示intGetLength();intGetAllFree();//获得所有空闲分区总大小voidInitialMemory(int );//初始化内存区域大小voidFixedPartitonAlloc();//固定分区分配初始化空闲内存链表boolAllocProFixed(CString ,int );//为进程分配内存(执行固定分区分配算法)boolAllocProDynamic(CString ,int );//为进程分配内存(动态分区分配)boolFreeMemory(CString );//释放进程内存boolAllMerge(int );//内存紧凑分区算法boolSwaping(int ,PCB);//进程对换算法Node *GetFirst();//返回头结点voidClear();//链表节点清除private:Node *first;};#include StdAfx.h#include Queue.hQueue::Queue(){//默认头结点数据first = new Node;first-data.lStart

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档