目錄
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計(jì),汝州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:汝州等地區(qū)。汝州做網(wǎng)站價(jià)格咨詢:028-869222201.算法原理
2.實(shí)驗(yàn)要求
3.算法流程圖
4.代碼分析
1.max函數(shù)的構(gòu)建
2.found函數(shù)的構(gòu)建
3.IN函數(shù)的構(gòu)建
4.print函數(shù)的構(gòu)建
5.主函數(shù)的構(gòu)建
6.總代碼
5.測(cè)試結(jié)果及其分析
基本思想是所選擇的被淘汰頁(yè)面,將是以后永不使用的,或是在最長(zhǎng)(未來(lái))時(shí)間內(nèi)不再被訪問(wèn)的頁(yè)面。采用最佳置換算法,可保證獲得最低的缺頁(yè)率。
2.實(shí)驗(yàn)要求在某請(qǐng)求分頁(yè)管理系統(tǒng)中,作業(yè)執(zhí)行時(shí)依次訪問(wèn)如下頁(yè)面:1,4,3,1,2,5,1,4,2,1,4,5,分配給該作業(yè)的主存塊數(shù)為3
3.算法流程圖4.代碼分析 1.max函數(shù)的構(gòu)建int max(int c[3]){//找出內(nèi)存三個(gè)頁(yè)面距離下一次使用時(shí)間最長(zhǎng)的頁(yè)面索引
int temp=c[0],index=0;
for(int i=1;i<3;i++){
if(c[i]>temp){
temp=c[i];
index=i;
}
}
return index;
}
輸入為數(shù)組C,C是用來(lái)存儲(chǔ)內(nèi)存三個(gè)頁(yè)面對(duì)應(yīng)的距離從b[0]開始下一次使用的時(shí)間
通過(guò)for循環(huán)找出大值,將其索引值返回
2.found函數(shù)的構(gòu)建void found(int a[3],int b[100],int start,int n,int c[3]){//尋找頁(yè)面內(nèi)三個(gè)進(jìn)程距離下一次使用的時(shí)間
for(int i=0;i<3;i++){
for(int j=start+1;j
輸入為數(shù)組a(處于內(nèi)存中的三個(gè)頁(yè)面),數(shù)組b(即將要進(jìn)入內(nèi)存的頁(yè)面總集),數(shù)組c,start(數(shù)組b中要進(jìn)入內(nèi)存的第start個(gè)),n(頁(yè)面總數(shù))
從start+1開始找與內(nèi)存三個(gè)頁(yè)面的時(shí)間,即間距,如果在后面都找不到,設(shè)為999
3.IN函數(shù)的構(gòu)建int IN(int a[3],int temp){//判斷需要頂替的頁(yè)面是否在內(nèi)部
int flag=0;
for(int i=0;i<3;i++){
if(a[i]==temp){
flag=1;
break;
}
}
return flag;
}
IN函數(shù)輸入為內(nèi)存的三個(gè)頁(yè)面以及即將進(jìn)入內(nèi)存的頁(yè)面,是為了判斷內(nèi)存頁(yè)面中是否和它重復(fù)
如果重復(fù),則flag置為1,否則不變,還是0,最后返回flag
4.print函數(shù)的構(gòu)建void print(int a[3],int b[100],int n,int start){
int c[3]={0},m;
if(IN(a,b[start])==0){//如果不在內(nèi)部,則需要更改
found(a,b,start,n,c);
m=max(c);
a[m]=b[start];
}
cout<<"現(xiàn)在進(jìn)入第"<輸入為數(shù)組a(處于內(nèi)存中的三個(gè)頁(yè)面),數(shù)組b(即將要進(jìn)入內(nèi)存的頁(yè)面總集),start(數(shù)組b中要進(jìn)入內(nèi)存的第start個(gè)),n(頁(yè)面總數(shù))
定義數(shù)組c,用來(lái)儲(chǔ)存內(nèi)存三個(gè)頁(yè)面對(duì)應(yīng)的距離下一次使用的時(shí)間,其實(shí)是從b中0開始的索引值
如果即將進(jìn)入內(nèi)存的頁(yè)面在內(nèi)存中,則無(wú)需更改
否則需要調(diào)用found來(lái)找到需要替換的頁(yè)面,并更改
最后輸出
5.主函數(shù)的構(gòu)建int main(){
int a[3],b[100],n;
for(int i=0;i<3;i++){
cout<<"請(qǐng)輸入第"<>a[i];
}
cout<<"現(xiàn)在系統(tǒng)內(nèi)的三個(gè)頁(yè)面為:"<>n;
for(int i=0;i>b[i];
}//需要所有進(jìn)程輸入完才能判斷誰(shuí)用的時(shí)間久
for(int i=0;i
6.總代碼#includeusing namespace std;
int max(int c[3]){//找出內(nèi)存三個(gè)頁(yè)面距離下一次使用時(shí)間最長(zhǎng)的頁(yè)面索引
int temp=c[0],index=0;
for(int i=1;i<3;i++){
if(c[i]>temp){
temp=c[i];
index=i;
}
}
return index;
}
void found(int a[3],int b[100],int start,int n,int c[3]){//尋找頁(yè)面內(nèi)三個(gè)進(jìn)程距離下一次使用的時(shí)間
for(int i=0;i<3;i++){
for(int j=start+1;ja[i];
}
cout<<"現(xiàn)在系統(tǒng)內(nèi)的三個(gè)頁(yè)面為:"<>n;
for(int i=0;i>b[i];
}//需要所有進(jìn)程輸入完才能判斷誰(shuí)用的時(shí)間久
for(int i=0;i
5.測(cè)試結(jié)果及其分析測(cè)試數(shù)據(jù)就用實(shí)驗(yàn)要求給出的
測(cè)試結(jié)果分析
起始 輸入1 2 5 1 4 2 1 4 5 a[0] 1 1(2) 1(2) 1 1 1(6) 1 1 1(999) 5 a[1] 4 4(3) 4(3) 4 4 4(7) 4 4 4(999) 4 a[2] 3 3 (999) 2(4) 5 5 5(8) 2 2 2(999) 2
最近最久未使用頁(yè)面置換算法(C語(yǔ)言)——大三操作系統(tǒng)實(shí)驗(yàn)_西瓜妹妹的唯一男朋友的博客-博客
???????先進(jìn)先出算法(c語(yǔ)言)——大三操作系統(tǒng)實(shí)驗(yàn)_西瓜妹妹的唯一男朋友的博客-博客?
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享名稱:最佳置換算法(C語(yǔ)言)——大三操作系統(tǒng)實(shí)驗(yàn)-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/dhjseh.html