導航:首頁 > 物理學科 > 頁面調度演算法如何寫物理頁

頁面調度演算法如何寫物理頁

發布時間:2023-04-10 00:52:05

A. 頁面調度演算法的實驗內容

(1)設計程序實現以上三種頁面調度演算法,要求:
①.可以選擇頁面調度演算法類型;
②.可以為進程設置分到物理頁的數目,設置進程的頁面引用情況,可以從鍵盤輸入頁面序列,也可從文件中讀取;
③.隨時計算當前的頁面調度次數的缺頁中斷率;乎銷
④.使用敲鍵盤或響應WM-TIMER的形式模仿時間的流逝;
⑤.以直觀的的形式將程序的執行情況顯示在計算機屏幕上;
⑥.存檔及讀盤功能,可以隨時將數據存入磁碟文件,供以後重復實驗時使用。
(2)假定進程分配到3個物理塊,對於下面的頁面引用序列:
7-0-1-2-0-3-0-4-2-3-0-3-2-1-2-0-1-7-0-1
請分別用先進和先出調度演算法,最近最少用調度演算法,最近最不常用調度演算法計算缺頁中斷次數,缺頁中斷率和缺頁調度次數、缺頁置換率。
再假定進程分配到4、5個物理塊,重復本實驗。
(3)假定進程分配到3個物理塊,對於下面的頁面引用序列:
4-3-2-1-4-3-5-4-3-2-1-5-0-7-3-8-9-0-2-1-4-7-3-9
請分別用先進裂叢先出調度演算法、最近最少用調度演算法,最近最不常用調度演算法計算缺頁中斷次數,缺頁中斷率和缺頁調度次數、缺頁置換率。
再假定進程分配到4、5個物理塊,重復本實驗。
(4)假定進程分配到3個物理塊,使用程序的動態頁面序列生成演算法,生成一個頁面序列,將此序列存歲源游入磁碟文件。再從磁碟文件讀入該序列,用程序分別計算三種演算法下的缺頁中斷次數、缺頁中斷率和缺頁調度次數、缺頁置換率。

B. 操作系統頁面置換題演算法、步驟

好好看看 孫忠秀《操作系統》吧!授之以漁!如果你想要Q我,我傳給你!

C. 頁面調度演算法的介紹

頁式虛擬存儲器實現的一個難點薯游是設計頁面調度(置換)演算法,即將新頁面調入內存時,如果內存中所有的物理頁都已經喚培分配出去,就要按某數鏈銷種策略來廢棄某個頁面,將其所佔據的物理頁釋放出來,供新頁面使用。

D. 頁面調度演算法的實驗原理

目前有許多頁面調度演算法,本實驗主要涉及先進先出調度演算法、最近最少調度演算法、最近最不常用調度演算法。本實驗使用頁面調度演算法時作如下假灶迅設,進程在創建時由操作系統為之分配一個固定數目物理頁,執行過程中物理頁的數目和位置不會改變。也即進程進行頁面調度時只能在分宴辯首到的幾個物理頁中進行。
下面對各調度演算法的思想作一介紹。
<1> 先進先出調度演算法
先進先出調度演算法根據頁面進入內存的時晌數間先後選擇淘汰頁面,先進入內存的頁面先淘汰,後進入內存的後淘汰。本演算法實現時需要將頁面按進入內存的時間先後組成一個隊列,每次調度隊首頁面予以淘汰。
<2>最近最少調度演算法
先進先出調度演算法沒有考慮頁面的使用情況,大多數情況下性能不佳。根據程序執行的局部性特點,程序一旦訪問了某些代碼和數據,則在一段時間內會經常訪問他們,因此最近最少用調度在選擇淘汰頁面時會考慮頁面最近的使用,總是選擇在最近一段時間以來最少使用的頁面予以淘汰。演算法實現時需要為每個頁面設置數據結構記錄頁面自上次訪問以來所經歷的時間。
<3>最近最不常用調度演算法
由於程序設計中經常使用循環結構,根據程序執行的局部性特點,可以設想在一段時間內經常被訪問的代碼和數據在將來也會經常被訪問,顯然這樣的頁面不應該被淘汰。最近最不常用調度演算法總是根據一段時間內頁面的訪問次數來選擇淘汰頁面,每次淘汰訪問次數最少的頁面。演算法實現時需要為每個頁面設置計數器,記錄訪問次數。計數器由硬體或操作系統自動定時清零。 缺頁中斷次數是缺頁時發出缺頁中斷的次數。
缺頁中斷率=缺頁中斷次數/總的頁面引用次數*100%
缺頁調度次數是調入新頁時需要進行頁面調度的次數
缺頁置換率=缺頁調度次數/總的頁面引用次數*100%

E. 頁面置換策略

當缺頁中斷發生時,當你有很多內存時,可以從空閑頁鏈表中取出一個空閑頁映射到虛擬頁。當內存不足時,會發生頁面置換。由於訪問磁碟的時間比訪問內存的時間慢10萬倍(磁碟時間:10ms,內存時間:100ns),哪怕SSD也就只有普通磁碟的10倍速度以上。平均訪問時間 = 訪問RAM的時間+ 丟失率*訪問DISK時間,而訪問磁碟時間為內存時間的幾萬倍,所以降低丟失率,哪怕很小的比重,都對平均訪問時間有個很大的提升。所以一個好的頁面置換演算法尤為重要。
一個比較理想的演算法應該是,要置換出去的頁面,最遠的講來才會用到的頁面。但是因為無法預測未來所以我們的演算法應該盡量往這個演算法身上去靠攏接近這個演算法的效率。
現在想引入的置換是LRU,這個演算法的原來通過過去的行為來預測未來,意思就是過去很少用到的頁面,講來也很少用到,這個演算法的根據就是「局部性原則」,如何量化「很少使用」這個概率,可以基於使用頻率或者最遠使用時間。所以就誕生了2中演算法,LFU(Least-Frequently-Used)以及LRU(Least-RecentlyUsed )演算法。

