页面置换算法
1. 总述
为提高内存利用率,解决内存供不应求的问题,更加合理的使用内存,人们创造了分页式内存抽象。同时有一个虚拟内存的概念,是指将内存中暂时不需要的部分写入硬盘,看上去硬盘扩展了内存的容量,所以叫做“虚拟”内存。使用虚拟内存,应用程序可以使用比实际物理内存更大的内存空间。可以认为这个更大的内存空间就在硬盘上,只有将某一部分需要被用到时,才被写入真实内存;当它暂时不再被用到时,又被写回硬盘。分页式内存管理将物理内存分为等大的小块,每块大小通常为1K、2K、4K等,称为页帧;逻辑内存(使用虚拟内存技术扩大的内存,可认为其位于硬盘上)也被分为等大的小块,称为页;且页和页帧的大小一定是一样的,它是写入真实内存和写回硬盘最小单位。
介绍另外几个概念:
使用位:每个页帧都有一个使用位,记录此页帧是否被使用。
修改位(脏位):每个页帧都有一个脏位,记录此页帧是否被更改。调出真实内存时,被更改过的页帧要写回硬盘,未被更改过的页帧直接扔掉即可,因为硬盘上此页帧的副本仍然有效。
逻辑地址:使用虚拟内存技术扩大后的内存的地址。
物理地址:真实内存的地址。
当然,进程载入到真实内存才可以运行,而进程代码使用的是逻辑地址,所以牵扯到一个地址转换的问题,将逻辑地址转换为物理地址。逻辑地址可分为两段,前半段