天天看點

頁面置換算法實驗報告C語言,作業系統頁面置換算法實驗報告.doc

作業系統頁面置換算法實驗報告,頁面置換算法實驗報告,18,作業系統頁面置換算法,頁面置換算法,lru頁面置換算法,最佳頁面置換算法,fifo頁面置換算法,頁面置換算法代碼,opt頁面置換算法

學 生 實 驗 報 告

姓名: 年級專業班級 學号 成績

課程名稱作業系統實驗名稱實驗3 請求分頁系統的頁面置換算法 實驗類型驗證 設計

綜合 創新【實驗目的、要求】

1.通過程式設計實作請求分頁存儲管理系統的Optimal、FIFO、LRU排程算法,使學生掌握計算機虛拟存儲管理中有關缺頁處理方法等内容,鞏固有關虛拟存儲管理的知識。2.了解Windows2000/XP中記憶體管理機制,掌握頁式虛拟存儲技術。3.了解記憶體配置設定原理,特别是以頁面為機關的虛拟記憶體配置設定方法。

【實驗内容】

在Windows XP或Windows 2000等作業系統環境下,使用VC、VB、Delphi、java或C等程式設計語言,實作請求分頁存儲管理系統的Optimal、FIFO、LRU排程算法。

【實驗環境】(含主要設計裝置、器材、軟體等)

計算機 C語言程式設計軟體

【實驗步驟、過程】(含原理圖、流程圖

1.啟動計算機,運作C語言程式設計軟體。

2.分析了解頁面的幾種基本算法的特點和原理,在紙上畫出原理圖。

3.編輯源程式,關鍵代碼如下。

(1)先進先出頁面置換算法。

#include

void main()

{

int i,n,t,k=3,a[100];

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

for(i=3;i

if(a[i]!=a[0]&&a[i]!=a[1]&&a[i]!=a[2]) //該頁面在記憶體中,不需要置換。

{

t=a[i];

a[i]=a[k%3]; //通過對k值對3取餘的值來确定需要置換的目前頁面。

a[k%3]=t;

k++; //僅當發生了頁面置換時,k的值才發生改變。

printf("%d %d %d\n",a[0],a[1],a[2]);

}

else

{

printf("%d %d %d\n",a[0],a[1],a[2]);

}

}

(2)最佳置換算法

#include

void main()

{

int i,j,,n,a[100];

int c1,c2,c3; // 标志該頁面再次被通路時在引用串中的位置

int p,k,r;

printf("請輸入頁面數:\n");

scanf("%d",&n);

printf("請輸入頁面号引用串:\n");

for(i=0;i

scanf("%d",&a[i]);

for(j=3;j

{

if((a[j]!=a[0])&&(a[j]!=a[1])&&(a[j]!=a[2])) //頁面在記憶體不發生置換!

{

for(p=j;p

if(a[0]==a[p])

{c1=p;

break; //跳出循環,直接置c1=n!

}else c1=n; //标志該頁面再次被通路時在引用串中的位置!若該頁面不會再次被通路,則将c1置為最大n!

for(k=j;k

if(a[1]==a[k])

{ c2=k;

break;}

else

c2=n;

for(r=j;r

if(a[2]==a[r])

{c3=r;

break;

}

else c3=n; //通過比較c1,c2,c3的大小确定最長時間内不再通路的頁面!

if((c1>c2)&&(c1>c3)||(c1==c3)||(c1==c2)) //目前a[0]頁面未來最長時間不再通路!

{

t=a[j];

a[j]=a[0];

a[0]=t; //把目前通路頁面和最佳頁面交換!

printf("%d %d %d\n",a[0],a[1],a[2]);

}

if((c2>c1)&&(c2>c3)||(c2==c3)) //目前a[1]頁面未來最長時間不