可以觀察圖得出隨著cache大小足夠容納所需要的內存時,就不會發生頁面置換,不論哪個演算法都是100%Hit的,但是其他的情況時,LRU時最接近理想演算法(OPT)的。由於上面的平均訪問時間的公式我們可以知道,哪怕稍微一點點的提升命中率都是對平均訪問時間的提升都是巨大的。

也有些程序運行並不是按照局部性原則運行的,比如重復遍歷一個數組,這個完全違法局部性原則,所以OPT類的演算法反而性能最差。這個也說明了任何一種策略都是一定的適用場景的。

上述分析過了LRU的優劣勢,現在談談如何實現LRU。如果要完美的實現LRU,必須要再每次內存訪問的時候(指令獲取,讀以及寫)都要把當前頁移動到鏈表的頭部來。這個做法毫無疑問的會消耗很大的性能。一種方式是獲取硬體的某種支持,當要給一個物理頁被訪問時,會再某個存儲再地方打上內存的標記。然後需要進行淘汰時,遍歷下查找最晚訪問的頁面。這個遍歷過程時很消耗性能的,尤其頁面總數很大的時候。所以這兩個方法都不合適。
很難實現准確的LRU演算法,近似的LRU來替代,而且能解決掉LRU的性能熱點問題,現代操作系統中也基本都是採用這個方法。這種想法需要一些硬體的支持,需要一些bit來表示,這個頁面是否訪問過,當這個物理頁被訪問時,這個use bit會標記1,清除為0的任務就交給操作系統。假設所有的物理頁的使用位都被安排再一個環形的鏈表中,操作系統會周期性的清除use bit 從1到0,當發生需要頁面置換時的場景時,如果遇到的下個頁面如果不是0的話,也會按照逆時針方向去清除use bit位,直到遇到use bit為0.

當頁面內容被修改(dirty)時,如果發生頁面置換時,需要把頁面內容寫入磁碟,寫入磁碟的速度是很慢的,所以有的系統會優先考慮沒被修改的頁面來置換。

當然使用頁表項里的use bit來實現LRU,並不是唯一的近似方法,還有比如多級鏈表等等方式。

手機操作系統IOS或者android系統,對延遲要蠢含求很高的,如果發生頁面置換,一瞬間會有很大延遲。所以手機系統,再內存低於一定明逗閥值時,會通知正在運行的系統去釋放內存,如果釋放的內存不夠,就會直接終止內存佔用高的應用程序,來滿足系統的內存需求。而傳統型的操作系統需要應用的面很廣,所以需要做的滿足的場景要廣激檔賣泛,不像手機操作系統,延遲性的高低直接帶來體驗的好差,所以延遲是手機系統設計中非常注重的一點。

F. 頁式存儲管理方案中的內存分配

#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#include<iomanip.h>
#include<stdlib.h>
const max=40;
const page_quantity=3;
typedef struct node
{
int number;
int timer;
}nodes;
nodes queues[max];//待替換的文件
int queue_quantity;
int pages[page_quantity];//物理頁面
void inital()
{
for(int i=0;i<max;i++)
{
queues[i].number=0;
queues[i].timer=i;
}
queue_quantity=0;
for(int j=0;i<page_quantity;j++)
{
pages[i]=0;
}
}

void readData()
{
cout<<"輸入進程A的頁面訪問序列文件(例:f1.txt)"<<endl;
char fname[20];
cin>>fname;
ifstream inf(fname,ios::nocreate);
if(!inf)
{
cout<<"文件不可讀,請稍後再試"<<endl;
}
while(!inf.eof())
{
inf>>queues[queue_quantity].number;
queue_quantity++;
}
cout<<"欲調用頁面流:"<<endl;
for(int i=0;i<queue_quantity;i++)
{
cout<<queues[i].number<<" ";
}
cout<<endl;

}
//最佳頁面調度演算法
void excellent()
{
cout<<"最佳頁面調度演算法"<<endl;
int absences=0;//缺頁次數
for(int i=0;i<page_quantity;i++)
{
pages[i]=queues[i].number;
absences++;
}
int qs=queue_quantity-3;
cout<燃伍<"命旦塵中以及置換出的頁模段禪面順序:"<<endl;
while(--qs)
{

int a[page_quantity]={0,0,0},x=0,tmp,tmps;
int flag=0;
for(int j=0;j<page_quantity;j++)
{
if(queues[i].number==pages[j])
{
cout<<"命中 ";
flag=1;
}
}
if(!flag)//沒有命中
{

for(int k=0;k<page_quantity;k++)
{
int p=0;
for(int l=i;l<queue_quantity;l++)
{
if((a[x]==0) && (pages[k]==queues[l].number))
{
a[x]=l;
p=1;
}
}
if(!p)
{
a[x]=1000;
}
x++;

}
int q1=0;
for(int x1=0;x1<page_quantity;x1++)
{
if(a[x1]==1000)
{
cout<<pages[x1]<<" ";
pages[x1]=queues[i].number;
q1=1;
break;

}
}
if(q1)
{
}
else
{
if(a[0]>a[1])
tmp=a[0];
else
tmp=a[1];
if(a[2]>tmp)
tmps=a[2];
else
tmps=tmp;
for(int a=0;a<page_quantity;a++)
{

if(pages[a]==queues[tmps].number)
{
cout<<pages[a]<<" ";
pages[a]=queues[i].number;
}

}

}
absences++;
}
i++;
}
cout<<endl;
cout<<"總的缺頁次數: "<<absences<<endl;
}
void main()
{
cout<<"=================虛擬頁面調度演算法模擬系統================="<<endl;
inital();
readData();
excellent();

}

