- 思想:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面予以淘汰
- 优点:实现简单
- 缺点:算法性能差,往往与进程实际运行的规模不相符。有些页面,如存放全局变量、常用函数的页面,在整个进程的运行过程中会被频繁访问。如果频繁将其换进换出,则会产生“抖动”现象,因此,这种算法在实际中应用很少
- 注意:只有FIFO算法会产生Belady异常。Belady异常——当为进程分配的物理块数增大时,缺页次数不减反增的异常现象
- 例子: 假设最小物理块数为3块。页面引用序列如下:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
缺页次数:15次 缺页率:15 / 20 = 75%
解析:
进程运行时,当进程要访问7, 0, 1三个页面时都会产生缺页中断
按照页面访问顺序,当进程要访问页面2时,内存中没有页面2,产生缺页中断。内存中的三个页面7, 0, 1,页面7最先进入内存,所以淘汰页面7,页面2装入物理块1
按照页面访问顺序,当进程要访问页面0时,页面0在物理块2中,不会产生缺页中断
按照页面访问顺序,当进程要访问页面3时,内存中没有页面3,产生缺页中断。内存中的三个页面2, 0, 1,页面0最先进入内存,所以淘汰页面0,页面3装入物理块2
按照页面访问顺序,当进程要访问页面0时,内存中没有页面0,产生缺页中断。内存中的三个页面2, 3, 1,页面1最先进入内存,所以淘汰页面1,页面0装入物理块3
按照页面访问顺序,当进程要访问页面4时,内存中没有页面4,产生缺页中断。内存中的三个页面2, 0, 3,页面2最先进入内存,所以淘汰页面2,页面4装入物理块1
以此类推,便可得到如图情况