請求頁面調度

請求頁面調度

請求頁面調度即當進程在運行中需要訪問某部分程式和數據時,若發現其所在的頁面不在記憶體,便立即提出請求,由 OS 將其所需頁面調入記憶體。由請求調頁策略所確定調入的頁,是一定會被訪問的,再加之請求調頁策略比較易於實現,故在目前的虛擬存儲器中大多採用此策略。但這種策略每次僅調入一頁,故須花費較大的系統開銷,增加了磁碟 I/O 的啟動頻率。

策略

頁面調度策略有兩種:請求頁調入和預先頁調入。

請求頁調入

請求頁調入簡稱請調,是指在CPU需要訪問進程某頁面時,發現所訪問的頁面不在記憶體中,CPU發出缺頁中斷信號,請求將該頁調入記憶體。作業系統接收到缺頁中斷請求後,為之分配物理塊並從外存中將該頁調入記憶體。

每個進程在剛開始執行時,所需要的頁面很多,會產生多次缺頁中斷,頁面被逐一調入記憶體。根據程式的局部性原理,當進程運行一段時間後.所需要的頁面會逐步減少,缺頁中斷次數會逐漸下降,最後趨向於很低的水平.進程運行進入相對平穩階段。

請求頁調入策略的優點是只有在需要時才將頁面調入記憶體,節省了記憶體空間。

請求頁調入策略的缺點如下。

(1)在進程初次執行時,開始階段會有大量的頁調入記憶體,這時的進程切換開銷很大。

(2)發生缺頁中斷時作業系統會調入頁面,而每次又僅調入一個頁面,啟動磁碟作I/O的頻率很高。由於每次啟動磁碟時會產生一個時間延遲,因此,會造成系統用於I/O的時間增長,系統效率降低。

(3)對於執行順序跳躍性大的程式,缺頁情況變化大,難以趨向穩定的水平,從而引起系統不穩定。

預調頁策略

如果進程的許多頁是存放在外存的一個連續區域中,則一次調入若干個相鄰的頁,會比一次調入一頁更高效些。但如果調入的一批頁面中的大多數都未被訪問,則又是低效的。可採用一種以預測為基礎的預調頁策略,將那些預計在不久之後便會被訪問的頁面預先調入記憶體。如果預測較準確,那么,這種策略顯然是很有吸引力的。但遺憾的是,目前預調頁的成功率僅約 50%。故這種策略主要用於進程的首次調入時,由程式設計師指出應該先調入哪些頁。  

置換策略

當需要從外存調入頁到記憶體時.如果當前記憶體中沒有空閒物理塊,則作業系統需要將某些頁置換出記憶體,再將新的頁面換入記憶體。選擇被置換出的頁有兩種策略,全局置換和局部置換。

全局置換

全局置換是指作業系統從所有當前位於記憶體中的頁面中選擇一個頁面淘汰,釋放出對應的物理塊,而不是僅從需要該頁的進程的物理塊換出。這種置換方法會影響大多數進程的運行,是一種動態方法。

局部置換

局部置換是指當某進程有頁面需要換入到記憶體中時,只能從該進程目前己在記憶體中的頁面中選擇一頁淘汰。該置換方法對其他進程沒有影響。

局部置換與全局置換比較有明顯的缺點:如果進程在執行期間所需要的記憶體物理塊數發生變化,頁面置換髮生頻繁,即使系統有空閒的物理塊,也不可能增加給該進程,另外,如果系統結某進程分配的物理塊數太多,系統不會收回,最終會造成記憶體空間浪費。  

從何處調入

在請求分頁系統中的外存分為兩部分:用於存放檔案的檔案區和用於存放對換頁面的對換區。通常,由於對換區是採用連續分配方式,而檔案區是採用離散分配方式,故對換區的磁碟 I/O 速度比檔案區的高。這樣,每當發生缺頁請求時,系統應從何處將缺頁調入記憶體,可分成如下三種情況:

(1) 系統擁有足夠的對換區空間,這時可以全部從對換區調入所需頁面,以提高調頁速度。為此,在進程運行前,便須將與該進程有關的檔案從檔案區拷貝到對換區。

(2) 系統缺少足夠的對換區空間,這時凡是不會被修改的檔案都直接從檔案區調入;而當換出這些頁面時,由於它們未被修改而不必再將它們換出,以後再調入時,仍從檔案區直接調入。但對於那些可能被修改的部分,在將它們換出時,便須調到對換區,以後需要時,再從對換區調入。

(3) UNIX 方式。由於與進程有關的檔案都放在檔案區,故凡是未運行過的頁面,都應從檔案區調入。而對於曾經運行過但又被換出的頁面,由於是被放在對換區,因此在下次調入時,應從對換區調入。由於 UNIX 系統允許頁面共享,因此,某進程所請求的頁面有可能已被其它進程調入記憶體,此時也就無須再從對換區調入。

頁面調入過程

每當程式所要訪問的頁面未在記憶體時,便向 CPU 發出一缺頁中斷,中斷處理程式首先保留 CPU 環境,分析中斷原因後轉入缺頁中斷處理程式。該程式通過查找頁表,得到該頁在外存的物理塊後,如果此時記憶體能容納新頁,則啟動 磁碟 I/O 將所缺之頁調入記憶體,然後修改頁表。如果記憶體已滿,則須先按照某種置換算法從記憶體中選出一頁準備換出;如果該頁未被修改過,可不必將該頁寫回磁碟;但如果此頁已被修改,則必須將它寫回磁碟,然後再把所缺的頁調入記憶體,並修改頁表中的相應表項,置其存在位為“1” ,並將此頁表項寫入快表中。在缺頁調入記憶體後,利用修改後的頁表,去形成所要訪問數據的物理地址,再去訪問記憶體數據。整個頁面的調入過程對用戶是透明的。

存儲管理方式

在存儲器管理中,連續分配方式會形成許多“碎片”,雖然可通過“緊湊”方法將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。

如果允許將一個進程直接分散地裝入到許多不相鄰的分區中,則無須再進行“緊湊”。基於這一思想而產生了離散分配方式。如果離散分配的基本單位是頁,則稱為分頁存儲管理方式。在分頁存儲管理方式中,如果不具備頁面對換功能,則稱為基本分頁存儲管理方式,或稱為純分頁存儲管理方式,它不具有支持實現虛擬存儲器的功能,它要求把每個作業全部裝入記憶體後方能運行。

分頁存儲管理的基本原理是:將主存空間和輔存空間分別等分為大小相等的若干頁,頁的大小為個位元組,如(1KB),(2KB),(4KB)等,並且為每個頁按順序指定一個頁號,即0頁、1頁、2頁、…。為了敘述方便,把主存的頁(物理頁或絕對頁)稱為頁面。例如,若主存空間為8KB,輔存空間為16KB,頁的大小為1KB,則主存空間可分為8個頁面,其頁面號為0~7;輔存空間可分為16個頁,其頁號為0~15,如圖5.35所示。當程式運行時,以“頁”為單位進行地址映射,即作業系統以頁為單位把邏輯頁從輔存調入主存,存放在物理頁面上,供CPU執行。在分頁存儲管理機制中,把邏輯頁對應的邏輯地址稱為線性地址。

相關詞條

熱門詞條

聯絡我們