G. 頁面調度先進先出演算法(FIFO) 用C語言描述 歡迎高手前來挑戰

c語言實現的頁面調度演算法,用三種演算法實衡大虛現調度咐燃1.先進先出2.OPT3.LRU 2.頁面序列從指定的文本文件(TXT文件)中取出3.輸出:第一行:仿畢每次淘汰的頁面號 第二行:顯示缺頁的總次數(上機已經運行通過!!)-pages scheling algorithm, a three-Scheling Algorithm 1. FIFO 2.OPT3.LRU 2. Pages from the designated sequence of text files (TXT) out of three. Output : the first line : each of the pages out of the second line : show na the total number of pages (on the plane had run through! !)

H. 進程/作業/頁面調度演算法

進程已獲得除CPU之外的所有必須資源,只等待操作系統利用CPU調度演算法將CPU分配給該進程以便執行。

進程等待某一特定事件的出現。如[I/O操作,在該過程中,進程依舊位於內存內,且佔有CPU資源。

(1)靜態優先數法:
一開始創建的時候就確定他的優先數,並在運行時保持不變。確定優先數時可以讓外設的進程優先,或者操作時間長的優先....

(2)動態優先數法:
克服無法修改優先數的問題。CPU佔用時間過長優先數下降,進程等待時間過長,優先數提高。

時間片太短切換開銷太大不劃算,太長又變成了FCFS。

引入多個就緒隊列,在時間片輪轉基礎上改進

最高優先順序隊列運行一個時間片,次高兩個,低優先順序四個。當該進程用完所分配時間片仍未執行完時,需要調入下一級隊列,下一級隊列只有在上一級隊列為空時才有機會執行。如果進程執行時有新進程進入上級優先順序渣燃返的隊列,則會中斷該進程並放入原隊列的隊尾然後執行新進程。

非搶占式的先來先服務(First Come First Severd, FCFS)演算法了。

顧名思義,先來後到,每次從就緒隊列選擇最先進入隊列的進程,然後一直運行,直到進程退出或被阻塞,才會繼續從隊列中選擇第一個進程接著運行。

這似乎很公平,但是當一個長作業先運行了,那麼後面的短作業等待的時間就會很長,不利於短作業。

最短作業優先(Shortest Job First, SJF)調度演算法同樣也是顧名思義,它會優先選擇運行時間最短的進程來運行,這有助於提高系統的吞吐量。

這顯然對長作業不利,很容易造成一種極端現象。

高響應比優先 (Highest Response Ratio Next, HRRN)調度演算法主要是權衡了短作業和長作業。

每次進行進程調度時,先計算「響應比優先順序」,然後把「響應比優先順序」最高的進程投入運行,「響應比優先順序」的計算公式:

最古老、最簡單、最公平且使用最廣的演算法就是時間片輪轉(Round Robin, RR)調度演算法。

時間片的長度就是一個很關鍵的點:

如果時間片設得太短會導致過多的進程上下文切換,降低了 CPU 效率;如果設得太長又可能引起對短作業進程的響應時間變長。

靜態優先順序:創建進程時候,就已經確定了優先順序了,然後整個運行時間優先順序都不會變化;

動態優先順序:根據進程的動態變化調整優先順序,比如如果進程運行時間增加,則降低其優先順序,如果進程等待時間(就緒隊列的等待時間)增加,則升高其優先順序,也就是隨著時間的推移增加等待進程的優先順序。

(1)非搶占式:當就緒隊列中出現優先順序高的進程,運行完當前進程,再選擇優先順序高的進程。
(2)搶占式:當就緒隊列中出現優先順序高的進程,當前進程掛起,調度優先順序高的進程運行。

但是依然有缺點,可能會導致低優先順序的進程永遠不會運行。

設置了多個隊列,賦予每個隊列不同的優先順序,每個隊列優先順序從高到低,同時優先順序越高時間片越短;

新的進程會被放入到第一級隊列的末尾,按先來先服務的原則排隊等待被調度,如果在第一級隊列規定的時間片沒運行完成,則將其轉入到第二級隊列的末尾,段談以此類推,直至完成;

當較高優先順序的隊列為空,才調度較低優先順序的隊列中的進程運行。如果進程運行時,有新進程進入較高優先順序的隊列,則停止當前運行的進程並將其移入到原隊列末尾,接著讓較高優先順序的進程運行。

對於短作業可能可以在第一級隊列很快被處理完。對於長作如飢業,如果在第一級隊列處理不完,可以移入下次隊列等待被執行,雖然等待的時間變長了,但是運行時間也會更長了,所以該演算法很好的兼顧了長短作業,同時有較好的響應時間。

每次選擇淘汰的頁面將是以後永不使用,或者在最長時間內不再被訪問的頁面,這樣可以保證最低的缺頁率。

最佳置換演算法可以保證最低的缺頁率,但是實際上,只有進程執行的過程中才能知道接下來會訪問到的是哪個頁面。操作系統無法提前預判頁面的訪問序列。因此,最佳置換演算法是無法實現的。

演算法思想:每次選擇淘汰的頁面是最早進入內存的頁面。

該演算法很簡單,每次淘汰最在內存中待時間最久的各個,下面分別給出系統為進程分為配三個內存塊和四個內存塊的執行情況圖。訪問序列為3,2,1,0,3,2,4,3,2,1,0,4

演算法思想:每次淘汰的頁面是最近最久未使用的頁面。

實現方法:賦予每個頁面對應的頁表項中,用訪問欄位記錄該頁面自上次被訪問以來所經歷的時間t。當需要淘汰一個頁面時,選擇現有頁面中t最大的頁面,即最近最久未使用。

最佳置換演算法性能最好,但無法實現。先進先出置換演算法實現簡單,但是演算法性能差。最近最久未使用置換演算法性能好,是最接近OPT演算法性能的,但是實現起來需要專門的硬體支持,演算法開銷大。時鍾置換演算法是一種性能和開銷均平衡的演算法。又稱CLOCK演算法,或最近未用演算法(NRU,Not Recently Used)

簡單CLOCK演算法演算法思想:為每個頁面設置一個訪問位,再將內存中的頁面都通過鏈接指針鏈接成一個循環隊列。當某個頁被訪問時,其訪問位置1.當需要淘汰一個頁面時,只需檢查頁的訪問位。如果是0,就選擇該頁換出;如果是1,暫不換出,將訪問位改為0,繼續檢查下一個頁面,若第一輪掃描中所有的頁面都是1,則將這些頁面的訪問位一次置為0後,再進行第二輪掃描(第二輪掃描中一定會有訪問位為0的頁面,因此簡單的CLOCK演算法選擇一個淘汰頁面最多會經過兩輪掃描)。

除了考慮一個頁面最近有沒有被訪問過之外,操作系統還需要考慮頁面有沒有被修改過。

改進型時鍾置換演算法的演算法思想:在其他在條件相同時,應該優先淘汰沒有被修改過的頁面,從而來避免I/O操作。

I. 操作系統原理與應用之 頁面調度演算法問題

FIFO:即先進先出演算法,就是先進去的頁在位置不夠時先淘汰。所以具體如下:
主存開始為空
訪問1,1不在主存中,產生缺頁中斷,添加,主存里現在是:1
訪問2,2不在主存中,產生缺頁中斷,添加,主存里現在是:1,2
以此類推,
1,2,3(缺頁中斷)
1,2,3,6(缺頁中斷)
訪問4,4不在主存中,缺頁中斷,主存滿了,最早的1淘汰,主存里現在是:2,3,6,4
然後3,6,4,7(缺頁中斷,2淘汰)
然後3,3在主存中,不產生中斷
然後6,4,7,2(缺頁中斷,3淘汰)
4,7,2,1(缺頁中斷,6淘汰)
4在主存中,不中斷
7在主存中,不中斷
7,2,1,5(缺頁中斷,4淘汰)
2,1,5,6(缺頁中斷,7淘汰)
5在主存中,不中斷
2在主存中渣吵,不中斷
1在主存中,不中斷
整個FIFO過程就是這樣。

LRU是最近最久未使用的先淘汰,具體如下:
1(缺頁中斷)
1,2(缺頁中斷)
1,2,3(缺頁中斷)
1,2,3,6(缺頁中斷)
2,3,6,4(缺頁中斷,1最久沒用過,淘汰)
3,6,4,7(缺頁中斷,2最久沒用過,淘汰)
3在主存中,不中斷,3最近使用過,主存中順序調整為6,4,7,3
4,7,3,2(缺頁中斷,6最久沒用過,淘汰)
7,3,2,1(缺頁中斷,4最久沒用過,淘汰)
3,2,1,4(缺頁中斷,7最久沒用過槐脊,淘汰)
2,1,4,7(缺頁中斷,3最久沒用過,淘汰)
1,4,7,5(缺頁中斷,2最久沒用過,淘汰)
4,7,5,6(缺頁中斷,1最久沒用過,淘汰)
5在主存中,調整順序為4,7,6,5
7,6,5,2(缺頁中斷,4最久沒用過,淘汰)
6,5,2,1(缺頁中斷,7最久沒用過,淘汰)
整個LRU過程就是這樣。

全手打求採納謝謝~!如有鉛梁滲問題請追問~

J. 求高手教教我"虛擬內存頁面調度演算法"

如果你機子內存太小,不設虛擬內存的話,會內存不足,顯然會影響速度。

Windows虛擬內存問題詳解

本文詳細介紹了虛擬內存的設置和相關問題的解決方法。

內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序很大或很多,就會導致內存消耗殆盡。為了解決這個問題,Windows中運用了虛擬內存技術,即拿出一部分硬碟空間來充當內存使用,當內存佔用完時,電腦就會宏伍自動調用硬碟來充當內存,以緩解內存的緊張。舉一個例子來說,如果電腦只有128MB物理內存的話,當讀取一個容量為200MB的文件時,就必須要用到比較大的虛擬內存,文件被內存讀取之後就會先儲存到虛擬內存,等待內存把文件全部儲存到虛擬內存之後,跟著就會把虛擬內里儲存的文件釋放到原來的安裝目錄里了。

當系段絕兄統運行時,先要將所需的指令和數據從外部存儲器(如硬碟、軟盤、光碟等)調入內存中,CPU再從內存中讀取指令或數據進行運算,並將運算結果存入內存中,內存所起的作用就像一個「二傳手」的作用。當運行一個程序需要大量數據、佔用大量內存時,內存這個倉庫就會被「塞滿」,而在這個「倉庫」中總有一部分暫時不用的數據占據著有限的空間,所以要將這部分「惰性」的數據「請」出去,以騰出地方給「活性」數據使用。這時就需要新建另一個後備「倉庫」去存放「惰性」數據。由於硬碟的空間很大,所以微軟Windows 操作系統就將後備「倉庫」的地址選在硬碟上,這個後備「倉庫」就是虛擬內存。在默認情況下,虛擬內存是以名為Pagefile.sys的交換文件保存在硬碟的系統分區中。

手動設置虛擬內存

在默認狀態下,是讓系統管理虛擬內存的,但是系統默認設置的管理方式通常比較保守,在自動調節時會造成頁面文件不連續,而降低讀寫效率,工作效率就顯得不高,於是經常會出現「內存不足」這樣的提示,下面就自已動手來設置它吧。

①用右鍵點擊桌面上的「我的電腦」圖標,在出現的右鍵菜單中選擇「屬性」選項打開「系統屬性」窗口。在窗口中點擊「高級」選項卡,出現高級設置的對話框。

②點擊「性能」區域的「設置」按鈕,在出現的「性能選項」窗口中選擇「高級」選項卡,打開其對話框。

③在該對話框中可看到關於虛擬內存的區域,點擊「更改」按鈕進入「虛擬內存」的設置窗口。選擇一個有較大空閑容量的分區,勾選「自定義大小」前的復選框,將具體數值填入「初始大小」、「最大值」欄中,而後依次點擊「設置→確定」按鈕即可,最後重新啟動計算機使虛擬內存設置生效。

建議:可以劃分出一個小分區專門提供給虛擬內存、IE臨時文件存儲等使用,以後可以對該分區定期進行磁碟整理,從而能更好提高計算機的工作效率。

一、量身定製虛似內存

1.普通設置法

根據一般的設置方法,虛擬內存交換文件最小值、最大值同時都可設為內存容量的1.5倍,但如果內存本身容量比較大,比如內存是512MB,那麼它佔用的空間也是很可觀的。所以可以這樣設定虛擬內存的基本數值:內存容量在256MB以下,就設置為1.5倍;在512MB以上,設置為內存容量的一半;介於256MB與512MB之間的設為與內存容量相同值。

2.精準設置法

由於每個人實際操作的應用程序不可能一樣,比如有些人要運行3DMAX、Photoshop等這樣的大型程序,而有些人可能只是打打字、玩些小游戲,所以對虛擬內存的要求並不相同,於是就要因地制宜地精確設置虛擬內存空間的數值。

①先將虛擬內存自定義的「初始大小」、「最大值」設為兩個相同的數值,比如500MB;

②然後依次打開「控制面板→管理工具→性能」,在出現的「性能」對話框中,展開左側欄目中的「性能日誌和警報」,選中其下的「計數器日誌」,在右側欄目中空白處點擊右鍵,選擇右鍵菜單中的「新建日誌設置」選項;

③在彈出的對話框「名稱」一欄中填入任意名稱,比如「虛擬內存測試」。在出現窗口中點擊「添加計數器」按鈕進入下一個窗口;

④在該窗口中打開「性能對象」的下拉列表握襲,選擇其中的「Paging File」,勾選「從列表中選擇計數器」,並在下方的欄目中選擇「%Usage Peak」;勾選「從列表中選擇範例」,在下方的欄目中選擇「_Total」,再依次點擊「添加→關閉」結束;

⑥在右側欄目中可以發現多了一個「虛擬內存測試」項目,如果該項目為紅色則說明還沒有啟動,點擊該項,選擇右鍵菜單中的「啟動」選項即可;

接下來運行自己常用的一些應用程序,運行一段時間後,進入日誌文件所在的系統分區下默認目錄「PerfLogs」,找到「虛擬內存測試_000001.csv」並用記事本程序打開它,在該內容中,查看每一欄中倒數第二項數值,這個數值是虛擬內存的使用比率,找到這項數值的最大值,比如圖中的「46」,用46%乘以500MB(前面所設定的虛擬內存數值),得出數值為230MB。

用該數值可以將初始大小設為230MB,而最大值可以根據磁碟空間大小自由設定,一般建議將它設置為最小值的2到3倍。這樣就可以將虛擬內存打造得更精準,使自己的愛機運行得更加流暢、更具效率

二、Windows虛擬內存加速密籍

虛擬內存對於任何版本的Windows而言都是十分重要的。如果設置得當,它將極大地提升電腦的性能和運行速度。可是在默認狀態下,Windows始終將虛擬內存設為物理內存的1.5倍。這樣的話,如果用戶安裝2GB的內存,系統就會騰出高達3GB的硬碟空間作為虛擬內存。但以當前的主流應用軟體和游戲對內存的需要來看,根本沒有必要使用這么多的虛擬內存。那麼,有沒有什麼秘技或絕招可使虛擬內存運用得更有效率或更顯性能呢?

1、分割存於多個硬碟

將虛擬內存設在較快的硬碟上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬碟速度一樣快,則應將虛擬內存平均分配在兩個不同的硬碟上(並非同一硬碟的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。

舉個例子,假設你原本在硬碟C上設置了700MB的虛擬內存,現在你可嘗試重新分配,即把硬碟C改為350MB,硬碟D新增350MB的虛擬內存。理論上這樣做會加快虛擬內存整體的讀寫操作.

2、硬碟需有足夠空間

如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇「系統管理的大小」的方法來自動處理虛擬內存,一般情況下應該會比選擇「自定義大小」的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的「頁面文件」(pagefile.sys)會隨著電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,必須保證分頁文件所在的硬碟擁有足夠的可用空間。

3、最小值等於最大值

選擇「自定義大小」的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。

這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。

4、整理頁面文件

文件數據保存在硬碟上久了,文件碎片(fragment)自然會產生。要保持或提高硬碟的工作效率,應不時為硬碟進行一次碎片整理。所謂虛擬內存,其實也是硬碟上的資料文件,那麼虛擬內存是否也應該像普通文件般需要整理呢?

Windows系統處理頁面文件(即虛擬內存)的方法有別於一般的文件。相比之下,頁面文件比一般文件更少出現碎片,為頁面文件進行整理通常是沒有必要的。事實上,當Windows XP進行磁碟碎片整理時,頁面文件不會牽涉其中。

雖然Windows不會對頁面文件進行整理,但事實上頁面文件也有碎片存在。追求「盡善盡美」的朋友可能仍想對頁面文件進行碎片整理。大家不妨試試下面的方法:

在桌面「我的電腦」圖標上單擊滑鼠右鍵,在隨後出現的功能菜單中選「屬性」。進入系統屬性的設置窗口,用滑鼠點選「高級」-->「性能」-->「設置」-->「高級」-->「更改」,在隨後出現的「虛擬內存」設置窗口中選中「無分頁文件」一項。最後單擊「設置」按鈕退出,並重新啟動電腦。

重新啟動後,檢查一下磁碟根目錄中還有沒有pagefile.sys頁面文件存在,如有就將之刪除。清除掉虛擬內存的頁面文件後,現在再進行磁碟碎片整理。完成後,按照前面的步驟重新設置一定數量的虛擬內存,並啟動電腦使之生效。經上述方法處理後,新得出的頁面文件將會是沒有碎片的。

另外,如果想查看頁面文件碎片的具體情況呢?啟動磁碟碎片整理程序,為存在有頁面文件的硬碟進行一次「分析」,再點選「查看報告」,看看「頁面文件碎片」一欄便會一目瞭然.

5、虛擬內存的理想大小

想以「自定義大小」的方法來處理虛擬內存,究竟應該設置多大的虛擬內存呢?在Windows XP中,如果由操作系統自己定義虛擬內存,系統通常會把最小值設置為物理內存的1.5倍。當擴展時,最大值則介於物理內存的2.5至3倍。一般情況下,用戶想自定義虛擬內存的大小,均可參照這個比例設置。

真的要參照這個比例嗎?如果電腦有1GB的內存,難不成最小值要設置為1.5GB,最大值是2.5至3GB。這樣一來。Pagefile.sys頁面文件至少為1.5GB,太不現實了!

其實,大內存的系統跟小內存的系統相比,在設置虛擬內存時,標准有些不同。

如果大家有512MB以上甚至1GB的內存,既然物理內存已經相當充足,所需的虛擬內存反而應該減少。故在大內存的系統中,虛擬內存的最小值可以設成物理內存的一半。比如有1GB的內存,虛擬內存的最小值設成512MB,最大值則維持3GB以備不時之需。注意:雖然最大值設為3GB,系統是不會立即出現3GB大小的pagefile.sys文件,實際上它首先會以最小值出現,待有擴展需要時才會遞增。

另外,有些大內存的朋友,可能會乾脆不設置虛擬內存,以此強迫系統使用速度較快的內存。其實這是不太明智的做法。正所謂凡事都不要做得太絕對,完全沒有虛擬內存也不行。原因是不少應用程序在設計時要求必須使用虛擬內存,沒有了就會造成系統不穩定或死機。

至於小內存的系統,例如256MB,參照1.5倍及3倍的設置比例最穩當。即虛擬內存最小值設為384MB,最大值768MB。

6、手工訂制最准確的虛擬內存

0.5倍、1.5倍、3倍,哇!好像買衣服時分大、中、小號,完全沒有個性。究竟設置虛擬內存有沒有更「貼身剪裁」的方法呢?

在Windows XP桌面的「開始」→「運行」中輸入perfmon.msc,一個與系統性能有關的監視器便會出現。看看顯示器的底部,有三個計數器(pages/sec、Avg.Disk Queue Length及rocessor Time,)。為了便於接下來對虛擬內存的頁面文件進行精確監測,現在請大家將這三個計數器逐一點選,並按鍵盤上的Delete鍵將它們刪除。請大家放心,刪除後,下次再啟動系統性能監視器時,這三個項目會重新出現。

刪除後,現在請在圖表中央位置單擊滑鼠右鍵,在隨後出現的功能菜單中點選「添加計數器」一項,跟著在跳出窗口的「性能對象」一欄選「Process」。之後再在「從列表選擇」一欄中點選「Page File Bytes」。不清楚「Page File Bytes」代表什麼意思,只要單擊「說明」按鈕,解說文字便會出現在對話框之下。

選定「Page File Bytes」後,再在右方的「從列表選擇範例」一欄選取「Total」項,之後依次單擊「添加」和「關閉」按鈕,一個名為「Page File Bytes」的計數器便會出現在性能監視器的下方中。

重復以上的動作,再添加一個名為「Page File Bytes Peak」的計數器(即Process下面的Page File Bytes Peak)。

現在,回頭看一下監視器,圖表中應該正在顯示並計量著剛才新增加的兩個計數器。如無意外,這兩個計數器在圖表上的顯示不正確,即數值靠近最高比例線,沒有動態變化。不用怕,這並不表示你的電腦出了什麼問題,而是圖表比例設得不太恰當而已!用滑鼠右鍵逐一單擊監視器底部的「Page Fele Bytes」和「Page File By8tes Peak」計數器,並選「屬性」一項。在「數據」頁面的「比例」一欄中改為0.0000001,這樣顯示器中的圖表便不再是沒有動靜了。

如果你看過系統提供的說明,相信應該知道「Page File Bytes」和「Page File Bytes Peak」正是代表了系統監測期間所使用的虛擬內存及其峰值是多大。因此,需要精確地手工設置虛擬內存,可參考圖表下方顯示的數字,其單位是Bytes。

想知道在正常的情況下,你的系統會耗用多少虛擬內存?請將平時日常使用的應用軟體同時啟動並讓它們開始工作,接著再看性能監視器上所顯示的數值,心中有數了吧。

人總有瘋狂的時候,想知道自己瘋狂使用電腦時系統需要多少虛擬內存,現在就盡情地將電腦上的程序啟動並運行(例如,開十多個IE瀏覽器窗口上網,播放MP3和DVD影片,再進行光碟刻錄或DV影片壓縮編碼),看看監視器的百分比會升高到多少。

在圖表上右擊滑鼠,點選「屬性」,進入「圖表」頁面勾選「水平格線」一項。這樣圖表中會出現一條條的水平分割線,是不是好分辨了?

圖表中的紅色垂直線跑得太快,來不及開啟電腦上的程序進行測試?

同樣,在圖表上單擊滑鼠右鍵,選「屬性」,在常規頁面的「自動抽樣間隔」一項中將1秒改為5秒。此時,圖表中的「圖形時間」數值便會由1分40秒變成8分20秒。換言之,紅色垂直線走完一圈需花費8分20秒,這個時間應該足以讓大家開啟並運行很多應用程序,然後再慢慢查看圖表中的結果。

最後,通過監視器的圖表,相信大家已經能粗略估計你的電腦系統應設置多大的虛擬內存了。

三、出現「虛擬內存不夠」的幾個可能

1、感染病毒

有些病毒發作時會佔用大量內存空間,導致系統出現內存不足的問題。趕快去殺毒,升級病毒庫,然後把防毒措施做好!

2、虛擬內存設置不當

虛擬內存設置不當也可能導致出現內存不足問題,一般情況下,虛擬內存大小為物理內存大小的2倍即可,如果設置得過小,就會影響系統程序的正常運行。重新調整虛擬內存大小以WinXP為例,右鍵點擊「我的電腦」,選擇「屬性」,然後在「高級」標簽頁,點擊「性能」框中的「設置」按鈕,切換到「高級」標簽頁,然後在「虛擬內存」框中點擊「更改」按鈕,接著重新設置虛擬內存大小,完成後重新啟動系統就好了。

3、系統空間不足

虛擬內存文件默認是在系統盤中,如WinXP的虛擬內存文件名為「pagefile.sys」,如果系統盤剩餘空間過小,導致虛擬內存不足,也會出現內存不足的問題。系統盤至少要保留300MB剩餘空間,當然這個數值要根據用戶的實際需要而定。用戶盡量不要把各種應用軟體安裝在系統盤中,保證有足夠的空間供虛擬內存文件使用,而且最好把虛擬內存文件安放到非系統盤中。

4、因為SYSTEM用戶許可權設置不當

基於NT內核的Windows系統啟動時,SYSTEM用戶會為系統創建虛擬內存文件。有些用戶為了系統的安全,採用NTFS文件系統,但卻取消了SYSTEM用戶在系統盤「寫入」和「修改」的許可權,這樣就無法為系統創建虛擬內存文件,運行大型程序時,也會出現內存不足的問題。問題很好解決,只要重新賦予SYSTEM用戶「寫入」和「修改」的許可權即可,不過這個僅限於使用NTFS文件系統的用戶。

四、虛擬內存的優化

1. 啟用磁碟寫入緩存

在「我的電腦」上單擊滑鼠右鍵選擇「屬性->硬體」,打開設備管理器找到當前正在使用的硬碟,單擊滑鼠右鍵選擇屬性。在硬碟屬性的的「策略」頁中,打開「啟用磁碟上的寫入緩存」。

這個選項將會激活硬碟的寫入緩存,從而提高硬碟的讀寫速度。不過要注意一點,這個功能打開後,如果計算機突然斷電可能會導致無法挽回的數據丟失。因此最好在有UPS的情況下再打開這個功能。當然,如果你平常使用計算機時不要進行什麼重要的數據處理工作,沒有UPS也無所謂,這個功能不會對系統造成太大的損失。

2. 打開Ultra MDA

在設備管理其中選擇IDE ATA/ATAPI控制器中的「基本/次要IDE控制器」,單擊滑鼠右鍵選擇「屬性」,打開「高級設置」頁。這里最重要的設置項目就是「傳輸模式」,一般應當選擇「DMA(若可用)」。

3. 配置恢復選項

Windows XP 運行過程中碰到致命錯誤時會將內存的快照保存為一個文件,以便進行系統調試時使用,對於大多數普通用戶而言,這個文件是沒有什麼用處的,反而會影響虛擬內存的性能。所以應當將其關閉。

在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,在「性能」下面單擊「設置」按鈕,在「性能選項」中選擇「高級」頁。這里有一個「內存使用」選項,如果將其設置為「系統緩存」,Windows XP 將使用約4MB的物理內存作為讀寫硬碟的緩存,這樣就可以大大提高物理內存和虛擬內存之間的數據交換速度。默認情況下,這個選項是關閉的,如果計算機的物理內存比較充足,比如256M或者更多,最好打開這個選項。但是如果物理內存比較緊張,還是應當保留默認的選項。

頁面文件的設置

一、頁面文件的大小計算

對於不同的計算機而言,頁面文件的大小是各不相同的。關於頁面文件大小的設置,有兩個流傳甚廣的「公式」,「物理內存X2.5」或者「物理內存X1.5」。這兩種計算方法固然簡便,但是並不適用於所有的計算機。設置頁面文件大小最准確的方法是看看計算機在平常運行中實際使用的頁面文件大小。

通過Windows XP自帶的日誌功能可以監視計算機平常使用的頁面文件的大小,從而進行最准確的設置,具體步驟如下。

1、在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,單擊「性能」下面的「設置」按鈕,然後選擇「高級」頁,單擊「虛擬內存」下方的「更改」按鈕。選擇「自定義大小」,並將「起始大小」和「最大值」都設置為300M,這只是一個臨時性的設置。設置完成後重新啟動計算機使設置生效。

2、進入「控制面板->性能與維護->管理工具」「性能」「性能日誌和警告」「計數器日誌」。在窗口右側單擊滑鼠右鍵選擇「新建日誌設置」

3、隨便設置一個日誌名稱,比如「監視虛擬內存大小」。

4、在「常規」頁中單擊「添加計數器」按鈕。

在「性能對象」中選擇「Paging File」,然後選中「從列表選擇記數器」下面的「%Usage Peak」,並在右側「從列表中選擇範例」中選擇「_Total」。最後單擊「添加」和「關閉」按鈕。

5、別忘了記住「日誌文件」頁中的日誌文件存放位置和文件名,後面需要查看這個日誌來判斷Windows XP平常到底用了多少虛擬內存,在這個例子中,日誌文件被存放在D:\Perflog目錄下。

另外還要設置「日誌文件類型」為「文本文件」,這樣便於閱讀。

這時你可以看到剛才新建的日誌條目前面的圖標變成了綠色,這表明日誌系統已經在監視虛擬內存了。如果圖標還是紅色,你應該單擊滑鼠右鍵選擇「開始」來啟動這個日誌。

過一段時間後打開這個CVS文件,可以看到如下內容的條目。

這個日誌文件記錄這一段時間中頁面文件的使用情況,注意這里的單位是%,而不是MB。通過簡單的計算,就可以得到頁面文件的最小尺寸,公式是「頁面文件尺寸X百分比」。比如這個例子中,虛擬內存最大的使用比率是31%,300MBX31%=93MB,這個值就是虛擬內存的最小值(注意,300MB是前面的設置的臨時值)。

如果物理內存較大,可以考慮將頁面文件的「起始大小」和「最大值」設置為相等,等於上一步中計算出來的大小。這樣硬碟中不會因為頁面文件過渡膨脹產生磁碟碎片,其副作用是由於「最大值」被設置的較小,萬一偶然出現虛擬內存超支的情況,可能會導致系統崩潰。

設置頁面文件

現在回到「虛擬內存」的設置對話框中選擇自定義大小並按照上面的計算結果分別設置「初始大小」和「最大值」。這里將「初始大小」設置為91M,而將「最大值」設置成了200M,這樣比較保險。

對頁面文件進行碎片整理

Windows XP運行時需要大量訪問頁面文件,如果頁面文件出現碎片,系統性能將會受到嚴重影響,而且會縮短硬碟的使用壽命。所以很有必要對頁面文件定期進行碎片整理。

不過別忘了,頁面文件是系統關鍵文件,Windows XP運行時無法對其進行訪問。所以對它進行碎片整理並不是一件容易的事情。有兩種方案可以選擇,一是安裝Windows雙系統,然後啟動另外一個Windows對Windows XP所在的分區進行碎片整理。二是使用專門的工具軟體,比如System File Defragmenter等。

閱讀全文

與頁面調度演算法如何寫物理頁相關的資料

熱點內容
word中化學式的數字怎麼打出來 瀏覽:703
乙酸乙酯化學式怎麼算 瀏覽:1371
沈陽初中的數學是什麼版本的 瀏覽:1316
華為手機家人共享如何查看地理位置 瀏覽:1009
一氧化碳還原氧化鋁化學方程式怎麼配平 瀏覽:846
數學c什麼意思是什麼意思是什麼 瀏覽:1368
中考初中地理如何補 瀏覽:1259
360瀏覽器歷史在哪裡下載迅雷下載 瀏覽:670
數學奧數卡怎麼辦 瀏覽:1349
如何回答地理是什麼 瀏覽:988
win7如何刪除電腦文件瀏覽歷史 瀏覽:1021
大學物理實驗干什麼用的到 瀏覽:1447
二年級上冊數學框框怎麼填 瀏覽:1658
西安瑞禧生物科技有限公司怎麼樣 瀏覽:826
武大的分析化學怎麼樣 瀏覽:1212
ige電化學發光偏高怎麼辦 瀏覽:1300
學而思初中英語和語文怎麼樣 瀏覽:1605
下列哪個水飛薊素化學結構 瀏覽:1387
化學理學哪些專業好 瀏覽:1451
數學中的棱的意思是什麼 瀏覽:1016