1.分页的内存管理克服了交换系统的缺点:外部碎片,程序不能大于物理内存等。但付出的代价是页面更换。在交换系统下,一个程序作为一个整体加载到内存,这样,在程序运行时,无须在从磁盘上加载任何东西,而分页系统下,一个程序的所有页面不一定都在内存中,所以可能会产生缺页中断,缺页中断的服务程序负责把位于磁盘上的数据加载到物理内存中来,如果物理内存中有空闲的页面,那就直接使用空闲的页面,但如果物理内存已满,就需要挑选某个已经使用过的页面进行替换。这里就出现一个问题,如何挑选?
2.如果挑选的页面是之后很快又要被访问的页面,那样系统很快又要产生缺页中断,这样是很不合适的。页面更换的目标就是降低随后发生缺页中断的次数或者概率。因此,我们选择的页面应当是在随后相当长的时间内不会被访问的页面,最好是在也不会被访问的页面。如果可能,我们也应该选择一个没有修改过的页面,这样,替换时就无须将被替换的页面的内容写回磁盘,从而进一步加快缺页中断的响应速度。
3.页面更换的算法?
1)公平算法:随机算法,先来先出算法,第二次机会算法,时钟算法。
2)非公平算法:最优算法,NRU算法,LRU算法,工作集算法。
4.先来先出算法:更换最早进入内存的页面,实现机制是使用链表将所有在内存的页面按照进入时间的早晚连起来,然后每次置换链表头上的页面,新进来的页面则挂在链表的末端。
5.第二次机会算法:由于FIFO只考虑进入内存的时间,没有关心一个页面被访问的频率,可能替换了一个经常被访问的页面。改进的方法是,在使用FIFO更换一个页面时,需要看下该页面是否在最近被访问后,如果没有被访问,直接替换,如果最近被访问,则将该页面挂到链表末端,并将该页面进入内存的时间设置为当前时间,并将其访问位清零。
6.时钟算法:
7.NRU(Not Recently Used)最近未使用算法:选择一个在最近一段时间没有被访问过的页面进行替换,利用页面的访问和修改位。
8.LRU(Least Recently Used)最近使用最少算法:不仅考虑最近是否使用,还要考虑最近使用的频率。它的实现方法有页表式的方法,链表式的方法,矩阵式的方法,移位寄存器的方法。
9.工作集算法在实际操作系统中使用较多。