虛擬儲存器的基本概念
• 引入、實現、特徵
請求分頁儲存管理方式
• 硬體支援、位址變換、分配演算法
• 頁面置換演算法
• 效能分析
請求分段儲存管理方式
主要相同點是都要在記憶體與外存之間交換資訊;
主要區別在於交換技術換出換進一般是整個程序(proc結構和共享正文段除外),因此乙個程序的大小受物理儲存器的限制;
而虛存中使用的調入調出技術在記憶體與外存之間來回傳遞的是儲存頁或儲存段,而不是整個程序,從而使得程序對映具有了更大的靈活性,且允許程序的大小比可用的物理儲存空間大的多 。
總之: 為了用小的記憶體實現在大的虛空間中程式的執行目的
基於區域性性原理
虛擬儲存器管理——由作業系統提供乙個比實際記憶體大的,假想的特大儲存器。
允許將乙個作業分多次調入記憶體。
若採用連續分配方式,需申請足夠空間,再分多次裝入,造成記憶體資源浪費,並不能從邏輯上擴大記憶體容量。
基本分頁 + 「請求調頁」和「頁面置換」功能。
換入和換出基本單位都是長度固定的頁面
硬體支援
一台具有一定容量的內/外存的計算機
每當要訪問的頁面不在記憶體時,便產生一缺頁中斷通知os,os則將所缺之頁調入記憶體。作為中斷,需經歷幾個步驟:
a) 「保護cpu環境」
b) 「分析中斷原因」
c) 「轉入缺頁中斷處理程式」
d) 「恢復cpu環境」等。
作為一種特殊中斷,與一般中斷有明顯區別:
(1) 在指令執行期間產生和處理中斷訊號。
(2) 一條指令在執行期間,可能產生多次缺頁中斷。
作業不一次裝入,部分裝入的情況下如何為程序分配記憶體,涉及三個問題:
① 最小物理塊數的確定
• 少於此數量程序將不能執行
• 與計算機的硬體結構有關,取決於指令的格式、功能和定址方式
② 物理塊的分配策略
物理塊的分配演算法
1. 預調頁策略
以**為基礎,將預計不久後便會被訪問的若干頁面,預先調入記憶體。
優點:一次調入若干頁,效率較好
缺點:**不一定準確,預調入的頁面可能根本不被執行到。主要用於程序的首次調入,由程式設計師指出應該先調入哪些頁 。
2. 請求調頁策略
• 執行中需要的頁面不在記憶體,便立即提出請求,由os將其調入記憶體。
• 優點:由請求調頁策略所確定調入的頁,一定會被訪問;比較容易實現。
• 缺點:每次僅調入一頁,需花費較大的系統開銷,增加了磁碟i/o的啟動頻率。
最佳optimal置換演算法
優點:保證獲得最低的缺頁率
不足:無法實現,因為無法預知一程序將來的運**況
作用:作為參照標準,評價其他演算法。
先進先出fifo置換演算法
• 優點:實現簡單,把一程序已調入記憶體的頁面按先後次序組織成乙個佇列,並設定乙個指標(替換指標),使它總是指向隊首最老的頁面。
• 不足:與程序實際執行規律不相適應(較早調入的頁往往是經常被訪問的頁,頻繁被對換造成執行效能降低)
最近最久未使用(lru)置換演算法
• 不足:
• 有時頁面過去和未來的走向之間並無必然的聯絡。
• 相應的需較多的硬體支援:記錄每個頁面自上次被訪問以來所經歷的時間t,淘汰時選擇頁面t值最大的;以及需要快速地知道哪一頁是最近最久未使用的頁面,用暫存器或棧。
clock置換演算法
又稱最近未使用演算法(nru, not recently used)
改進:主要考慮對沒訪問過的頁面再細分是否修改過的不同情況,減少因修改造成的頻繁i/o操作。
每頁除記錄是否用過a,還記錄是否修改的標誌m。置換時根據兩個標誌的值有4種不同情況的處理
其他① 最少使用 (lfu, least frequently used)
關鍵在次數記錄上
每頁設定訪問計數器,每當頁面被訪問時,該頁面的訪問計數器加1;缺頁中斷時,淘汰計數值最小的頁面,並將所有計數清零;
計數的實現類似lru,用移位暫存器,但比較時不是簡單比較暫存器的值,而是比較暫存器每位的和∑ri。
② 頁面緩衝演算法pba(page buffering algorithm)
對fifo演算法的發展,彌補了fifo可能造成的i/o開銷,又不需要lru等演算法的硬體支援。
仍用fifo演算法選擇被置換頁
但並不將其馬上換入外存。
系統將頁面放入兩個鍊錶之一:如果頁面未被修改,就將其歸入到空閒頁面鍊錶的末尾;否則將其歸入到已修改頁面鍊錶。
需要調入新的物理頁面時,將新頁面內容讀入到空閒頁面鍊錶的第一項所指的頁面,然後將第一項刪除(從空閒鍊錶摘下)。
空閒頁面和已修改頁面,仍停留在記憶體中一段時間,如果這些頁面被再次訪問,只需較小開銷,而被訪問的頁面可以返還作為程序的記憶體頁。
當已修改頁面達到一定數目後,再將它們一起調出到外存,然後將它們歸入空閒頁面鍊錶,這樣能大大減少i/o操作的次數。
請求分頁管理方式下,存在三種方式的記憶體訪問
• 頁在記憶體,且快表檢索命中
• eat= + t
• 頁在記憶體,但快表檢索沒有命中
• eat= 快表檢索時間+訪問頁表時間+修改更新快表時間+訪問頁面物理記憶體時間
= +t+ +t=2*( +t)
• 頁面不在記憶體
• eat=快表檢索時間+訪問頁表時間+缺頁中斷處理時間+修改更新快表時間+訪問頁面物理記憶體時間
= + t + + + t
• 加入概率的綜合公式(a是快表命中率,f是缺頁率)
• eat= + at +(1-a)
= +at +(1-a)
(1)分配給作業的主存塊數:
多則缺頁率低,反之則高。
(2)頁面大小:
大則缺頁率低;反之則高。
(3)頁面排程演算法:
對缺頁中斷率影響很大,但不可能找到一種最佳演算法。
(4)程式編制方法:
以陣列運算為例,如果每一行元素存放在一頁中,則按行處理各元素缺頁中斷率低;反之,按列處理各元素,則缺頁中斷率高。
在請求分段系統中,程式執行之前,只需先調入若干個分段(不必調入所有的分段),便可啟動執行。當所訪問的段不在記憶體中時,可請求os將所缺的段調入記憶體。
請求分段中的硬體支援
段表機制
缺段中斷機構
位址變換機構
作業系統 第五章 死鎖(一)
死鎖 deadlock 定義 在多道程式中,由於多個併發程序共享系統的資源,如果使用不當可能會造成一種僵局,即當某個程序提出資源的使用請求後,使得系統中一些程序處於無休止的阻塞狀態,在無外力的作用下,這些程序將無法繼續進行下去,這就是死鎖。產生死鎖的環境 1 多道程式設計技術 2 多個併發程序 3 ...
作業系統概念 第五章 CPU排程
排程準則 排程演算法 演算法評估 待補完 對於單處理器系統,cpu只能執行乙個程序,其他程序必須等待,直到cpu空閒為止。多道程式的目標是為了使任何時候都有程序在執行,使cpu的利用率最大化。cpu排程使程序在等待時 通常是等待某些io請求完成 從該程序拿走cpu的使用權交給另乙個程序,如此迴圈往復...
《作業系統》第五章 虛擬儲存器
1.常規儲存器管理方式的特徵 1 一次性 2 駐留性 2.區域性性原理 1 時間侷限性 如果程式中的某條指令被執行,則不久以後該指令可能再次執行 如果某資料被訪問過,則不久以後該資料可能再次被訪問。2 空間侷限性 一旦程式訪問了某個儲存單元,在不久之後,其附近的儲存單元也將被訪問,即程式在一段時間內...