資源簡介
模擬實現虛擬分頁存儲管理的基本功能,包括內存的分配、內存的回收、地址變換,在發生缺頁時采用LRU頁面置換算法。
顯示每一次內存分配和回收后內存的使用狀況,每一個進程占據的內存(頁表),計算給定的邏輯地址對應的物理地址。

代碼片段和文件信息
/*編寫程序模擬實現虛擬分頁存儲管理的基本功能,包括內存的分配、內存的回收、地址變換,在發生缺頁時采用頁面置換算法。
要求顯示每一次內存分配和回收后內存的使用狀況,每一個進程占據的內存(頁表),計算給定的邏輯地址對應的物理地址。
系統分配的物理塊數由程序指定,要求支持以下兩種頁面置換算法中的一種:
(1)FIFO頁面置換算法:
(2)LRU頁面置換算法:
要求輸入每個進程的頁面引用序列,顯示每一次頁面引用內存狀態,最后統計出頁面置換算法頁面置換的次數。
*/
#include
#include“Basic_Proc.h“
void?main()
{
PCB?test[5];
for(int?i=0;i<5;i++)
{
test[i].PID=i;
test[i].Alloc=0;
}
Init();
for(int?i=0;i<5;i++)
Load(&test[i]);
//excute(test[0]);
Alloc_Mem_VM(1024*998test[0]);
Free_Mem_VM(27*10241024test[0]);
system(“pause“);
Alloc_Mem_VM(1024*998test[1]);
for(int?i=25;i<99;i++)
Access(i*1024test[1]);
Access(53*1024test[1]);
Access(54*1024test[1]);
????Access(55*1024test[1]);
Access(450*1024test[1]);
system(“pause“);
Alloc_Mem_VM(1024*998test[2]);
for(int?i=25;i<99;i++)
Access(i*1024test[2]);
printf(“兩個進程訪問同一虛擬地址\n“);
printf(“進程1\n“);
Access(490*1024test[1]);
printf(“進程2\n“);
Access(490*1024test[2]);
system(“pause“);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1237??2014-01-09?11:23??MEM_MANGE.cpp
?????文件????????927??2014-01-07?19:16??Basic_DataStructure.h
?????文件???????7139??2014-01-09?13:26??Basic_Proc.h
-----------?---------??----------?-----??----
?????????????????9303????????????????????3
評論
共有 條評論