操作系统实验报告三存储器管理实验.docVIP

  • 111
  • 0
  • 约6.75千字
  • 约 7页
  • 2016-11-29 发布于河南
  • 举报

操作系统实验报告三存储器管理实验.doc

操作系统实验报告三存储器管理实验

课程名: 操作系统 地点: 姓名: 班级: 学号: 成绩 项目: 存储器管理实验 目的要求 一. 理解内存页面调度的机理 二. 掌握几种理论页面置换算法的实现方法 三. 了解 HASH 表数据结构的使用 四. 通过实验比较各种调度算法的优劣 一.Page.h 文件 #ifndef _PAGE_H #define _PAGE_H class cpage { public: int m_nPageNumber, m_nPageFaceNumber, m_nCounter, m_nTime; }; #endif 二.Memory.h文件 #ifndef _MEMORY_H #define _MEMORY_H class 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); private: vectorCPage _vDiscPages; vectorCPageControl _vMemoryPages; CPageControl *_pFreepf_head,*_pBusypf_head,*_pBusypf_tail; vectorint _vMain,_vPage,_vOffset; int _nDiseffect; }; CMemory::CMemory():_vDiscPages(TOTAL_VP), _vMemoryPages(TOTAL_VP), _vMain(TOTAL_INSTRUCTION), _vPage(TOTAL_INSTRUCTION), _vOffset(TOTAL_INSTRUCTION) { int S,i,nRand; srand(getpid()*10); nRand=rand()%32767; S=(float)319*nRand/32767+1; for(i=0;iTOTAL_INSTRUCTION;i+=4) { _vMain[i]=S; _vMain[i+1]=_vMain[i]+1; nRand=rand()%32767; _vMain[i+2]=(float)_vMain[i]*nRand/32767; _vMain[i+3]=_vMain[i+2]+1; nRand=rand()%32767; S=(float)nRand *(318-_vMain[i+2])/32767+_vMain[i+2]+2; } for(i=0;iTOTAL_INSTRUCTION;i++) { _vPage[i]=_vMain[i]/10; _vOffset[i]=_vMain[i]%10; _vPage[i]%=32; } } void CMemory::initialize(const int nTotal_pf) { int ix; _nDiseffect=0; for(ix=0;ix_vDiscPages.size();ix++) { _vDiscPages[ix].m_nPageNumber=ix; _vDiscPages[ix].m_nPageFaceNumber=INVALID; _vDiscPages[ix].m_nCounter=0; _vDiscPages[ix].m_nTime=-1; } for(ix=1;ixnTotal_pf;ix++) { _vMemoryPages[ix-1].m_pNext=_vMemoryPages[ix]; _vMemoryPages[ix-1].m_nPageFaceNumber=ix-1; } _vMemoryPages[nTotal_pf-1].m_pNext=NULL; _vMemoryPages[nTotal_pf-1].m_nPageFaceNumber=nTotal_pf-1; _pFreepf_head=_vMemoryPages[0]; } void CMemory::FIFO(const int nTotal_pf) { int i; CPageControl *p; initialize(nTotal_pf); _pBusyp

文档评论(0)

1亿VIP精品文档

相关文档