北理工操作系统内存管理实验报告_第1页
北理工操作系统内存管理实验报告_第2页
北理工操作系统内存管理实验报告_第3页
北理工操作系统内存管理实验报告_第4页
北理工操作系统内存管理实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三:内存管理班级: 学号: 姓名: 一、实验目的1. 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解;2. 熟悉虚存管理的页面淘汰算法;3. 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二、实验要求1. 设计一个请求页式存储管理方案(自己指定页面大小),并予以程序实现。并产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。2. 页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 3. 系统运行既可以

2、在Windows,也可以在Linux。三、实验流程图图1 页式存储管理程序参考流程四、实验环境硬件设备:个人计算机。系统软件:windows操作系统,Visual C+6.0编译环境。五、实验结果说明:模拟产生35个指令地址,随机产生20个指令地址进行排队,假设主存中共有10个工作集页帧。将前9个指令调入内存,因为前9个指令中,页号为13的指令有两个,所以调入内存中共有8页。此时主存中还有两个空闲帧。此时按刚才随机顺序进行访问指令工作。前9页因都在主存中可直接调用。第10个随机地址为页号为5的指令,也在主存中,也可直接调用。页号为24,3因不在主存中,需要调用进主存。此时主存已满。然后主存需要

3、进行调用页号为27号的指令,因主存已满,需要执行FIFO算法,将最先进入主存的页号为30的指令调出,将27号放入第帧。以后需要调用的页面按照存在就无需调用,否则按FIFO原则进行调页工作。六、实验感想七、实验代码#include #include #include #include #include #include /#include using namespace std ;#define PAGETABLE_NUM35/模拟进程的页表表项数量;#define AVAILABLEFRAME_NUM10/主存中固定工作集页帧的数量;#define RANDOMNUMBER_NUM20/产生随

4、机指令地址的数量;struct PageTableEntryunsigned int FrameNum ;bool Pressent ;void InitRandomAddr(vector &RandomAddr) ;void InitIdleFrameQueue(queue &IdleFrameQueue) ;void InitPageTable(vector &PageTable, vector &RandomAddr, queue &IdleFrameQueue, queue &AvtiveFrameQueue) ;void SetPTE(PageTableEntry &PTE) ;in

5、t main()int a ;/初始化RANDERNUMBER_NUM条随机的32位指令地址;vector RandomAddr(RANDOMNUMBER_NUM) ;InitRandomAddr(RandomAddr) ;/初始化FIFS指针;vector:iterator FIFS_pintor ;FIFS_pintor = RandomAddr.begin() ;/初始空闲帧队列;queue IdleFrameQueue, ActiveFrameQueue ;InitIdleFrameQueue(IdleFrameQueue) ;/初始进程页表(模拟进程初始时,工作集已经使用至少10个页

6、帧);vector PageTable(PAGETABLE_NUM) ;InitPageTable(PageTable, RandomAddr, IdleFrameQueue, ActiveFrameQueue) ;/Testcout 开始访问指令地址 n ;vector:iterator pt_RandomAddr ;for( pt_RandomAddr = RandomAddr.begin(); pt_RandomAddr != RandomAddr.end(); pt_RandomAddr+ )unsigned int PageNum = (*pt_RandomAddr) 12 ;cou

7、t地址:0xhex*pt_RandomAddrdect页号:PageNum;if ( PageTablePageNum.Pressent = 0 )/该页不在主存中 ;coutt该页不在主存,;if (IdleFrameQueue.empty()/工作集空闲页帧已用完;cout 12.Pressent = 0 ;/标记此页已经被置换出主存;/置换进新页;PageTablePageNum.FrameNum = Frame_Num ;PageTablePageNum.Pressent = 1 ;ActiveFrameQueue.push(Frame_Num) ;/移动FIFS指针 ;FIFS_pi

8、ntor+ ;elsecout调入所需页到空闲页t;/调入当前所需的页到空闲页中;unsigned int Frame_Num ;Frame_Num = IdleFrameQueue.front() ;IdleFrameQueue.pop() ;PageTablePageNum.FrameNum = Frame_Num ;PageTablePageNum.Pressent = 1 ;ActiveFrameQueue.push(Frame_Num) ; elsecoutt该页在主存;coutt帧号:PageTablePageNum.FrameNumendl ;return 0 ;void Ini

9、tRandomAddr(vector &RandomAddr)cout 生成随机指令地址 n ;vector:iterator pd ;srand( (unsigned)time( NULL ) );for( pd = RandomAddr.begin(); pd != RandomAddr.end(); pd+ )/产生随机页号0PAGETABLE_NUM - 1;unsigned int High_20 = rand() % PAGETABLE_NUM ;/产生随机偏移量04095 ;unsigned int Low_12 = rand() % 4096 ;unsigned int Add

10、r = (High_20 12) | Low_12 ;*pd = Addr ;cout随机指令地址:0xsetw(8)setfill(0) setiosflags(ios:uppercase | ios:fixed)hex*pdt页号:decHigh_20t偏移量:0xhexLow_12decendl ;void InitIdleFrameQueue(queue &IdleFrameQueue)/帧号从0,这里取;for ( unsigned int FrameNum = ; FrameNum + AVAILABLEFRAME_NUM; FrameNum+ )IdleFrameQueue.pu

11、sh(FrameNum) ;void InitPageTable(vector &PageTable, vector &RandomAddr, queue &IdleFrameQueue, queue &AvtiveFrameQueue)cout 初始化页表; n ;for_each(PageTable.begin(), PageTable.end(), SetPTE) ;unsigned int Page_Num, Frame_Num ;for ( int count = 0; count 12 ;if ( PageTablePage_Num.Pressent != 0 )break ;Frame_Num = IdleFrameQueue.front() ;IdleFrameQueue.pop() ;PageTablePage_Num.FrameNum = Frame_Num ;/设置页帧号;PageTablePage_Num.Pressen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论