欢迎来到天天文库
浏览记录
ID:45575182
大小:141.02 KB
页数:8页
时间:2019-11-15
《存储器管理设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统课程设计任务书——存储器管理设计1设计目的⑴理解内存页面调度的机理。⑵掌握几种理论页面置换算法的实现方法。⑶了解HASH表数据结构的使用。⑷通过课程设计比较各种调度算法的优劣。页而置换算法是虚拟存储管理实现的关键,通过木次课程设计理解内存页面调度的机制,在模拟实现FIFO、LRU、NRU和OPT儿种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。2准备知识基木概念(1)C(或C++)、指针、结构体(类)(2)HASH(哈希)表查找方式⑶操作系统相关内存交换知识⑷用到的Linux函数•i
2、ntgetpid()获得当前进程的id•voidsrand(inta)以a为种了产生随机数•intrand()根据前面的种子,返冋一个随机数3设计内容设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。⑴先进先出的算法(FIFO)⑵最近最少使用算法(LRU)⑶最佳淘汰算法(OPT)⑷最少访问页面算法(LRU)⑸最近最不经常使用算法(NUR)命中率=(1一页面失效次数)/页地址流长度设计程序时先用Srand()和nmd()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。4设计
3、指导1FIFO页面置换算法队列第2位队列第3位■■絲衫衫傘纟毎紡A彳4絲:盜“IH訂:瓷霁•II1—,2页面5进入,而最牡进入的页面1被调出页面3进入,而此先进入的页面4■•■■■■■■■•■•被调出虽然有页面需要处理,但是页面本身已在内存中,不需再调入了II:Z厂;//.»>■Z7/,7^7/'/%么[内存页2号I402LRU页面遏换算法赧近1步使用1425332加近2步便用1斗553廉近3出使用14r4253NUR页而置换算法内存页1号进程的5号页面进入,由于内存中3个页面均使用到了,故换出页码最小的1号页面所有贞面设为“未
4、访!即'jStSpIJ5弓丿、,由于内存中3个页面均使用到了,敌换出页面码最小的1号页面内存页3号4OPT页面置换算法5参考源程序代码#ifndef_PAGE_H#define_PAGE_Hclasscpage{public:intm_nPageNumber,m_nPageFaceNumber,m_nCounter,m_nTime;};#endif#ifndef_PAGECONTROL_H#definePAGECONTROLHclassCpageControl{public:intm_nPageNumber,in_nPageFac
5、eNuiiiber;classCPageControl*m_pNext;};#endif#ifndef_MEMORY_H#define_MEMORY_HclassCMeniory{public:CMemoryO;voidinitialize(constintnTotaI_pf);voidFIFO(constintnTotal.pf);voidLRU(constintnTotal_pf);voidNUR(constintnTotaI_pf);voidOPT(constintnTotal_pf);private:vector6、e>_vDiscPages;vector_vMemoryPages;CPageControl*_pFreepf_head,*_pBusypf_head,*_pBusypf_tail;vector_vMain,_vPage,_vOffset;int_nDiseffect;};CMemory::CMemory():_vDiscPages(TOTAL_VP),_vMemoryPages(TOTAL_VP),_vMain(TOTALINSTRUCTION),_vPage(TOTAL」NSTRUCTIO7、N),_vOffset(TOTALINSTRUCTION){intS,i,nRand;srand(getpid()*10);nRand=rand()%32767;S=(float)319*nRand/32767+l;for(i=0;i8、=rand()%32767;S=(float)nRand*(318-_vMain[i+2])/32767+_vMain[i+2]+2;}for(i=0;i
6、e>_vDiscPages;vector_vMemoryPages;CPageControl*_pFreepf_head,*_pBusypf_head,*_pBusypf_tail;vector_vMain,_vPage,_vOffset;int_nDiseffect;};CMemory::CMemory():_vDiscPages(TOTAL_VP),_vMemoryPages(TOTAL_VP),_vMain(TOTALINSTRUCTION),_vPage(TOTAL」NSTRUCTIO
7、N),_vOffset(TOTALINSTRUCTION){intS,i,nRand;srand(getpid()*10);nRand=rand()%32767;S=(float)319*nRand/32767+l;for(i=0;i8、=rand()%32767;S=(float)nRand*(318-_vMain[i+2])/32767+_vMain[i+2]+2;}for(i=0;i
8、=rand()%32767;S=(float)nRand*(318-_vMain[i+2])/32767+_vMain[i+2]+2;}for(i=0;i
此文档下载收益归作者所有