《OS课程设计模拟内存分配算法MFC实现》.docx
《《OS课程设计模拟内存分配算法MFC实现》.docx》由会员分享,可在线阅读,更多相关《《OS课程设计模拟内存分配算法MFC实现》.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计报告设计题目:内存的连续分配算法班级 : 学号:姓名:指导老师:设计时间:摘要1、 主要算法包括:固定分区分配、动态分区分配、伙伴算法、可重定位分区分配。2、内容要求:1定义与算法相关的数据结构,如PCB,空闲分区表;2至少实现两种以上分配算法,且用户可以选择在某次执行过程中使用何种算法;3在使用动态分区分配或可重定位分区分配算法时必须实现紧凑和对换功能;4动态分区分配和可重定位分区分配必选一个实现。本系统模拟了操作系统内存分配算法的实现,实现了固定分区分配和动态分区分配,以及可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。
2、内存分区表采用单链表来模拟实现。关键词:固定分区分配、动态分区分配、可重定位分区分配。目录1. 概述 .42. 课程设计任务及要求 2.1 设计任务 .4 2.2 设计要求 .43. 算法及数据结构算法的总体思想流程5 3.2 PCB模块 功能运算.5 数据结构存储结构.5 3.2.3 算法实现.5 3.3 进程队列模块 功能6 数据结构6 3.3.3算法64. 程序设计与实现 4.1 程序流程图.7 4.2 程序说明代码 4.3 实验结果.95. 结论.106. 参考文献。.107. 收获、体会和建议。.10一:概述本系统模拟了操作系统内存分配算法的实现,实现了固定分区分配和动态分区分配,以
3、及可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表采用单链表来模拟实现。固定分区实现就是将单链表的每个节点的大小设为固定大小,系统默认如果按固定分区分配的话,只能分成20个相等大小的分区,因此系统只能最多运行20个进程。动态分区的实现是根据进程所申请的内存大小来决定动态的有系统进行分配内存空间大小,因此分区表里的空闲分区个数是不定的,根据进程数和进程大小决定的。可重定位分区算法比动态分区算法增加了紧凑和进程对换的功能。二:课程设计任务及要求设计任务:使用C+ MFC实现模拟操作系统内存分配算法的实现,定义结构体数据结构表示
4、进程,定义单链表表示内存分区表。设计要求:定义与算法相关的数据结构,如PCB,空闲分区表;至少实现两种以上分配算法,且用户可以选择在某次执行过程中使用何种算法;在使用动态分区分配或可重定位分区分配算法时必须实现紧凑和对换功能;动态分区分配和可重定位分区分配必选一个实现。三:算法及数据结构#define free 0/表示进程状态空闲#define busy 1/表示进程状态忙typedef int Status;/表示进程状态struct PCB/表示进程PCB结构体CString name;/进程nameStatus status;/进程状态busy or freeint lStartAdd
5、res;/进程起始地址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 );/为进程分配内
6、存(执行固定分区分配算法)bool AllocProDynamic(CString ,int );/为进程分配内存动态分区分配boolFreeMemory(CString );/释放进程内存bool AllMerge(int );/内存紧凑分区算法bool Swaping(int ,PCB&);/进程对换算法Node *GetFirst();/返回头结点void Clear();/链表节点去除private:Node *first;#include #include Queue:Queue()/默认头结点数据first = new Node;first-=0;first-data.name=;
7、first-=0;first-=busy;first-next=NULL;int Queue:GetLength()int n=0;Node *p=first;while(p-next)p=p-next;n+;return n;Node *Queue:GetFirst()return first;int Queue:GetAllFree()int n=0;Node *p=first;while(p-next)p=p-next;if (p-=free)n+=p-;return n;/void Queue:Show()/Node *p=first;/while(p-next)/p=p-next;/
8、cout分区号:data.nameendl;/cout分区状态:=busy ?busy:free)endl;/cout分区起始地址:endl;/cout分区大小:endl;/coutdata=tmp;first-next=s;s-next=NULL;void Queue:Clear()Node *q;Node *p=first-next;while(p-next)q=p;p=p-next;delete q;void Queue:FixedPartitonAlloc()PCB tmp;int AllSize=first-next-;int perSize=AllSize/20;first-nex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OS课程设计模拟内存分配算法MFC实现 OS 课程设计 模拟 内存 分配 算法 MFC 实现
限制150内