物理内存只有3个页,程序有7个页,先装3个页,可是此时,又有需要装入内存的请求时,我们要先把原先三个页的那个页的内容给置换了啊?下面分享一下我对页面的三种置换算法的理解。
首先,我们清楚一个概念:缺页——我要装的程序的页,内存中没有该页就叫缺页。下面都已上面的数字为例。
先进先出页面置换算法
往内存的3个页中先后装入程序的3个页(这三个的程序页号是不一样的),再装入程序的下一个页时,先判断内存中有无此页,有就不用再次装入;内存中没有此页时,就把先进入内存中的程序页给弄到虚拟内存上,然后,装入要装入的,以后,以此类推。
最近最久未使用置换算法
往内存的3个页中先后装入程序的3个页(这三个的程序页号是不一样的),再装入程序的下一个页时,先判断内存中有无此页,有就不用再次装入;内存中没有此页时,就把内存中那个隔得时间最长没有运行的程序页给弄到虚拟内存上,然后,装入要装入的,以后,以此类推。这个开始时和先进先出页面置换算法的结果时一样的,但是,往后运行一段后,就不一样了。
最佳置换算法
往内存的3个页中先后装入程序的3个页(这三个的程序页号是不一样的),再装入程序的下一个页时,先判断内存中有无此页,有就不用再次装入;内存中没有此页时,该算法会把之后要装入内存的程序页号查一遍,并且要计算出,此时内存中的三个页号在之后谁是被最晚再次装入的页号,然后,把该页号给弄到虚拟内存上,然后,装入该装入的程序页号,最佳置换算法是这几种算法中最好的算法。
先进先出适应算法特点:那个页面先进来,那个页面先出去,不管该页面是不是最近又被访问了一次没有。这种算法连蒙都不会。
最长最久未被使用算法的特点:页面置换时,不管你们这些页面谁先进来,我只管的是从你们当中选择一个从最后一次被访问到现在,时间最长的那个页面。这个比较会蒙。
最佳适应算法:置换页面的时候,我看一下以后要进来的页面,把那个最晚再次进入内存的页面(这些页面必须是内存中存在的那些)置换出来。这个是铁板钉钉的事。
本文出自:http://ibicdi.blog.163.com/blog/static/194494108201242032256916/