FIFO和LRU页面置换算法实例分析:缺页中断与缺页率计算
FIFO和LRU页面置换算法实例分析:缺页中断与缺页率计算
问题描述:
假设在某个请求页式虚拟系统中,某进程的页面访问序列为:0, 0, 3, 1, 1, 4, 0, 5, 6, 6, 2, 4, 6, 7, 7, 0, 0, 6, 7, 2,进程实际页面数为3。请分别使用先进先出(FIFO)和最近最久未使用(LRU)页面置换算法,计算缺页中断次数和缺页率。
一、先进先出(FIFO)置换算法
假设物理内存大小为4,初始状态为空。
- 访问页面0:缺页,物理内存为{0, _, _, _},缺页中断次数为1。
- 访问页面0:命中,物理内存不变。
- 访问页面3:缺页,物理内存为{0, 3, _, _},缺页中断次数为2。
- 访问页面1:缺页,物理内存为{0, 3, 1, _},缺页中断次数为3。
- 访问页面1:命中,物理内存不变。
- 访问页面4:缺页,物理内存为{0, 3, 1, 4},缺页中断次数为4。
- 访问页面0:缺页,物理内存为{3, 1, 4, 0},缺页中断次数为5。
- 访问页面5:缺页,物理内存为{1, 4, 0, 5},缺页中断次数为6。
- 访问页面6:缺页,物理内存为{4, 0, 5, 6},缺页中断次数为7。
- 访问页面6:命中,物理内存不变。
- 访问页面2:缺页,物理内存为{0, 5, 6, 2},缺页中断次数为8。
- 访问页面4:缺页,物理内存为{5, 6, 2, 4},缺页中断次数为9。
- 访问页面6:缺页,物理内存为{6, 2, 4, 6},缺页中断次数为10。
- 访问页面7:缺页,物理内存为{2, 4, 6, 7},缺页中断次数为11。
- 访问页面7:命中,物理内存不变。
- 访问页面0:缺页,物理内存为{4, 6, 7, 0},缺页中断次数为12。
- 访问页面0:命中,物理内存不变。
- 访问页面6:缺页,物理内存为{6, 7, 0, 6},缺页中断次数为13。
- 访问页面7:缺页,物理内存为{7, 0, 6, 7},缺页中断次数为14。
- 访问页面2:缺页,物理内存为{0, 6, 7, 2},缺页中断次数为15。
缺页率 = 缺页中断次数 / 总访问次数 = 15 / 20 = 75%
二、最近最久未使用(LRU)置换算法
假设物理内存大小为4,初始状态为空。
- 访问页面0:缺页,物理内存为{0, _, _, _},缺页中断次数为1。
- 访问页面0:命中,物理内存不变。
- 访问页面3:缺页,物理内存为{0, 3, _, _},缺页中断次数为2。
- 访问页面1:缺页,物理内存为{0, 3, 1, _},缺页中断次数为3。
- 访问页面1:命中,物理内存不变。
- 访问页面4:缺页,物理内存为{0, 3, 1, 4},缺页中断次数为4。
- 访问页面0:命中,物理内存为{3, 1, 4, 0},缺页中断次数不变。
- 访问页面5:缺页,物理内存为{3, 1, 0, 5},缺页中断次数为5。
- 访问页面6:缺页,物理内存为{3, 1, 5, 6},缺页中断次数为6。
- 访问页面6:命中,物理内存为{3, 1, 5, 6},缺页中断次数不变。
- 访问页面2:缺页,物理内存为{1, 5, 6, 2},缺页中断次数为7。
- 访问页面4:缺页,物理内存为{5, 6, 2, 4},缺页中断次数为8。
- 访问页面6:命中,物理内存为{5, 2, 4, 6},缺页中断次数不变。
- 访问页面7:缺页,物理内存为{2, 4, 6, 7},缺页中断次数为9。
- 访问页面7:命中,物理内存为{2, 4, 6, 7},缺页中断次数不变。
- 访问页面0:缺页,物理内存为{4, 6, 7, 0},缺页中断次数为10。
- 访问页面0:命中,物理内存为{4, 6, 7, 0},缺页中断次数不变。
- 访问页面6:命中,物理内存为{4, 7, 0, 6},缺页中断次数不变。
- 访问页面7:命中,物理内存为{4, 0, 6, 7},缺页中断次数不变。
- 访问页面2:缺页,物理内存为{0, 6, 7, 2},缺页中断次数为11。
缺页率 = 缺页中断次数 / 总访问次数 = 11 / 20 = 55%
结论:
在本例中,FIFO算法的缺页率为75%,LRU算法的缺页率为55%。LRU算法的缺页率更低,说明在该页面访问序列下,LRU算法具有更好的性能。
原文地址: https://www.cveoy.top/t/topic/jkH5 著作权归作者所有。请勿转载和采集!