缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。
先进先出 FIFO(First In First Out)
置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用。
缺页率:8/11*100%=xxx
页面走向 | 1 | 2 | 3 | 4 | 5 | 1 | 3 | 4 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|
物理页0 | 1 | 1 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
物理页1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | |
物理页2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | ||
物理页3 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | |||
缺页 | Y | Y | Y | Y | Y | Y | Y | Y |
最佳置换算法 OPT(Optimal)
所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人们目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以利用该算法去评价其它算法。
缺页率:6/11*100%=xxx
页面走向 | 1 | 2 | 3 | 4 | 5 | 1 | 3 | 4 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|
物理页0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 |
物理页1 | 2 | 2 | 2 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | |
物理页2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
物理页3 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | |||
缺页中断 | Y | Y | Y | Y | Y | Y |
最近最少使用 LRU(Least Recently Used)
置换最近一段时间以来最长时间未访问过的页面。需要根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
缺页率:7/11*100%=xxx
- 这里和第一个例子看起来比较像,但只是凑巧
页面走向 | 1 | 2 | 3 | 4 | 5 | 1 | 3 | 4 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|
物理页0 | 1 | 1 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 2 | 2 |
物理页1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | |
物理页2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
物理页3 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | |||
缺页 | Y | Y | Y | Y | Y | Y | Y |