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

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

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《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 数据结构(存储结构)……………………….5 3.2.3 算法(实现)……………………….5 3.3 进程队列模块 3.3.1功能………………………63.3.2 数据结构………………………6 3.3.3算法………………………64. 程序设计与实现 4.1 程序流程图……………………..7 4.2 程序说明(代码) 4.3 实验结果……………………..95. 结论……………………..106. 参考文献。……………………..107. 收获、体会和建议。……………………..10一:概述本系统模拟了操作系统内存分配算法的实现,实现了固定分区分配和动态分区分配,以及可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表采用单链表来模拟实现。固定分区实现就是将单链表的每个节点的大小设为固定大小,系统默认如果按固定分区分配的话,只能分成20个相等大小的分区,因此系统只能最多运行20个进程。动态分区的实现是根据进程所申请的内存大小来决定动态的有系统进行分配内存空间大小,因此分区表里的空闲分区个数是不定的,根据进程数和进程大小决定的。可重定位分区算法比动态分区算法增加了紧凑和进程对换的功能。二:课程设计任务及要求设计任务:使用C++ MFC实现模拟操作系统内存分配算法的实现,定义结构体数据结构表示进程,定义单链表表示内存分区表。设计要求:定义与算法相关的数据结构,如PCB,空闲分区表;至少实现两种以上分配算法,且用户可以选择在某次执行过程中使用何种算法;在使用动态分区分配或可重定位分区分配算法时必须实现紧凑和对换功能;动态分区分配和可重定位分区分配必选一个实现。三:算法及数据结构#define free 0//表示进程状态空闲#define busy 1//表示进程状态忙typedef int Status;//表示进程状态struct PCB//表示进程PCB结构体{CString name;//进程nameStatus status;//进程状态busy or freeint lStartAddres;//进程起始地址int Size;//进程大小};struct Node//表示组成链表的结点结构体{PCB data;Node *next;};class Queue//表示分区表的单链表类{public:Queue();~Queue(){}//void Show();//内存区分配情况显示int GetLength();int GetAllFree();//获得所有空闲分区总大小void InitialMemory(int );//初始化内存区域大小void FixedPartitonAlloc();//固定分区分配初始化空闲内存链表bool AllocProFixed(CString ,int );//为进程分配内存(执行固定分区分配算法)bool AllocProDynamic(CString ,int );//为进程分配内存(动态分区分配)boolFreeMemory(CString );//释放进程内存bool AllMerge(int );//内存紧凑分区算法bool Swaping(int ,PCB);//进程对换算法Node *GetFirst();//返回头结点void Clear();//链表节点清除private:Node *first;};#include StdAfx.h#include Queue.hQueue::Queue(){//默认头结点数据first = new Nod

您可能关注的文档

文档评论(0)

almm118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档