在请求分页存储管理系统中,由于使用了虚拟存储管理技术,使得所有的进程页面不是一次性地全部调入内存,而是部分页面装入。这就有可能出现下面的情况:要访问的页面不在内存,这时系统产生缺页中断。操作系统在处理缺页中断时,要把所需页面从外存调入到内存中。如果这时内存中有空闲块,就可以直接调入该页面;如果这时内存中没有空闲块,就必须先淘汰一个已经在内存中的页面,腾出空间,再把所需的页面装入,即进行页面置换。
常见的页面置换算法有:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法(LRU)。
先进先出(FIFO)算法:顾名思义就是把页面中最先存在的,最先置换出来。例如:1,2,3,4,5,1,2,5,1,2,3,4,5。当内存块数量为3时,求先进先出算法的缺页次数。
内存块3个 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 5 | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 1 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | |||
2 | 2 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | ||||
3 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |
由上图可知,当内存块为3块时,缺页数为10。
优缺点:先进先出法(FIFO)简单易于实现,但是性能不好,存在如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。
最佳置换(OPT)算法:就是把将来最远或不在会置换进来的页面置换出去。例如:1,2,3,4,5,1,2,5,1,2,3,4,5。当内存块数为3时,求最佳置换算法的缺页数。
内存块3个 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 5 | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 1 | 1 | 1 | 1 | 3 | 3 | ||||||
2 | 2 | 2 | 2 | 2 | 2 | 4 | |||||||
3 | 3 | 4 | 5 | 5 | 5 |
由上图可知,当内存块为3时,缺页数为7。
优缺点:OPT算法因为要需要预先知道一个进程在整个运行过程中页面走向的全部情况,因此只是一种理想状态,实际是行不通的。一般用算法来衡量(如通过模拟实验分析或理论分析)其他算法的优劣。
最近最少使用算法(LRU):就是把,最近最久没有使用过的页面数置换出去。例如:1,2,3,4,5,1,2,5,1,2,3,4,5。当内存块数为3时,求最少使用算法的缺页数。
内存块3个 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 5 | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 1 | 1 | 4 | 4 | 4 | 2 | 2 | 2 | 5 | |||
2 | 2 | 2 | 2 | 5 | 5 | 5 | 3 | 3 | 3 | ||||
3 | 3 | 3 | 3 | 1 | 1 | 1 | 4 | 4 |
由上图可知,当内存块为3时,缺页数为10。
优缺点:LRU算法是经常采用的页面置换算法。缺点是实现上需要大量的硬件支持。
版权声明:本文为博主原创文章,未经博主允许不得转载。