- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存管理模型的设计与实现
操作系统课程实验报告
学生姓名:
班 学 号:
指导教师: 袁国斌
中国地质大学信息工程学院
2012年 12月 15日
实习题目:内存管理模型的设计与实现
【需求规格说明】
对于给定的一个存储空间自己设计数据结构进行管理,可以使用单个链表,也可以使用多个链表,自己负责存储空间的所有管理组织,要求采用分页方式(指定单元大小为页,如4K,2K,进程申请以页为单位)来组织基本内容;
当进程对内存进行空间申请操作时,模型采用一定的策略(如:首先利用可用的内存进行分配,如果空间不够时,进行内存紧缩或其他方案进行处理)对进程给予指定的内存分配;
从系统开始启动到多个进程参与申请和运行时,进程最少要有3个以上,每个执行申请的时候都要能够对系统当前的内存情况进行查看的接口;
对内存的申请进行内存分配,对使用过的空间进行回收,对给定的某种页面调度进行合理的页面分配。
利用不同的颜色代表不同的进程对内存的占用情况,动态更新这些信息。
【算法设计】
(1):(2):
(3):
//给进程pro根据选择情况分配内存
//最先适应法 //最佳适应法 //最坏适应法
【调试报告】
【用户手册】
用户按照显示屏要求输入程序所需要的即可.
【附录】
#include iostream.h
#include stdio.h
#include process.h
templateclass T
class ChainNode
{
friend ChainT;
public:
char pro; //内存块存放的程序名o 代表操作系统‘’代表空闲区
T size; //内存块的大小
T begin; //内存块起始地址
ChainNodeT *link; //下一个内存块
};
templateclass T
class Chain
{
public:
Chain()
{first=NULL;}
~Chain();
int ff(int manage,char pro,int size);
void assign(ChainNodeT *q,char pro,int size); //动态分配内存
int bf(int manage,char pro,int size); //最佳适应法
int wf(int manage,char pro,int size); //最坏适应法
int delpro(int manage,char pro); //撤销进程,可能要进行内存块的合并
void del_pro(int manage);
void init(int manage); //内存的初始化
void assign_pro(int manage) ; //
public:
ChainNodeT *first;
ChainNodeT *p;
};
memory *base; //代表内存,一个头指针,内存总大小为256k
//int snum[]={20,50,30,45,54,52};
//void assign(memory *q,char pro,int size);
void init(int manage) //内存的初始化
{
memory *p,*q;
if(base!=NULL) //这一块是释放链表
{
p=base;
while(p)
{
q=p-next;
delete p;
p=q;
}
}
base=new memory; //操作系统,大小5k,起始地址是0k
base-begin=0;
base-pro=o;
base-size=5;
if(manage==0) //静态内存,初始化7个内存块,第一个内存块是操作系统
{
p=base;
q=new memory; //空闲块1,大小20,起始地址5k
q-begin=5;
q-pro
文档评论(0)