《實(shí)驗(yàn)五:頁面調(diào)度算法模擬 實(shí)驗(yàn)資料報(bào)告材料》由會(huì)員分享,可在線閱讀,更多相關(guān)《實(shí)驗(yàn)五:頁面調(diào)度算法模擬 實(shí)驗(yàn)資料報(bào)告材料(23頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、word
《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)五:頁面調(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
頁面的含義3
6.2 頁面置換算法的含義3
6.3置換算法3
最優(yōu)置換算法(Optimal)3
先進(jìn)先出(FIFO)頁面置換算法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)頁面置換算法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)頁面置換算法10
附錄三 LRU置換算法13
實(shí)驗(yàn)五:頁面調(diào)度算法模擬
一、實(shí)驗(yàn)題目
頁面調(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)頁面調(diào)度算法
(2)編寫程序模擬
3、先進(jìn)先出、LRU等頁面調(diào)度算法,體會(huì)頁面調(diào)度算法原理
六、實(shí)驗(yàn)原理
頁面的含義
分頁存儲(chǔ)管理將一個(gè)進(jìn)程的邏輯地址空間分成假設(shè)干大小相等的片,稱為頁面或頁。
6.2 頁面置換算法的含義
在進(jìn)程運(yùn)行過程中,假設(shè)其所要訪問的頁面不在存而需把它們調(diào)入存,但存已無空閑空間時(shí),為了保證該進(jìn)程能正常運(yùn)行,系統(tǒng)必須從存中調(diào)出一頁程序或數(shù)據(jù),送磁盤的對(duì)換區(qū)中。但應(yīng)將哪個(gè)頁面調(diào)出,須根據(jù)一定的算法來確定。通常,把選擇換出頁面的算法稱為頁面置換算法(Page_Replacement Algorithms)。
6.3置換算法
一個(gè)好的頁面置換算法,應(yīng)具有較低的頁面更換頻率。從理論上講,應(yīng)將那些以后不再會(huì)
4、訪問的頁面換出,或?qū)⒛切┰谳^長(zhǎng)時(shí)間不會(huì)再訪問的頁面調(diào)出。
最優(yōu)置換算法(Optimal)
它是由Belady于1966年提出的一種理論上的算法。其所選擇的被淘汰頁面,將是以后永不使用的或許是在最長(zhǎng)(未來)時(shí)間不再被訪問的頁面。采用最優(yōu)置換算法,通??杀WC獲得最低的缺頁率。但由于人目前還無法預(yù)知一個(gè)進(jìn)程在存的假設(shè)干個(gè)頁面中,哪一個(gè)頁面是未來最長(zhǎng)時(shí)間不再被訪問的,因而該算法是無法實(shí)現(xiàn)的,便可以利用此算法來評(píng)價(jià)其它算法。
先進(jìn)先出(FIFO)頁面置換算法
這是最早出現(xiàn)的置換算法。該算法總是淘汰最先進(jìn)入存的頁面,即選擇在存中駐留時(shí)間最久的頁面予以淘汰。該算法實(shí)現(xiàn)簡(jiǎn)單只需把一個(gè)進(jìn)程已調(diào)入存的頁面
5、,按先后次序成一個(gè)隊(duì)列,并設(shè)置一個(gè)指針,稱為替換指針,使它總是指向最老的頁面。
6.3.3 LRU置換算法
LRU置換算法是選擇最近最久未使用的頁面予以淘汰。
七、實(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)頁面置換算法
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 /*存頁面數(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; //訪問成功次數(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]); /*缺頁中斷次數(shù)的打印*/
}
for(m;m
14、",buf[m]); /*缺頁置換的打印*/
}
for(m;mout\n",list[i],tmp);/*缺頁置換的打印*/
}
}
printf("\n\n");
printf("interrupt=%d\n",interrupt);
printf("change=%d\n",change);
printf("successfully=%d\n",successfully)
15、;
return 0;
}
附錄二 先進(jìn)先出(FIFO)頁面置換算法
#include
#include
#include
#define N 12 /*隨機(jī)數(shù)列的長(zhǎng)度*/
#define B 4 /*存頁面數(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; //訪問成功次
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、頁中斷次數(shù)的打印*/
}
for(m;m
20、{
printf("%d ",buf[m]); /*缺頁置換的打印*/
}
for(m;mout\n",list[i],tmp);/*缺頁置換的打印*/
}
}
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 /*存頁面數(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);/*缺頁置換的打印*/
}
else if(j==-2)
{
bufuse++;
interrupt++;
printf("newbuf
27、=");
for(m=0;m