成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

操作系統(tǒng)實驗(四)——頁面置換算法模擬-創(chuàng)新互聯(lián)

一個班(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ù)解決您的所有建站問題。
一、OPT 代碼
#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)

外貿(mào)網(wǎng)站建設(shè)
巴楚县| 密云县| 兴仁县| 太康县| 桂平市| 修文县| 璧山县| 孟津县| 砀山县| 铁岭市| 清水县| 星子县| 正蓝旗| 綦江县| 新晃| 莱芜市| 民乐县| 池州市| 理塘县| 玉环县| 子洲县| 罗城| 南丰县| 昌宁县| 贵南县| 海城市| 滦南县| 牡丹江市| 德格县| 古浪县| 营山县| 三亚市| 新野县| 南平市| 松江区| 社会| 弥渡县| 内江市| 沂源县| 道真| 湛江市|