1、 操作系统课程报告 题 目 : 存储器管理系统设计存储器管理系统设计 学 院 名 称: 电子与信息工程学院 专 业: 计算机科学与技术 一.存储器管理系统设计存储器管理系统设计 二.研究背景和意义 信息存储技术作为信息技术的核心之一,一直伴随着、同时推动着 IT 业各方面技术的协同发 展,是当今 IT 领域中少数发展最为迅速的热点之一。 纸的发明记载了人类的历史和文明,现代 信息存储技术则大大超越了纸张记录的含义。21 世纪是数字化和多媒体化的信息时代,现代 信息社会和经济的发展,所产生的信息量每年以指数方式上升,出现了信息爆炸的态势。 据UC Berkley 2001年公布的数据显示,未来
2、3年内所产生的数据将超过过去 4万年中产生数据的总 和,而且 93%的新生成的信息为数字形式 二. 研究内容 存储器管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高 存储器的利用率以及能从逻辑上扩充内存。 存储器管理的主要对象是内存, 本设计主要针对进程读入内存中的过程模拟存储器管理 系统。涉及到程序的装入、内存空间的分配方式以及进程的换出与换入和页面置换算法(本 设计的页面置换算法为先进先出 FIFO 算法) 。 三.关键技术 1、数据结构 const int pagesize=1024; const int blocknum=3; int blockblocknum
3、; int pgblocknum; 2、算法分析 3、算法实现 #include const int pagesize=1024; const int blocknum=4; int blockblocknum; int pgblocknum; class page int pno; int bno; int status; static int n; public: page() pno=n+; bno=-1; status=0; int getstatus() return status; int getbno() return bno; int getpno() return pno;
4、void print() coutprocess_size; pagenum=process_size/pagesize+add(process_size,pagesize); coutset; switch(set) case 1: coutaddress; if(address0) cout“您所输入的是负数,不符合要求。“process_size) cout“您输入的数据太大,不符合要求。“endl; break; else if(addresspagesize) pageNO=0; /判定指令地址页面号 else pageNO=address/pagesize+add(address,
5、pagesize)-1; /因为数组从 0 开始计数,故减 1 if(ppageNO.getstatus() /判断是否在主存 cout“此模块已在主存中.“endl; ppageNO.print(); else cout“此模块在辅存中,调入主存.“=0 cout“装入页框表,查询并放入空闲物理块:“fnoendl; pgfno=pageNO; ppageNO.print(); /物理块已满,执行淘汰操作 else cout“ 页 框 已 满 , 淘 汰 物 理 块 :“next“ 中 的 原 有 页 面 “pgnextendl; for(i=0;ipagenum;i+) if(pi.getstatus() ppageNO.load(next); pgnext=pageNO; ppageNO.print(); inc(next); break; case 2: for(i=0;ipagenum;i+) pi.print(); break; case 3: for(i=0;i4;i+) couti“:“; if(blocki) cout“ 空闲“endl; else cout“ 占用 “; int a=pgi; cout“页号:“a“ 地址范围:“pagesize*a+1“pagesize*(a+1)endl; break; case 0: delete p; /释放