《存储器管理实验.ppt》由会员分享,可在线阅读,更多相关《存储器管理实验.ppt(29页珍藏版)》请在三一办公上搜索。
1、存储器管理实验 _ 1 成都信息工程学院 徐虹,第4章 存储器管理实验,4.1 实验目的4.2 准备知识4.3 实验内容4.4 实验指导,存储器管理实验 _ 2 成都信息工程学院 徐虹,4.4.1 FIFO页面置换算法,存储器管理实验 _ 3 成都信息工程学院 徐虹,4.4.2 LRU页面置换算法,存储器管理实验 _ 4 成都信息工程学院 徐虹,4.4.3 NUR页面置换算法,存储器管理实验 _ 5 成都信息工程学院 徐虹,4.4.4 OPT页面置换算法,存储器管理实验 _ 6 成都信息工程学院 徐虹,4.5 参考源程序代码,#ifndef _PAGE_H#define _PAGE_Hclas
2、s cpage public:int m_nPageNumber,m_nPageFaceNumber,m_nCounter,m_nTime;#endif,存储器管理实验 _ 7 成都信息工程学院 徐虹,#ifndef _PAGECONTROL_H#define _PAGECONTROL_Hclass CpageControl public:int m_nPageNumber,m_nPageFaceNumber;class CPageControl*m_pNext;#endif,存储器管理实验 _ 8 成都信息工程学院 徐虹,#ifndef _MEMORY_H#define _MEMORY_Hc
3、lass 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);,存储器管理实验 _ 9 成都信息工程学院 徐虹,private:vector _vDiscPages;vector _vMemoryPages;CPageControl*_pFreepf_head,*_pBusypf_he
4、ad,*_pBusypf_tail;vector _vMain,_vPage,_vOffset;int _nDiseffect;,存储器管理实验 _ 10 成都信息工程学院 徐虹,CMemory:CMemory():_vDiscPages(TOTAL_VP),_vMemoryPages(TOTAL_VP),_vMain(TOTAL_INSTRUCTION),_vPage(TOTAL_INSTRUCTION),_vOffset(TOTAL_INSTRUCTION)int S,i,nRand;srand(getpid()*10);,存储器管理实验 _ 11 成都信息工程学院 徐虹,nRand=ra
5、nd()%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;,存储器管理实验 _ 12 成都信息工程学院 徐虹,S=(float)nRand*(318-_vMaini+2)/32767+_vMaini+2+2;for(i=0;iTOTAL_INSTRUCTION;i
6、+)_vPagei=_vMaini/10;_vOffseti=_vMaini%10;_vPagei%=32;,存储器管理实验 _ 13 成都信息工程学院 徐虹,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=-
7、1;for(ix=1;ixnTotal_pf;ix+)_vMemoryPagesix-1.m_pNext=,存储器管理实验 _ 14 成都信息工程学院 徐虹,_vMemoryPagesnTotal_pf-1.m_pNext=NULL;_vMemoryPagesnTotal_pf-1.m_nPageFaceNumber=nTotal_pf-1;_pFreepf_head=i+),存储器管理实验 _ 15 成都信息工程学院 徐虹,if(_vDiscPages_vPagei.m_nPageFaceNumber=INVALID)_nDiseffect+=1;if(_pFreepf_head=NULL)
8、/无空闲页面 p=_pBusypf_head-m_pNext;_vDiscPages_pBusypf_head-m_nPageNumber.m_nPageFaceNumber=INVALID;_pFreepf_head=_pBusypf_head;_pFreepf_head-m_pNext=NULL;_pBusypf_head=p;,存储器管理实验 _ 16 成都信息工程学院 徐虹,p=_pFreepf_head-m_pNext;_pFreepf_head-m_pNext=NULL;_pFreepf_head-m_nPageNumber=_vPagei;_vDiscPages_vPagei.m
9、_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;,存储器管理实验 _ 17 成都信息工程学院 徐虹,_pFreepf_head=p;coutFIFO:1-(float)_nDiseffect/320;void CMemory:LRU(const int nTotal_pf)int i
10、,j,nMin,minj,nPresentTime(0);initialize(nTotal_pf);,存储器管理实验 _ 18 成都信息工程学院 徐虹,for(i=0;i_vDiscPagesj.m_nTime,存储器管理实验 _ 19 成都信息工程学院 徐虹,_pFreepf_head=,存储器管理实验 _ 20 成都信息工程学院 徐虹,else_vDiscPages_vPagei.m_nTime=nPresentTime;nPresentTime+;coutLRU:1-(float)_nDiseffect/320;void CMemory:NUR(const int nTotal_pf)
11、int i,j,nDiscPage,nOld_DiscPage;bool bCont_flag;initialize(nTotal_pf);nDiscPage=0;,存储器管理实验 _ 21 成都信息工程学院 徐虹,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(_vDiscPagesnDiscPag
12、e.m_nCounter=0,存储器管理实验 _ 22 成都信息工程学院 徐虹,else nDiscPage+;if(nDiscPage=TOTAL_VP)nDiscPage=0;if(nDiscPage=nOld_DiscPage)for(j=0;jTOTAL_VP;j+)_vDiscPagesj.m_nCounter=0;_pFreepf_head=,存储器管理实验 _ 23 成都信息工程学院 徐虹,_vDiscPagesnDiscPage.m_nPageFaceNumber=INVALID;_pFreepf_head-m_pNext=NULL;_vDiscPages_vPagei.m_n
13、PageFaceNumber=_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;,存储器管理实验 _ 24 成都信息工程学院 徐虹,coutNUR:1-(float)_nDiseffect/320;void CMemory:OPT(const int nTotal_pf)int i,j,max,maxpa
14、ge,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;,存储器管理实验 _ 25 成都信息工程学院 徐虹,nDistance
15、=1;for(j=i+1;jTOTAL_INSTRUCTION;j+)if(_vDiscPages_vPagej.m_nPageFaceNumber!=INVALID),存储器管理实验 _ 26 成都信息工程学院 徐虹,_pFreepf_head=#endif,存储器管理实验 _ 27 成都信息工程学院 徐虹,#include#include#include#include#include#include using namespace std;#define INVALID-1const int TOTAL_INSTRUCTION(320);const int TOTAL_VP(32);const int CLEAR_PERIOD(50);,存储器管理实验 _ 28 成都信息工程学院 徐虹,#include Page.h#include PageControl.h#include Memory.hint main()int i;CMemory a;for(i=4;i=32;i+)a.FIFO(i);a.LRU(i);a.NUR(i);a.OPT(i);coutn;return 0;,存储器管理实验 _ 29 成都信息工程学院 徐虹,4.6 程序运行,g+-o main main.cpp./main,
链接地址:https://www.31ppt.com/p-6268079.html