- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验题目 内存管理 实验目的 1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解; 2、熟悉虚存管理的页面淘汰算法; 3、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 三、实验条件和环境 硬件设备:多台计算机。 系统软件:windows操作系统,Visual C++6.0编译环境。 四、实验原理 分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中 系统为每个进程建立一个页表,页表给出逻辑页号和具体内存块号相应的关系。一个页表中包含若干个表目,表目的自然序号对应于用户程序中的页号,表目中的块号是该页对应的物理块号。 请求页式存储管理方式是一种实现虚拟存储器的方式,是指在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面。当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。 请求页式存储管理主要需要解决以下问题:系统如何获知进程当前所需页面不在主存;当发现缺页时,如何把所缺页面调入主存;当主存中没有空闲的页框时,为了要接受一个新页,需要把老的一页淘汰出去,根据什么策略选择欲淘汰的页面。 本程序中采用先来先服务的淘汰方式。 先进先出(First in First out,FIFO)算法,又称轮转法(RR)。选择在内存驻留时间最长的页,似乎合理,但可能淘汰掉频繁使用的页。另外,使用FIFO算法时,在未给予进程分配足够的页面时,有时会出现给予进程的页面数增多,缺页次数反而增加的异常现象。FIFO算法简单,可采用队列实现?需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。 页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 系统运行既可以在Windows,也可以在Linux。 方案分析: 1、产生一个需要访问的指令地址流,它是一系列需要访问的指令的地址。为不失一般性,可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。 2、指定合适的页面尺寸(例如以 1K或2K为1页); 3、指定内存页表的最大长度,并对页表进行初始化; 4、每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。 图1 页式存储管理程序流程图 六、实验结果及结论 附录:程序清单及说明 #includestdio.h struct Page { int page; //页号 int memory; //页面对应的内存物理块号 int flag; //状态标志,判断页面是否在内存,0页在主存,1页在辅存 }; struct Mem { int num; bool free; int time; int pagenum; //物理块中存储的页号 }; Page page_table[20]; //页表 Mem mem_table[20]; //叶匡 int fangwenadd[20]; //访问地址流 int fangwenye[20]; //访问页流 int page_size; //页面大小,单位byte int process_size; //进程大小 int page_num; //页面数 int M; //访问地址个数 int memory_num; //物理块的个数 int num(int x,int y) { int temp = x%y; if (temp == 0) { return x/y; } else { return (x/y+1); } } int count_page_num(int address) { int page_nums; page_nums = num(address,page_size); return page_nums - 1; } //分配页数 voi
有哪些信誉好的足球投注网站
文档评论(0)