設計程式模擬先進先出fifo、最佳置換opi和最近最久未使用lru頁面置換演算法的工作過程。假設記憶體中分配給每個程序的最小物理塊數為m,在程序執行過程中要訪問的頁面個數為n,頁面訪問序列為p1, … ,pn,分別利用不同的頁面置換演算法排程程序的頁面訪問序列,給出頁面訪問序列的置換過程,計算每種演算法缺頁次數和缺頁率。
#include
#include
#include
using
namespace std;
#define maxnum 100
int processnum;
//頁面個數
int process[maxnum]
;//頁面序列
int spacenum;
//最小物理塊
bool
notcontain
(int spacenum,
int space,
int processs)
}return flag;
}void
fifo
(int processnum,
int process,
int spacenum)
bool notcontain;
cout<<
"---------fifo---------"
0; i < processnum; i++
)else
}else
else
}for
( k =
0; k < spacenum; k++
) cout<} cout<<
"缺頁率:"
<<
double
(count)
/processnum
"--------------------------"
<}void
lru(
int processnum,
int process,
int spacenum)
cout<<
"---------lru---------"
0; i < processnum; i++
)else
if(notcontain && space[j]==-
1)else
}//獲得未被訪問次數最大的頁面所存放的物理塊位置
if(count[j]
> flag)}if
(notcontain)
for( k =
0; k < spacenum; k++
) cout<} cout<<
"缺頁率:"
<<
double
(count1)
/processnum
"------------------------"
<}void
opti
(int processnum,
int process,
int spacenum)
cout<<
"---------optimal---------"
0; i < processnum; i++
)else
if(notcontain && space[j]==-
1)} max =0;
if(notcontain)
if(max < h)
} space[flag]
= process[i]
;//進行頁面置換
++count1;
//發生缺頁的記錄+1
cout<<
"第"<1<<
"次:發生缺頁:";}
for( k =
0; k < spacenum; k++
) cout<}
cout<<
"缺頁率:"
<<
double
(count1)
/processnum
"-------------------------"
<}int
main
(int argc,
char
* ar**)
//int processnum = 20;
// int process = ;
// int spacenum = 3;
cout<<
"請輸入物理塊數:"
; cin>>spacenum;
while(1
)else
if(i ==2)
else
if(i ==3)
else
}return0;
}```
作業系統之虛擬記憶體
文章開頭,我們先來介紹一下幾種常見的記憶體管理機制 簡單分為連續分配管理方式和非連續分配管理方式這兩種。塊式管理 遠古時代的計算機操系統的記憶體管理方式。將記憶體分為幾個固定大小的塊,每個塊中只包含乙個程序。如果程式執行需要記憶體的話,作業系統就分配給它一塊,如果程式執行只需要很小的空間的話,分配的...
虛擬記憶體之頁面置換演算法
四種頁面置換演算法 一 最佳置換演算法 opt 策略選擇置換下次訪問距當前時間最長的那些頁,可以看出該演算法能導致最少的缺頁中斷,但是由於它要求作業系統必須知道將來的事件,顯然這是不可能實現的。但它仍然能作為一種標準來衡量其他演算法的效能。二 最近最少使用演算法 lru 策略置換記憶體中上次使用距當...
作業系統 虛擬記憶體
1.虛擬記憶體術語 虛擬記憶體 程式引用記憶體使用位址與記憶體系統用於識別物理儲存站點的位址是不同的,程式生成的位址會自動轉換成機器指令。虛擬記憶體的大小收到定址機制和可用的備用記憶體量的限制,而不受記憶體儲存位置實際數量的限制。虛擬位址 在虛擬記憶體中分配給某一位置的位址使該位置可以被訪問,彷彿它...