




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储器管理设计 _ 1 安徽理工大学计算机系软件教研室 管建军,操作系统课程设计任务书,存储器管理设计,存储器管理设计 _ 2 安徽理工大学计算机系软件教研室 管建军,1 设计目的,理解内存页面调度的机理。掌握几种理论页面置换算法的实现方法。了解HASH表数据结构的使用。通过课程设计比较各种调度算法的优劣。页面置换算法是虚拟存储管理实现的关键,通过本次课程设计理解内存页面调度的机制,在模拟实现FIFO、LRU、NRU和OPT几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。,存储器管理设计 _ 3 安徽理工大学计算机系软件教研室 管建军,2 准备知识,基本概念C(或C+)、指针、结构体(类)HASH(哈希)表查找方式操作系统相关内存交换知识用到的Linux函数int getpid()获得当前进程的idvoid srand(int a)以a为种子产生随机数int rand()根据前面的种子,返回一个随机数,存储器管理设计 _ 4 安徽理工大学计算机系软件教研室 管建军,3 设计内容,设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。先进先出的算法(FIFO)最近最少使用算法(LRU)最佳淘汰算法(OPT)最少访问页面算法(LRU)最近最不经常使用算法(NUR)命中率(1页面失效次数)/页地址流长度设计程序时先用Srand()和rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。,存储器管理设计 _ 5 安徽理工大学计算机系软件教研室 管建军,4 设计指导,拥有页面交换机制的操作系统总是把当前进程急需处理的部分页面换入到内存中,而把更多暂时不需要处理的页面放置到外存中。由于进程需要处理的页面顺序不同,因此必须在内存与外存之间进行页面交换,交换算法也就应运而生。本设计并没有进入系统空间对实际进程进行控制,而是在用户空间用线性表的连续存储方式对进程页面交换进行模拟。,存储器管理设计 _ 6 安徽理工大学计算机系软件教研室 管建军,1 FIFO页面置换算法,存储器管理设计 _ 7 安徽理工大学计算机系软件教研室 管建军,2 LRU页面置换算法,存储器管理设计 _ 8 安徽理工大学计算机系软件教研室 管建军,3 NUR页面置换算法,存储器管理设计 _ 9 安徽理工大学计算机系软件教研室 管建军,4 OPT页面置换算法,存储器管理设计 _ 10 安徽理工大学计算机系软件教研室 管建军,5 参考源程序代码,#ifndef _PAGE_H#define _PAGE_Hclass cpage public:int m_nPageNumber,m_nPageFaceNumber,m_nCounter,m_nTime;#endif,存储器管理设计 _ 11 安徽理工大学计算机系软件教研室 管建军,#ifndef _PAGECONTROL_H#define _PAGECONTROL_Hclass CpageControl public:int m_nPageNumber,m_nPageFaceNumber;class CPageControl * m_pNext;#endif,存储器管理设计 _ 12 安徽理工大学计算机系软件教研室 管建军,#ifndef _MEMORY_H#define _MEMORY_Hclass CMemory public:CMemory();void initialize(const int nTotal_pf);void FIFO(const int nTotal_pf);void LRU(const int nTotal_pf);void NUR(const int nTotal_pf);void OPT(const int nTotal_pf);,存储器管理设计 _ 13 安徽理工大学计算机系软件教研室 管建军,private:vector _vDiscPages;vector _vMemoryPages;CPageControl *_pFreepf_head, *_pBusypf_head, *_pBusypf_tail;vector _vMain,_vPage,_vOffset;int _nDiseffect;,存储器管理设计 _ 14 安徽理工大学计算机系软件教研室 管建军,CMemory:CMemory(): _vDiscPages(TOTAL_VP), _vMemoryPages(TOTAL_VP), _vMain(TOTAL_INSTRUCTION), _vPage(TOTAL_INSTRUCTION), _vOffset(TOTAL_INSTRUCTION) int S,i,nRand;srand(getpid()*10);,存储器管理设计 _ 15 安徽理工大学计算机系软件教研室 管建军,nRand=rand()%32767;S=(float)319*nRand/32767+1;for(i=0;iTOTAL_INSTRUCTION;i+=4) _vMaini=S;_vMaini+1=_vMaini+1;nRand=rand()%32767;_vMaini+2=(float)_vMaini *nRand/32767;_vMaini+3=_vMaini+2+1;nRand=rand()%32767;,存储器管理设计 _ 16 安徽理工大学计算机系软件教研室 管建军,S=(float)nRand * (318-_vMaini+2)/32767+_vMaini+2+2;for(i=0;iTOTAL_INSTRUCTION;i+) _vPagei=_vMaini/10;_vOffseti=_vMaini%10;_vPagei%=32;,存储器管理设计 _ 17 安徽理工大学计算机系软件教研室 管建军,void CMemory:initialize(const int nTotal_pf)int ix;_nDiseffect=0;for(ix=0;ix_vDiscPages.size();ix+) _vDiscPagesix.m_nPageNumber=ix;_vDiscPagesix.m_nPageFaceNumber=INVALID;_vDiscPagesix.m_nCounter=0;_vDiscPagesix.m_nTime=-1;for(ix=1;ixm_pNext; _vDiscPages_pBusypf_head-m_nPageNumber.m_nPageFaceNumber=INVALID; _pFreepf_head=_pBusypf_head; _pFreepf_head-m_pNext=NULL; _pBusypf_head=p;,存储器管理设计 _ 20 安徽理工大学计算机系软件教研室 管建军,p=_pFreepf_head-m_pNext;_pFreepf_head-m_pNext=NULL;_pFreepf_head-m_nPageNumber=_vPagei;_vDiscPages_vPagei.m_nPageFaceNumber =_pFreepf_head- m_nPageFaceNumber;if(_pBusypf_tail=NULL)_pBusypf_head=_pBusypf_tail=_pFreepf_head;else _pBusypf_tail-m_pNext=_pFreepf_head; _pBusypf_tail=_pFreepf_head;,存储器管理设计 _ 21 安徽理工大学计算机系软件教研室 管建军,_pFreepf_head=p; coutFIFO: 1-(float)_nDiseffect/320;void CMemory:LRU(const int nTotal_pf) int i,j,nMin,minj,nPresentTime(0); initialize(nTotal_pf);,存储器管理设计 _ 22 安徽理工大学计算机系软件教研室 管建军,for(i=0;i_vDiscPagesj.m_nTime ,存储器管理设计 _ 23 安徽理工大学计算机系软件教研室 管建军,_pFreepf_head= ,存储器管理设计 _ 24 安徽理工大学计算机系软件教研室 管建军,else_vDiscPages_vPagei.m_nTime=nPresentTime;nPresentTime+; coutLRU: 1-(float)_nDiseffect/320;void CMemory:NUR(const int nTotal_pf) int i,j,nDiscPage,nOld_DiscPage; bool bCont_flag; initialize(nTotal_pf); nDiscPage=0;,存储器管理设计 _ 25 安徽理工大学计算机系软件教研室 管建军,for(i=0;iTOTAL_INSTRUCTION;i+) if(_vDiscPages_vPagei.m_nPageFaceNumber =INVALID) _nDiseffect+; if(_pFreepf_head=NULL) bCont_flag=true; nOld_DiscPage=nDiscPage; while(bCont_flag)if(_vDiscPagesnDiscPage.m_nCounter=0,存储器管理设计 _ 26 安徽理工大学计算机系软件教研室 管建军,else nDiscPage+; if(nDiscPage=TOTAL_VP) nDiscPage=0; if(nDiscPage=nOld_DiscPage) for(j=0;jm_pNext=NULL; _vDiscPages_vPagei.m_nPageFaceNumber=_pFreepf_head-m_nPageFaceNumber; _pFreepf_head=_pFreepf_head-m_pNext;else _vDiscPages_vPagei.m_nCounter=1; if(i%CLEAR_PERIOD=0) for(j=0;jTOTAL_VP;j+) _vDiscPagesj.m_nCounter=0; ,存储器管理设计 _ 28 安徽理工大学计算机系软件教研室 管建军,coutNUR:1-(float)_nDiseffect/320;void CMemory:OPT(const int nTotal_pf) int i,j,max,maxpage,nDistance,vDistanceTOTAL_VP; initialize(nTotal_pf); for(i=0;iTOTAL_INSTRUCTION;i+) if(_vDiscPages_vPagei.m_nPageFaceNumber=INVALID) _nDiseffect+; if(_pFreepf_head=NULL) for(j=0;jTOTAL_VP;j+) if(_vDiscPagesj.m_nPageFaceNumber!=INVALID) vDistancej=32767;else vDistancej=0;,存储器管理设计 _ 29 安徽理工大学计算机系软件教研室 管建军,nDistance=1; for(j=i+1;jTOTAL_INSTRUCTION;j+) if(_vDiscPages_vPagej.m_nPageFaceNumber!=INVALID),存储器管理设计 _ 30 安徽理工大学计算机系软件教研室 管建军,_pFreepf_head=#endif,存储器管理设计 _ 31 安徽理工大学计算机系软件教研室 管建军,#include #include #include #include #include #include using namespace std;#define INVALID -1const int TOTAL_INSTRUCTION(320);const int TOTAL_VP(32);const int CLEAR_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (正式版)DB15∕T 3351-2024 《饲用燕麦草饲喂评价》
- 电力职称考试题及答案
- 电工考试题及模拟答案
- 信息安全管理制度与技术规范模板
- (正式版)DB15∕T 3255-2023 《胡萝卜大棚繁种蜜蜂授粉技术规程》
- (正式版)DB15∕T 3234-2023 《苜蓿混作饲用燕麦干草调制技术规程》
- 三基三严题库及答案护理简答题
- 大雪封山考试题及答案
- 招聘与人才筛选工作表标准化人才评估流程优化版
- 企业营销推广计划标准模板(包含预算编制)
- 2024-2025学年统编版(2024)初中历史七年级下册(全册)教学设计(附目录P162)
- 国网安规培训课件
- 干部教育培训工作条例解读
- 机械设计方案评审
- 《婴幼儿睡眠习惯培养》课件
- 公司有关进一步改组股份合作制实施方案
- 房建工程监理规划范本
- 高速通信管道迁改施工方案
- USP 62-非无菌产品的微生物检验特定微生物的试验CN
- 2025-2030年地域风味酱板鸭行业跨境出海战略研究报告
- 2025年一季度全院难免压疮风险评估上报总结分析(二篇)
评论
0/150
提交评论