- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三内存管理.doc
基于Linux的操作系统实验系统 第 PAGE 7 页
第三章 存储管理实验
内存页面调度算法比较
【实验目的】
理解内存页面调度的机理,掌握几种理论调度算法实现,并通过实验比较各种调度算法的优劣。此外通过实验了解HASH表数据结构的使用。
【准备知识】
C++。指针、结构体(类)。
据结构HASH表查找方式。
作系统相关内存交换知识。
4.可能用到的几个LINUX函数:
= 1 \* GB2 ⑴ int getpid() //获得当前进程的id
⑵ void srand(int a) //以a为种子,为后面产生随机数作准备
⑶ int rand() //根据前面的种子,返回一个随机数
【实验内容】
对比几种算法的命中率。
1.先进先出的算法。FIFO(First In First Out)
2.最近最少使用的算法。LRU(Least Recently Used)
3.最近未使用算法。NUR(Never Used Recently)
4.最佳置换算法。OPT(Optimal Replacement)
【实验指导】
拥有页面交换机制的操作系统总是把当前进程中急需处理的部分页面换入到内存当中,而把更多暂时不需处理的页面放置在外存当中,由于进程需要处理页面的顺序不同,而需要在内存与外存之间进行页面交换,交换算法也就应运而生。
本实验并没有进入系统空间对实际进程页面进行控制,而是在用户空间用线性表的连续存储方式对进程页面交换进行的模拟。
一.FIFO
1.原理简述:
(1)在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先的AP个页面放入内存;
(2)这时有需要处理新的页面,则将原理在内存中的AP个页面中最先进入的调出(是以称为FIFO),然后放入新页面;
(3)以后如果有新页面需要调入,按(2)之规则进行。
算法特点:所使用的内存页面构成一个队列。
2.图表描述:
假设某个进程在硬盘上被化为5个页面(PP=5),以1、2、3、4、5分别表示,而下面是处理机调用它们的顺序(这取决于进程本身):
1、4、2、5、3、3、2、4、2、5
而内存可以控制的页面数为3(AP=3),那么在使用FIFO算法时,这3个页面的内存使用情况应该是这样的:
队列第1位1425333425队列第2位142555342队列第3位14222534
页面5进入,而最先进入的页面1被调出
页面3进入,而此时3个页面中最先进入的页面4被调出
虽然有页面需要处理,但是页面本身以在内存中,不需再调入了
图 1?1
不难看出本例共换入页面8次,diseffect=8。
3.算法实现提示:
要得到“命中率”,必然应该有一个常量total_instruction记录页面总共使用次数;此外需要一个变量记录总共换入页面的次数(需要换出页面,总是因为没有命中而产生的)diseffect。利用公式可以得到命中率。
= 1 \* GB2 ⑴ 初始化。设置两个数组page[ap]和pagecontrol[pp]分别表示进程页面数和内存分配的页面数,并产生一个的随机数序列main[total_instruction](当然这个序列由page[]的下标随机构成),表示待处理的进程页面顺序,diseffect置零。
= 2 \* GB2 ⑵ 看main[]中是否有下一个元素,有就由main[]中获取该页面下标,并转到 = 3 \* GB2 ⑶;没有,就转到 = 7 \* GB2 ⑺。
= 3 \* GB2 ⑶ 如果该page业已在内存中,就转到 = 2 \* GB2 ⑵;否则就到 = 4 \* GB2 ⑷,同时未命中的diseffect加1。
= 4 \* GB2 ⑷ 观察pagecontrol是否占满,如果占满需将使用队列( = 6 \* GB2 ⑹中建立的)中最先进入的(就是队列第一个单元)pagecontrol单元“清干净”,同时将对应的page[]单元置为“不在内存中”。
= 5 \* GB2 ⑸ 将该page[]与pagecontrol[]建立关系(可以改变pagecontrol[]的标示位,也可以采用指针连接,总
原创力文档


文档评论(0)