有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5, 1,2,5,1,2,3,4,5,会发生多少缺页?
注意:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。
内存块数是3时:
FIFO,发生缺页时的调入顺序即为淘汰顺序
1、访问1,缺页,调入1,内存中为 1, ,;
2、访问2,缺页,调入2,内存中为 1,2,;
3、 访问3,缺页,调入3,内存中为 1,2,3;
4、 访问4,缺页,调入4,淘汰1,内存中为 4,2,3;
5、 访问5,缺页,调入5,淘汰2,内存中为 4,5,3;
6、 访问1,缺页,调入1,淘汰3,内存中为 4,5,1;
7、 访问2,缺页,调入2,淘汰4,内存中为 2,5,1;
8、 访问5,不缺页,内存中为 2,5,1;
9、 访问1,不缺页,内存中为 2,5,1;
10、 访问2,不缺页,内存中为 2,5,1;
11、访问3,缺页,调入3,淘汰5,内存中为 2,3,1;
12、访问4,缺页,调入4,淘汰1,内存中为 2,3,4;
13、访问5,缺页,调入5,淘汰2,内存中为 5,3,4;
LRU算法是最不经常访问淘汰算法,LFU最近最少访问淘汰算法
LRU算法是通过栈来实现,新访问的放入栈底,每次淘汰栈顶。
1、访问1,缺页,调入1,内存中为 1, ,;
2、访问2,缺页,调入2,内存中为 1,2,;
3、 访问3,缺页,调入3,内存中为 1,2,3;
4、 访问4,缺页,调入4,淘汰1,内存中为 2,3, 4;
5、 访问5,缺页,调入5,淘汰2,内存中为 3,4,5;
6、 访问1,缺页,调入1,淘汰3,内存中为 4,5,1;
7、 访问2,缺页,调入2,淘汰4,内存中为 5,1,2;
8、 访问5,不缺页,内存中为 1,2,5;
9、 访问1,不缺页,内存中为 2,5,1;
10、 访问2,不缺页,内存中为 5,1,2;
11、访问3,缺页,调入3,淘汰5,内存中为 1,2,3;
12、访问4,缺页,调入4,淘汰1,内存中为 2,3,4;
13、访问5,缺页,调入5,淘汰2,内存中为3,4,5;
共10次缺页。
LFU算法同样是用队列,不过每个页面有一个引用计数,每次淘汰队尾(相同计数按时间排列)
1、访问1,缺页,调入1,内存中为 1, ,;
2、访问2,缺页,调入2,内存中为 1,2,;
3、 访问3,缺页,调入3,内存中为 1,2,3;
4、 访问4,缺页,调入4,淘汰3,内存中为 1,2, 4;
5、 访问5,缺页,调入5,淘汰4,内存中为 1,2,5;
6、 访问1,缺页,调入1,淘汰5,内存中为 1,2,6;
7、 访问2,不缺页,内存中为 2,1,6;
8、 访问5,缺页,调入5,淘汰6,内存中为 2,1,5;
9、 访问1,不缺页,内存中为 2,1,5;
10、 访问2,不缺页,内存中为2,1,5;
11、访问3,缺页,调入3,淘汰5,内存中为 2,1,3;
12、访问4,缺页,调入4,淘汰3,内存中为 2,1,4;
13、访问5,缺页,调入5,淘汰4,内存中为 2,1,5;
共10次缺页。