一、OPT 代碼一個班(20信安)的同學(xué)搜到這篇別直接copy我的,代碼僅供參考
創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,先為牧野等服務(wù)建站,牧野等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為牧野企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
#includeusing namespace std;
listmain_store= {};
listback_store = {1,4,3,1,2,5,1,4,2,1,4,5};
int change_time = 0;// 記錄替換次數(shù)
int find(list::iterator begin,list::iterator end,int value)
// 尋找list列表中value首次出現(xiàn)的下標(biāo),未找到則返回列表長度,即size()
// 這里未找到設(shè)置為size(),就是將不再出現(xiàn)的page的權(quán)值設(shè)置為了大,優(yōu)先替換
{int i=0;
for(list::iterator iter = begin; iter!=end; iter++,i++)
{if(*iter == value)
{return i;
}
}
return i;
}
void OPT(int new_page)
// 最佳頁面置換算法
// 對整型數(shù)new_page進(jìn)行替換
{auto change_page_iter = main_store.begin();
// 如果主存中有page,則無需替換
if(count(main_store.begin(), main_store.end(), new_page)) return;
// 找到主存中出現(xiàn)位置最靠后的page(change_pagh_iter)
for(auto i=main_store.begin(); i!=main_store.end(); i++)
{if(find(back_store.begin(), back_store.end(), *i) >find(back_store.begin(), back_store.end(), *change_page_iter))
{change_page_iter = i;
}
}
// 替換
change_time++;
*change_page_iter = new_page;
}
void printList(lista)
// 打印list列表
{for(auto iter=a.begin(); iter!=a.end(); iter++)
{cout<< *iter<< " ";
}
cout<< endl;
}
int main()
{while(back_store.size())
{int new_page = back_store.front();
back_store.pop_front();
// 檢測主存是否有空閑空間
if(main_store.size()<3)
{main_store.push_back(new_page);
printList(main_store);
}
else
{OPT(new_page);
printList(main_store);
}
}
cout<< "頁面置換次數(shù):"<< change_time;
}
運行截圖二、FIFO
代碼#includeusing namespace std;
listmain_store= {};
listback_store = {1,4,3,1,2,5,1,4,2,1,4,5};
int change_time = 0;// 記錄替換次數(shù)
int ptr=0;
int find(list::iterator begin,list::iterator end,int value)
// 尋找list列表中value首次出現(xiàn)的下標(biāo),未找到則返回列表長度,即size()
{int i=0;
for(list::iterator iter = begin; iter!=end; iter++,i++)
{if(*iter == value)
{return i;
}
}
return i;
}
void FIFO(int new_page)
// 先進(jìn)先出算法
// 對整型數(shù)new_page進(jìn)行替換
{list::iterator change_page_iter = main_store.begin();
// 如果主存中有page,則無需替換
if(count(main_store.begin(), main_store.end(), new_page)) return;
// 找到主存中位置i的迭代器change_pagh_iter
for(int i=0; ichange_page_iter++;
}
// 替換
change_time++;
*change_page_iter = new_page;
ptr = (ptr+1)%main_store.size();
}
void printList(lista)
// 打印list列表
{for(auto iter=a.begin(); iter!=a.end(); iter++)
{cout<< *iter<< " ";
}
cout<< endl;
}
int main()
{while(back_store.size())
{int new_page = back_store.front();
back_store.pop_front();
// 檢測主存是否有空閑空間
if(main_store.size()<3)
{main_store.push_back(new_page);
printList(main_store);
}
else
{FIFO(new_page);
printList(main_store);
}
}
cout<< "頁面置換次數(shù):"<< change_time;
}
運行截圖三、LRU
代碼#includeusing namespace std;
listmain_store= {};
listback_store = {1,4,3,1,2,5,1,4,2,1,4,5};
int change_time = 0;// 記錄替換次數(shù)
int clt=0;
mapm;
int find(list::iterator begin,list::iterator end,int value)
// 尋找list列表中value首次出現(xiàn)的下標(biāo),未找到則返回列表長度,即size()
// 這里未找到設(shè)置為size(),就是將不再出現(xiàn)的page的權(quán)值設(shè)置為了大,優(yōu)先替換
{int i=0;
for(list::iterator iter = begin; iter!=end; iter++,i++)
{if(*iter == value)
{return i;
}
}
return i;
}
void LRU(int new_page)
// 最近最久未使用頁面置換算法
// 對整型數(shù)new_page進(jìn)行替換
{auto change_page_iter = main_store.begin();
// 如果主存中有page,則無需替換
if(count(main_store.begin(), main_store.end(), new_page)) return;
// 找到主存中出現(xiàn)位置最靠后的page(change_pagh_iter)
for(auto i=main_store.begin(); i!=main_store.end(); i++)
{if(m[*i]< m[*change_page_iter])
{change_page_iter = i;
}
}
// 替換
change_time++;
*change_page_iter = new_page;
}
void printList(lista)
// 打印list列表
{for(auto iter=a.begin(); iter!=a.end(); iter++)
{cout<< *iter<< " ";
}
cout<< endl;
}
int main()
{while(back_store.size())
{int new_page = back_store.front();
back_store.pop_front();
clt++;
m[new_page] = clt;
// 檢測主存是否有空閑空間
if(main_store.size()<3)
{main_store.push_back(new_page);
printList(main_store);
}
else
{LRU(new_page);
printList(main_store);
}
}
cout<< "頁面置換次數(shù):"<< change_time;
}
運行截圖小結(jié)調(diào)用了C++的STL庫里的list
列表容器和map
容器
寫了遍歷打印函數(shù),以及重寫了列表的find函數(shù)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:操作系統(tǒng)實驗(四)——頁面置換算法模擬-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://jinyejixie.com/article6/hgdig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、服務(wù)器托管、網(wǎng)站維護(hù)、定制開發(fā)、網(wǎng)站設(shè)計、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容