請求分頁與請求分段管理方式

                          請求分頁與請求分段管理方式

請求分頁管理方式 

1 概述

請求分頁系統建立在基本分頁系統基礎之上,爲了支持虛擬存儲器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬存儲器的方法。

在請求分頁系統中,只要求將當前需要的一部分頁面裝入內存,便可以啓動作業運行。在作業執行過程中,當所要訪問的頁面不在內存時,再通過調頁功能將其調入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出內存空間。

爲了實現請求分頁,系統必須提供一定的硬件支持。除了需要一臺具有一定容量的內存及外存的計算機系統,還需要有頁表機制、缺頁中斷機構和地址變換機構。

2 頁表機制

請求分頁系統在一個作業運行之前不要求全部一次性調入內存,因此在作業的運行過程中,必然會出現要訪問的頁面不在內存的情況。爲解決此類問題,在請求頁表項中增加了四個字段:

說明如下:

  • 狀態位P:用於指示該頁是否已調入內存,供程序訪問時參考。
  • 訪問字段A:用於記錄本頁在一段時間內被訪問的次數,或記錄本頁最近己有多長時間未被訪問,供置換算法換出頁面時參考。
  • 修改位M:標識該頁在調入內存後是否被修改過。
  • 外存地址:用於指出該頁在外存上的地址,通常是物理塊號,供調入該頁時參考。

3 缺頁中斷機構

在請求分頁系統中,每當所要訪問的頁面不在內存時,便產生一個缺頁中斷,請求操作系統將所缺的頁調入內存。此時應將缺頁的進程阻塞(調頁完成喚醒),如果內存中有空閒塊,則分配一個塊,將要調入的頁裝入該塊,並修改頁表中相應頁表項,若此時內存中沒有空閒塊,則要淘汰某頁(若被淘汰頁在內存期間被修改過,則要將其寫回外存)。

缺頁中斷作爲中斷同樣要經歷,諸如保護CPU環境、分析中斷原因、轉入缺頁中斷處理程序、恢復CPU環境等幾個步驟。但與一般的中斷相比,它有以下兩個明顯的區別:

  • 在指令執行期間產生和處理中斷信號,而非一條指令執行完後,屬於內部中斷(又稱異常或陷入)。
  • 一條指令在執行期間,可能產生多次缺頁中斷。

4 地址變換機構


請求分頁系統中地址變換機構,是在分頁系統地址變換機構的基礎上,實現虛擬內存,又增加了某系而功能而形成的。

如圖所示,在進行地址變換時,先檢索快表:

  • 若找到要訪問的頁,便修改頁表項中的訪問位(寫指令則還須重置修改位),然後利用頁表項中給出的物理塊號和頁內地址形成物理地址。
  • 若未找到該頁的頁表項,應到內存中去查找頁表,再對比頁表項中的狀態位P,看該頁是否已調入內存,未調入則產生缺頁中斷,請求從外存把該頁調入內存。

請求分段管理方式

1 概述

在請求分段存儲管理系統中,作業運行之前,只要求將當前需要的若干個分段裝入內存,便可啓動作業運行。在作業運行過程中,如果要訪問的分段不在內存中,則通過調段功能將其調入,同時還可以通過置換功能將暫時不用的分段換出到外存,以便騰出內存空間。

爲實現請求分段系統,系統應該配置段表機制、缺段中斷機構、機制變換機構硬件支持。

2 段表機制

  • 存取方式:存取屬性(執行、只讀、允許讀/寫)
  • 訪問字段A:記錄該段被訪問的頻繁程度
  • 修改位M:表示該段在進入內存後,是否被修改過。
  • 存在位P:表示該段是否在內存中。
  • 增補位:表示在運行過程中,該段是否做過動態增長。
  • 外存地址:表示該段在外存中的起始地址。

3 缺段中斷機制

缺段中斷機構與缺頁中斷機構類似,它同樣需要在一條指令執行期間,產生和處理中斷,以及一條指令執行期間可能產生多此缺段中斷。由於分段是信息的邏輯單元,因而不可能出現一條指令被分割在兩個分段中和一個信息被分割在兩個分段中的情況。

缺段中斷的處理過程如圖:

4 地址變換機構

請求分段系統中地址變換機構是在分段系統地址變換機構的基礎上形成的。如下圖所示:

5 分段共享與保護

5.1 分段共享

爲了實現分段共享,設置一個數據結構——共享段表,以及對共享段進行操作的過程。

 

所有的共享段都在共享段表中對應一個表項。其中:

  • 共享進程計數器count:記錄有多少個進程需要共享該分段,設置一個整型變量count。
  • 存取控制字段:設定存取權限。
  • 段號:對於一個共享段,不同的進程可以各用不同的段號去共享該段。

5.2 分段保護

