1. 程式人生 > >作業系統 第五章 虛擬儲存

作業系統 第五章 虛擬儲存

 

1、基於區域性性原理

1)程式執行前,不需全部裝入記憶體(打破一次性)

  • 僅裝入當前要執行的部分頁面或段即可執行,其餘部分暫留在外存上。
  • 缺頁/段的情況:要訪問的頁(段) 尚未調入記憶體。程式應利用OS所提供的請求調頁(段)功能,將它們調入記憶體,使程式繼續執行。

2)調入需要的頁/段時,如果記憶體已滿,無法再裝入新頁(段),通過置換功能將記憶體中暫時不用的頁(段)調至外存,騰出足夠的記憶體空間。(不總駐留)

2、交換技術與虛存使用的調入調出技術有何相同和不同之處?

1)主要相同點:是都要在記憶體與外存之間交換資訊;

2)主要區別:

在於交換技術換出換進一般是整個程序(proc結構和共享正文段除外),因此一個程序的大小受物理儲存器的限制;

而虛存中使用的調入調出技術在記憶體與外存之間來回傳遞的是儲存頁或儲存段,而不是整個程序,從而使得程序對映具有了更大的靈活性,且允許程序的大小比可用的物理儲存空間大的多


3、虛擬儲存器:

1)定義:

虛擬儲存器 是指具有請求調入功能置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。

2)虛擬儲存管理下

  • 記憶體邏輯容量由記憶體容量和外存容量之和所決定
  • 執行速度接近於記憶體速度
  • 每位的成本卻接近於外存。

3)虛擬的實現建立在離散分配儲存管理基礎上

  方式:請求分頁/請求分段系統

  細節:分頁/段機構、中斷機構、地址變換機構、軟體支援

4)特徵:

  離散分配 方式是基礎

  1. 多次性:一個作業被分成多次調入記憶體執行
  2. 對換性:允許在作業的執行過程中進行換進、換出。(程序整體對換不算虛擬)
  3. 虛擬性:能夠從邏輯上擴充記憶體容量,使使用者所看到的記憶體容量遠大於實際記憶體容量。

4、請求分頁儲存管理方式:

基本分頁 + “請求調頁” 和 “頁面置換”功能。

換入和換出基本單位都是長度固定的頁面

硬體支援 :    

  • 一臺具有一定容量的內/外存的計算機
  • + 頁表機制
  • + 缺頁中斷機構
  • + 地址轉換機構

1)頁表:

(未被訪問過為0) 

 (未被修改過為0) 

  • 狀態位P :指示該頁是否已調入記憶體
  •  訪問欄位A :用於記錄本頁在一段時間內被訪問的次數,或記錄本頁最近已有多長時間未被訪問。(置換時考量的引數)
  •  修改位M :該頁在調入記憶體後是否被修改過。(關係到置換時調出的具體操作)
  • 外存地址:用於指出該頁在外存上的地址。

(訪問欄位A 、修改位M 在置換時做處理) 

2)缺頁中斷機構:

  1. 保護CPU環境”
  2. “分析中斷原因”
  3. “轉入缺頁中斷處理程式”
  4. “恢復CPU環境”

一條指令在執行期間,可能產生多次缺頁中斷

3)地址變換機構:

(分頁系統地址變換機構的基礎上

  增加 產生和處理缺頁中斷(請求調入)

   從記憶體中換出一頁的功能(置換)


5、記憶體分配:

作業不一次裝入,部分裝入的情況下如何為程序分配記憶體,涉及三個問題:

  1、最小物理塊數的確定

       少於此數量程序將不能執行

       與計算機的硬體結構有關,取決於指令的格式、功能和定址方式

  2、物理塊的分配策略 :  固定OR可變分配、全域性OR區域性置換

1)固定分配、區域性置換:為每個程序分配一定數目的物理塊,在整個執行期間不再改變(基於程序的型別,或根據程式設計師、程式管理員的建議)     執行中缺頁時,只能從該程序記憶體中n個頁面中選出一頁換出,然後再調入一頁。

2)可變分配、全域性置換:先為每個程序分配一定數目的物理塊 OS管理一個空閒物理塊佇列,發生缺頁時,系統從佇列中取出一塊分配給該程序,將欲調入的頁裝入(動態增長型,全域性空閒空間都可分配使用)

3)可變分配、區域性置換:為每個程序分配一定數目的物理塊 缺頁時,只允許換出該程序在記憶體的頁面,不影響其他程序執行。

  3、物理塊的分配演算法:

  1. 平均分配演算法:將所有可供分配的物理塊平均分配給各程序。
  2. 按比例分配演算法:根據程序的大小按比例分配物理塊。
  3. 考慮優先權的分配演算法

6、頁面置換演算法

1、缺頁率:    頁面調入次數(缺頁次數)/ 總的頁面使用次數

2、

最佳Optimal置換演算法

先進先出FIFO置換演算法:存在Belady現象:出現分配的頁面數增多,缺頁率反而提高的異常現象

輪轉演算法(最近最久未使用(LRU))置換演算法

CLOCK置換演算法

其他:最少使用 (LFU)、頁面緩衝演算法PBA

7.虛擬儲存管理下訪問記憶體的有效時間:

8、影響缺頁率的主要因素 :

(1)分配給作業的主存塊數:      多則缺頁率低,反之則高。

(2)頁面大小:     大則缺頁率低;反之則高。

(3)頁面排程演算法:     對缺頁中斷率影響很大,但不可能找到一種最佳演算法。

(4)程式編制方法:     以陣列運算為例,如果每一行元素存放在一頁中,則按行處理各元素缺頁中斷率低;反之,按列處理各元素,則缺頁中斷率高。

9、例題:

EP1:

EP2: