/*
簡單實現頁面置換演算法
fifo opt lru
*/參考文章:
```cpp
```cpp
```cpp
```cpp
```cpp
#include
#include
#include
#include
using
namespace std;
struct node
;bool
cmp(node a,node b)
bool
cmp1
(node a,node b)
intfifo
(vector<
int>
& pages,
int nums)
}//如果有,開始下一次訪問
if(flag==1)
continue
;//頁框中沒有當前頁面,若還有空閒塊,直接將該頁面入隊尾
//否則,將隊首出隊,當前頁面入隊尾
else}}
return res;
}//最佳置換演算法,使用nextindex,表示下乙個和當前頁面相同的頁面 索引
intopt
(vector<
int>
& pages,
int nums)
}break;}
}//頁面不在頁框中
if(flag==0)
}//頁框不滿,則直接入隊
if(dq.
size()
//否則,隊首出隊,入隊尾
//(因為每次訪問之後,將頁框中頁面排序,按照nextindex 由大到小 )
//則佇列中,隊首是今後一段時間最晚訪問的頁面
else
}//排序
sort
(dq.
begin()
,dq.
end(
),cmp);}
return res;
}//最近最長時間為訪問,向前看
//為了省事,依舊使用nextindex 表示當前頁面之前的和當前頁面相同的下標
intlru
(vector<
int>
& pages,
int nums)}if
(flag==1)
continue
;else
}//排序,按照nextindex從小到大排序
//即佇列中,最前面的使最近最久未訪問頁面
sort
(dq.
begin()
,dq.
end(
),cmp1)
; cout<}return res;
}int
main()
;int out1=
fifo
(v,4);
cout<<
"fifo:"
opt(v,4)
; cout<<
"opt:"
lru(v,4)
; cout<<
"lru:"
}
頁面置換演算法
常用的頁面置換演算法有三種 先進先出演算法fifo first in first out 該演算法的基本思想是首先淘汰那些駐留在主存時間最長的頁面。最近最久未用演算法 lru 該演算法的基本思想是 如果某一頁被訪問了,那麼它很可能馬上又被訪問 反之,如果某一頁很久沒被訪問,那麼最近也不會再訪問。lr...
頁面置換演算法
include using namespace std int process 100 頁面佇列 int memory 3 塊數 int optqueue 100 opt演算法的佇列 int fifoqueue 100 fifo演算法佇列 int lruqueue 100 lru演算法佇列 int ...
頁面置換演算法
位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。常見的置換演算法有 1 最佳置換演算法 opt 理想置換演算法 這是一種理想情況下的頁...