在分段系統中,由於每個段在邏輯上是獨立,因而比較容易實現信息保護。目前分段管理的保護主要有三種:

  • 地址越界保護
    先利用段表寄存器中的段表長度與邏輯地址中的段號比較,若段號超界則產生越界中斷;再利用段表項中的段長與邏輯地址中的段內位移進行比較,若段內位移大於段長,也會產生越界中斷。
    注:在允許段動態增長的系統中,允許段內位移大於段長。

  • 訪問控制保護(存取控制保護)
    在段表中設置了一個存取控制字段,用於規定對該段的訪問方式。

  • 環保護機構
    環的構成:OS核心在內環;重要的實用程序和操作系統服務在中間環;一般應用程序在外環。
    在環系統中,程序的訪問和調用應遵循一定的規則:
    (1)一個程序可以訪問同環或較低特權環中的數據;
    (2)一個程序可以調用同環或較高特權環中的服務;

 

參考文獻

https://www.jianshu.com/p/2bec3defcb3f

 

 

一.  分頁存儲管理

 

1.基本思想

 

用戶程序的地址空間被劃分成若干固定大小的區域,稱爲“頁”,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。

1)      等分內存

頁式存儲管理將內存空間劃分成等長的若干物理塊,成爲物理頁面也成爲物理塊,每個物理塊的大小一般取2的整數冪。內存的所有物理塊從0開始編號,稱作物理頁號。

2) 邏輯地址

系統將程序的邏輯空間按照同樣大小也劃分成若干頁面,稱爲邏輯頁面也稱爲頁。程序的各個邏輯頁面從0開始依次編號,稱作邏輯頁號或相對頁號。每個頁面內從0開始編址,稱爲頁內地址。程序中的邏輯地址由兩部分組成:頁號P和頁內位移量W。

在執行一個程序之前,內存管理器需要的準備工作:

1) 確定程序的頁數

2) 在主存中留出足夠的空閒頁面

3) 將程序的所有頁面載入主存裏。(靜態的分頁,頁面無需連續)

2. 分頁存儲管理的地址機構

頁號x位,每個作業最多2的x次方頁,頁內位移量的位數表示頁的大小,若頁內位移量y位,則2的y次方,即頁的大小,頁內地址從000000000000開始到2的y次方

若給定一個邏輯地址爲A,頁面大小爲L,則

頁號P=INT[A/L],頁內地址W=A  MOD  L

3.內存分配

    相鄰的頁面在內存中不一定相鄰,即分配給程序的內存塊之間不一定連續。對程序地址空間的分頁是系統自動進行的,即對用戶是透明的。由於頁面尺寸爲2的整數次冪,故相對地址中的高位部分即爲頁號,低位部分爲頁內地址。

4. 頁表

分頁系統中,允許將進程的每一頁離散地存儲在內存的任一物理塊中,爲了能在內存中找到每個頁面對應的物理塊,系統爲每個進程建立一張頁表,用於記錄進程邏輯頁面與內存物理頁面之間的對應關係。頁表的作用是實現從頁號到物理塊號的地址映射,地址空間有多少頁,該頁表裏就登記多少行,且按邏輯頁的順序排列,形如:

5. 地址變換

頁式虛擬存儲系統的邏輯地址是由頁號和頁內地址兩部分組成,地址變換過程如圖7-3所示。假定頁面的大小爲4K,圖7-3中所示的十進制邏輯地址8203經過地址變換後,形成的物理地址a應爲十進制。 
             

頁號: 8203/4096 = 2;頁內偏移:8203%4096= 11;物理地址:物理塊號*頁面大小+ 頁內偏移= 28683。

6. 具有快表的地址變換機構

分頁系統中,CPU每次要存取一個數據,都要兩次訪問內存(訪問頁表、訪問實際物理地址)。爲提高地址變換速度,增設一個具有並行查詢能力的特殊高速緩衝存儲器,稱爲“聯想存儲器”或“快表”,存放當前訪問的頁表項。

7.頁面的共享與保護

    當多個不同進程中需要有相同頁面信息時,可以在主存中只保留一個副本,只要讓這些進程各自的有關項中指向內存同一塊號即可。同時在頁表中設置相應的“存取權限”,對不同進程的訪問權限進行各種必要的限制。
 

二.分段存儲管理

1.基本思想

頁面是主存物理空間中劃分出來的等長的固定區域。分頁方式的優點是頁長固定,因而便於構造頁表、易於管理,且不存在外碎片。但分頁方式的缺點是頁長與程序的邏輯大小不相關。例如,某個時刻一個子程序可能有一部分在主存中,另一部分則在輔存中。這不利於編程時的獨立性,並給換入換出處理、存儲保護和存儲共享等操作造成麻煩。

另一種劃分可尋址的存儲空間的方法稱爲分段。段是按照程序的自然分界劃分的長度可以動態改變的區域。通常,程序員把子程序、操作數和常數等不同類型的數據劃分到不同的段中,並且每個程序可以有多個相同類型的段。

 段表本身也是一個段,可以存在輔存中,但一般是駐留在主存中。

將用戶程序地址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯信息。存儲分配時,以段爲單位,段與段在內存中可以不相鄰接,也實現了離散分配。

2. 分段地址結構

作業的地址空間被劃分爲若干個段,每個段定義了一組邏輯信息。例程序段、數據段等。每個段都從0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間是二維的。

