《實(shí)驗(yàn)五:頁(yè)面調(diào)度算法模擬 實(shí)驗(yàn)資料報(bào)告材料》由會(huì)員分享,可在線閱讀,更多相關(guān)《實(shí)驗(yàn)五:頁(yè)面調(diào)度算法模擬 實(shí)驗(yàn)資料報(bào)告材料(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、word
《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)五:頁(yè)面調(diào)度算法模擬
學(xué)校:╳╳╳
院系:╳╳╳
班級(jí):╳╳╳
:╳╳╳
學(xué)號(hào):╳╳╳
指導(dǎo)教師:╳╳╳
目 錄
一、實(shí)驗(yàn)題目3
二、實(shí)驗(yàn)學(xué)時(shí)3
三、指導(dǎo)教師3
四、實(shí)驗(yàn)日期3
五、實(shí)驗(yàn)?zāi)康?
六、實(shí)驗(yàn)原理3
頁(yè)面的含義3
6.2 頁(yè)面置換算法的含義3
6.3置換算法3
最優(yōu)置換算法(Optimal)3
先進(jìn)先出(FIFO)頁(yè)面置換算法3
6.3.3 LRU置換算法4
七、實(shí)驗(yàn)步驟與結(jié)果4
7.1 驗(yàn)證最優(yōu)置換算法4
7.1.1 實(shí)驗(yàn)截圖4
7.1.2 實(shí)驗(yàn)
2、分析4
7.2 驗(yàn)證先進(jìn)先出(FIFO)頁(yè)面置換算法5
7.2.1 實(shí)驗(yàn)截圖5
7.2.2 實(shí)驗(yàn)分析5
7.3 驗(yàn)證LRU置換算法6
7.3.1 實(shí)驗(yàn)截圖6
7.3.2 實(shí)驗(yàn)分析6
八、報(bào)告書寫人6
附錄一 最優(yōu)置換算法(Optimal)7
附錄二 先進(jìn)先出(FIFO)頁(yè)面置換算法10
附錄三 LRU置換算法13
實(shí)驗(yàn)五:頁(yè)面調(diào)度算法模擬
一、實(shí)驗(yàn)題目
頁(yè)面調(diào)度算法模擬
二、實(shí)驗(yàn)學(xué)時(shí)
2學(xué)時(shí)
三、指導(dǎo)教師
╳╳╳
四、實(shí)驗(yàn)日期
2018年12月10日星期一
五、實(shí)驗(yàn)?zāi)康?
(1)熟悉操作系統(tǒng)頁(yè)面調(diào)度算法
(2)編寫程序模擬
3、先進(jìn)先出、LRU等頁(yè)面調(diào)度算法,體會(huì)頁(yè)面調(diào)度算法原理
六、實(shí)驗(yàn)原理
頁(yè)面的含義
分頁(yè)存儲(chǔ)管理將一個(gè)進(jìn)程的邏輯地址空間分成假設(shè)干大小相等的片,稱為頁(yè)面或頁(yè)。
6.2 頁(yè)面置換算法的含義
在進(jìn)程運(yùn)行過(guò)程中,假設(shè)其所要訪問(wèn)的頁(yè)面不在存而需把它們調(diào)入存,但存已無(wú)空閑空間時(shí),為了保證該進(jìn)程能正常運(yùn)行,系統(tǒng)必須從存中調(diào)出一頁(yè)程序或數(shù)據(jù),送磁盤的對(duì)換區(qū)中。但應(yīng)將哪個(gè)頁(yè)面調(diào)出,須根據(jù)一定的算法來(lái)確定。通常,把選擇換出頁(yè)面的算法稱為頁(yè)面置換算法(Page_Replacement Algorithms)。
6.3置換算法
一個(gè)好的頁(yè)面置換算法,應(yīng)具有較低的頁(yè)面更換頻率。從理論上講,應(yīng)將那些以后不再會(huì)
4、訪問(wèn)的頁(yè)面換出,或?qū)⒛切┰谳^長(zhǎng)時(shí)間不會(huì)再訪問(wèn)的頁(yè)面調(diào)出。
最優(yōu)置換算法(Optimal)
它是由Belady于1966年提出的一種理論上的算法。其所選擇的被淘汰頁(yè)面,將是以后永不使用的或許是在最長(zhǎng)(未來(lái))時(shí)間不再被訪問(wèn)的頁(yè)面。采用最優(yōu)置換算法,通常可保證獲得最低的缺頁(yè)率。但由于人目前還無(wú)法預(yù)知一個(gè)進(jìn)程在存的假設(shè)干個(gè)頁(yè)面中,哪一個(gè)頁(yè)面是未來(lái)最長(zhǎng)時(shí)間不再被訪問(wèn)的,因而該算法是無(wú)法實(shí)現(xiàn)的,便可以利用此算法來(lái)評(píng)價(jià)其它算法。
先進(jìn)先出(FIFO)頁(yè)面置換算法
這是最早出現(xiàn)的置換算法。該算法總是淘汰最先進(jìn)入存的頁(yè)面,即選擇在存中駐留時(shí)間最久的頁(yè)面予以淘汰。該算法實(shí)現(xiàn)簡(jiǎn)單只需把一個(gè)進(jìn)程已調(diào)入存的頁(yè)面
5、,按先后次序成一個(gè)隊(duì)列,并設(shè)置一個(gè)指針,稱為替換指針,使它總是指向最老的頁(yè)面。
6.3.3 LRU置換算法
LRU置換算法是選擇最近最久未使用的頁(yè)面予以淘汰。
七、實(shí)驗(yàn)步驟與結(jié)果
7.1 驗(yàn)證最優(yōu)置換算法
7.1.1 實(shí)驗(yàn)截圖
7.1.2 實(shí)驗(yàn)分析
in
7
2
7
7
1
0
4
4
0
8
0
4
b1
7
7
7
7
4
4
b2
2
2
2
2
8
b3
1
1
1
1
b4
0
0
6、
0
out
7
2
7.2 驗(yàn)證先進(jìn)先出(FIFO)頁(yè)面置換算法
7.2.1 實(shí)驗(yàn)截圖
7.2.2 實(shí)驗(yàn)分析
in
1
0
3
3
8
0
8
1
2
0
5
6
b1
1
1
1
1
2
2
2
b2
0
0
0
0
5
5
b3
3
3
3
3
6
b4
8
8
8
8
out
7、
1
0
3
7.3 驗(yàn)證LRU置換算法
7.3.1 實(shí)驗(yàn)截圖
7.3.2 實(shí)驗(yàn)分析
in
9
6
8
7
7
3
7
1
2
6
7
0
b1
9
9
9
9
3
3
3
6
6
b2
6
6
6
6
1
1
1
0
b3
8
8
8
8
2
2
2
b4
7
7
7
7
7
7
out
9
6
8
3
1
八、報(bào)告書寫人
8、╳╳╳
附錄一 最優(yōu)置換算法(Optimal)
#include
#include
#include
#define N 12 /*隨機(jī)數(shù)列的長(zhǎng)度*/
#define B 4 /*存頁(yè)面數(shù)*/
int IsInBuf(int buf[],int list[],int num)
{
int i,j=-1;
int max_p;
int max_d=0;
for(i=0;i
9、uf中,返回-1
return -1;
else if(buf[i]==-1) //當(dāng)x不在buf中,且buf[i]為空,如此把x填入buf,并返回-1
{
buf[i]=list[num];
return -2;
}
}
for(i=0;i
10、buf[]的位置
}
break;
}
}
if(j==N) //如果buf滿,并且buf[i]不在list[]的后半局部,返回位置i
return i;
}
return max_p;//返回距離最遠(yuǎn)的buf[]的位置
}
int main()
{
int list[N];//={4,3,2,1,4,3,5,4,3,2,1,5};
int buf[B],i,f[N],j,m,bufuse=0,tmp;
int change=0; //置換次數(shù)
int interrupt=0; //中斷次數(shù)
int
11、 successfully=0; //訪問(wèn)成功次數(shù)
srand((int)time(NULL));
for(i=0;i
12、
j=IsInBuf(buf,list,i);
if(j==-1){
successfully++;
for(m=0;m<=B;m++){
printf(" "); /*成功的打印*/
}
printf(" in<--%d successfully\n",list[i]);/*成功的打印*/
}
else if(j==-2)
{
bufuse++;
interrupt++;
printf("newbuf=");
for(m=0;m
13、 printf("%d ",buf[m]); /*缺頁(yè)中斷次數(shù)的打印*/
}
for(m;m
14、",buf[m]); /*缺頁(yè)置換的打印*/
}
for(m;mout\n",list[i],tmp);/*缺頁(yè)置換的打印*/
}
}
printf("\n\n");
printf("interrupt=%d\n",interrupt);
printf("change=%d\n",change);
printf("successfully=%d\n",successfully)
15、;
return 0;
}
附錄二 先進(jìn)先出(FIFO)頁(yè)面置換算法
#include
#include
#include
#define N 12 /*隨機(jī)數(shù)列的長(zhǎng)度*/
#define B 4 /*存頁(yè)面數(shù)*/
int IsInBuf(int buf[],int x)
{
int i;
for(i=0;i
16、[i]==-1) /*當(dāng)x不在buf中,且buf[i]為空,如此把x填入buf,并返回其位置*/
{
buf[i]=x;
return -2;
}
}
return 0;
}
int main()
{
int list[N];//={4,3,2,1,4,3,5,4,3,2,1,5};
int buf[B],i,f[N],j,m,bufuse=0,tmp;
int old=0;
int change=0; //置換次數(shù)
int interrupt=0; //中斷次數(shù)
int successfully=0; //訪問(wèn)成功次
17、數(shù)
srand((int)time(NULL));
for(i=0;i
18、 if(j==-1){
successfully++;
for(m=0;m<=B;m++){
printf(" "); /*成功的打印*/
}
printf(" in<--%d successfully\n",list[i]);/*成功的打印*/
}
else if(j==-2)
{
bufuse++;
interrupt++;
printf("newbuf=");
for(m=0;m
19、頁(yè)中斷次數(shù)的打印*/
}
for(m;m
20、{
printf("%d ",buf[m]); /*缺頁(yè)置換的打印*/
}
for(m;mout\n",list[i],tmp);/*缺頁(yè)置換的打印*/
}
}
printf("\n\n");
printf("interrupt=%d\n",interrupt);
printf("change=%d\n",change);
printf("successfully=
21、%d\n",successfully);
return 0;
}
附錄三 LRU置換算法
#include
#include
#include
#define N 12 /*隨機(jī)數(shù)列的長(zhǎng)度*/
#define B 4 /*存頁(yè)面數(shù)*/
int IsInBuf(int buf[],int list[],int num)
{
int i,j=-1;
for(i=0;i
22、[num]) /*當(dāng)x在buf中,返回其位置*/
{
j=i;
break;
}
else if(buf[i]==-1) /*當(dāng)x不在buf中,且buf[i]為空,如此把x填入buf,并返回其位置*/
{
buf[i]=list[num];
j=-2;
break;
}
}
return j;
}
int Get(int buf[],int list[],int num)
{
int buff[B];
int buffuse=0;
int i,j,k,m;
for(m=0;m
23、++)
buff[m]=-1;
for(i=num-1;i>=0;i--)
{
for(j=0;j
24、 break;
}
}
}
return 0;
}
int main()
{
int list[N];
//int list[12]=
int buf[B],i,f[N],j,m,bufuse=0,tmp;
int old=0;
int change=0;
int interrupt=0;
int successfully=0;
srand((int)time(NULL));
for(i=0;i
25、0;i
26、 printf("newbuf=");
for(m=0;mout\n",list[i],tmp);/*缺頁(yè)置換的打印*/
}
else if(j==-2)
{
bufuse++;
interrupt++;
printf("newbuf
27、=");
for(m=0;m