波佩克與戈德堡虛擬化需求
此條目沒有列出任何參考或來源。 (2012年4月7日) |
波佩克與戈德堡虛擬化需求(英語:Popek and Goldberg virtualization requirements)是一組充分條件,用於驗證某一計算機體系結構可否被有效虛擬化。傑拉爾德·J·波佩克與羅伯特·P·戈德堡於1974年合作論文《可虛擬第三代架構的規範化條件(英語:Formal Requirements for Virtualizable Third Generation Architectures)》中提出。儘管這組條件基於簡單化假設獲得,但它們仍為判定一個計算機架構是否能夠有效支持虛擬化提供了一個便利方法,也為設計可虛擬化計算機架構給出了指導原則。
引入
[編輯]系統虛擬機(system virtual machine)是指能夠虛擬包括單或多處理器、記憶體、外存及周邊設備在內之全體硬件資源的虛擬機。虛擬機監視器(virtual machine monitor,VMM)是一個軟件,用於提供虛擬機的抽象(Abstraction)。當分析一個VMM所創造的環境時,有三點性質值得特別關注:
- 等價性:一個運行於VMM下的程序,其行為應與直接運行於等價物理機上的同程序的行為完全一致。
- 資源控制:VMM對虛擬資源進行完全控制。
- 效率性:機器指令中經常使用的那一部分應在沒有VMM干預下執行。
波佩克與戈德堡認為VMM應具備上述三個性質。今天來看,VMM通常被認為具備前兩個性質即可。
波佩克與戈德堡描述了一台物理機為了能夠運行具備以上性質之VMM,其指令集架構(Instruction Set Architecture,ISA)必須滿足的特徵。儘管這些分析使用所謂「第三代架構模型」(如IBM 360和DEC公司的PDP-10)得出相關特徵,它們對於現在的計算機也是足夠適用的。這個模型包括一個運行於系統或用戶模式的CPU,並可以訪問線形、統一化可編址內存。它還假設,指令集有一個子集只能運行於系統模式(內核態);內存通過一個重定位寄存器進行尋址。輸入/輸出和中斷未被考慮。
虛擬化需求
[編輯]為導出虛擬化需求,波佩克與戈德堡將ISA的全部指令分為三類。
- 優先級指令
- 當處理器處於用戶態時自陷,處於內核態時不自陷的指令。
- 控制敏感指令
- 試圖改變系統資源配置的指令。
- 行為敏感指令
- 其行為或結果取決於資源配置狀態(如重定位寄存器的內容或處理器所處模式)的指令。
波佩克與戈德堡的分析結果主要歸納如下:
定理1:對於任何傳統的第三代計算機,只要其敏感指令是優先級指令的一個子集,就可以為其建立VMM。
直觀地說,這條定理指出,欲構造一個VMM,其充分條件是所有可能影響VMM正常工作的指令(即敏感指令)能夠自陷並將控制權移交給VMM。這就保證了資源控制;非特權指令則必須被本地(物理機)執行——也就是更有效率地執行。等價性也得到滿足。
一個關聯問題是遞歸虛擬化的ISA需求,即探討在什麼樣的條件下可以建立一個能運行於自身拷貝上的VMM。波佩克與戈德堡指出,
定理2:一台傳統第三代計算機是遞歸虛擬的,當
- 它是可虛擬的;
- 可以為它建立一台不加任何時間依賴性的VMM。
處理關鍵指令
[編輯]定理1所給出的條件可以通過犧牲第三條性質、效率性來放寬。因此,許多按波佩克與戈德堡之定義應歸類為非可虛擬的ISA也有VMM。但是,虛擬這種體系結構意味着對一些關鍵指令,即敏感且非特權指令,必須作出正確處理。動態重編譯中常用的補丁方法在這裡得到運用:在運行時發現這樣的指令,並以自陷到VMM來替換。