在段式虛擬存儲系統中,虛擬地址由段號和段內地址組成,虛擬地址到實存地址的變換通過段表來實現。每個程序設置一個段表,段表的每一個表項對應一個段,每個表項至少包括三個字段:有效位(指明該段是否已經調入主存)、段起址(該段在實存中的首地址)和段長(記錄該段的實際長度)。

3. 地址變換

針對每一個虛擬地址,存儲管理部件首先以段號S爲索引訪問段表的第S個表項。若該表項的有效位爲1,則將虛擬地址的段內地址D與該表項的段長字段比較;若段內地址較大則說明地址越界,將產生地址越界中斷;否則,將該表項的段起址與段內地址相加,求得主存實地址並訪存。如果該表項的有效位爲0,則產生缺頁中斷,從輔存中調入該頁,並修改段表。段式虛擬存儲器虛實地址變換過程如圖所示。

絕對地址=根據段號找到段表中的起始地址+段內地址 (如果段內地址超過限長則產生“地址越界”程序性中斷事件達到存儲保護)

4. 分段存儲方式的優缺點

分頁對程序員而言是不可見的,而分段通常對程序員而言是可見的,因而分段爲組織程序和數據提供了方便。與頁式虛擬存儲器相比,段式虛擬存儲器有許多優點:

(1)    段的邏輯獨立性使其易於編譯、管理、修改和保護,也便於多道程序共享。

(2)    段長可以根據需要動態改變,允許自由調度,以便有效利用主存空間。

(3)    方便編程,分段共享,分段保護,動態鏈接,動態增長

 因爲段的長度不固定,段式虛擬存儲器也有一些缺點:

(1)    主存空間分配比較麻煩。

(2)    容易在段間留下許多碎片,造成存儲空間利用率降低。

(3)    由於段長不一定是2的整數次冪,因而不能簡單地像分頁方式那樣用虛擬地址和實存地址的最低若干二進制位作爲段內地址,並與段號進行直接拼接,必須用加法操作通過段起址與段內地址的求和運算得到物理地址。因此,段式存儲管理比頁式存儲管理方式需要更多的硬件支持。

三.段頁式存儲

1.  段頁式存儲管理的基本思想

段頁式存儲組織是分段式和分頁式結合的存儲組織方法,這樣可充分利用分段管理和分頁管理的優點。

   (1) 用分段方法來分配和管理虛擬存儲器。程序的地址空間按邏輯單位分成基本獨立的段,而每一段有自己的段名,再把每段分成固定大小的若干頁。

     (2) 用分頁方法來分配和管理實存。即把整個主存分成與上述頁大小相等的存儲塊,可裝入作業的任何一頁。程序對內存的調入或調出是按頁進行的。但它又可按段實現共享和保護。


 地址空間圖

      (3)    邏輯地址結構。一個邏輯地址用三個參數表示:段號S;頁號P;頁內地址d。

 

 

(4)段表、頁表、段表地址寄存器。爲了進行地址轉換,系統爲每個作業建立一個段表,並且要爲該作業段表中的每一個段建立一個頁表。系統中有一個段表地址寄存器來指出作業的段表起始地址和段表長度。

2.地址變換過程

1)   慢速地址轉換過程

一個邏輯地址爲:基地址x、段號s、頁號p和頁內地址d,求物理地址(((x)+s)+p)*2^(11)+d

在段頁式系統中,爲了便於實現地址變換,須配置一個段表寄存器,其中存放段表始址和段表長TL。

1) 進行地址變換時,首先利用段號S,將它與段表長TL進行比較。若S<TL,表示未越界

2) 於是利用段表始址和段號來求出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址

3) 利用邏輯地址中的段內頁號P來獲得對應頁的頁表項位置,從中讀出該頁所在的物理塊號b

4) 再利用塊號b和頁內地址來構成物理地址。

上圖示出了段頁式系統中的地址變換機構。在段頁式系統中,爲了獲得一條指令或數據,須三次訪問內存。第一次訪問是訪問內存中的段表,從中取得頁表始址;第二次訪問是訪問內存中的頁表,從中取出該頁所在的物理塊號,並將該塊號與頁內地址一起形成指令或數據的物理地址;第三次訪問纔是真正從第二次訪問所得的地址中,取出指令或數據。

顯然,這使訪問內存的次數增加了近兩倍。爲了提高執行速度,在地址變換機構中增設一個高速緩衝寄存器。每次訪問它時,都須同時利用段號和頁號去檢索高速緩存,若找到匹配的表項,便可從中得到相應頁的物理塊號,用來與頁內地址一起形成物理地址;若未找到匹配表項,則仍須再三次訪問內存。

3.段頁式存儲管理的優缺點

 優點

(1) 它提供了大量的虛擬存儲空間。

(2) 能有效地利用主存,爲組織多道程序運行提供了方便。

缺點:

(1) 增加了硬件成本、系統的複雜性和管理上的開消。

(2) 存在着系統發生抖動的危險。

(3) 存在着內碎片。

(4) 還有各種表格要佔用主存空間。

 段頁式存儲管理技術對當前的大、中型計算機系統來說,算是最通用、最靈活的一種方案。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章