xen v3.0 for x86技術手冊
杭州電子科技大學網格與服務計算實驗室 周峰
第二章虛擬架構
在x86的xen系統中,只有管理程式(hypervisor)在完全的特權級的處理器下執行(也就是ring0下面,在x86下一共有4個模式,分別是r0,r1,r2,r3).它享有完全的許可權去訪問在系統中的可用的物理記憶體並分配資源給正在執行的domains.
在乙個32位的x86的系統中,客戶作業系統可以合理的使用的模式是ring1,2,3.這樣的劃分是用來防止已經分配位址空間的客戶系統訪問預留給xen的位址空間。我們期望大多數的客戶作業系統使用它們特有的操作在ring1模式下,而執行應用程式在ring3模式下。
64位的系統不可能在ring1和2模式下執行不被許可的客戶**保護管理器。客戶系統最好在ring3模式下受到限制。這個客戶系統的核心能在當前執行的應用程式和核心間進行上下文切換的時候保護它的應用程式.
在這章中我們考慮xen最基礎的虛擬架構:cpu狀態、異常和中斷處理、計時器等。至於其他的例如記憶體和裝置訪問我們將在後面的章節討論。
xen處理所有的特權狀態。客戶作業系統沒有直接訪問cr3的許可權而且也不允許在 eflags中更新特權級的位.客戶系統使用介面去呼叫在xen中的操作。這樣類似的操作同樣發生在ring0和ring1模式下。
在後面的附錄a中給出了乙份系統呼叫。
假如乙個domain能為xen通過設定中斷表的系統呼叫提供一張中斷處理表那麼就形成一張虛擬的idt。這個異常處理的堆疊結構使得虛擬的中斷處理就像真實中斷的處理一樣。
中斷通過事件通道的對映被虛擬化。它是被通過目標的domain提供的乙個set_callbacks的系統呼叫來非同步的實現的。乙個客戶的作業系統可以把這些事件對映到標準的中斷的分配機構。xen負責決定domin去處理每乙個目標物理的中斷**。想要知道詳細的關於事件繫結到事件通道的過程,請看第八章。
客戶作業系統需要知道真實的時間和虛擬的時間。進一步講,xen有一種在排程時關於計時器的概念。這個關於計時器的概念是這樣的:
週期時間
它提供了一種合理的計時器的參考。這個週期姓的計時器可以被用來精確的推斷其他的參考的計時器。在對稱多處理器的機器上,它被認為在不同cpu之間的週期性計時是同步的。當前基於x86的cpu(包括inter)的執行達到通訊的反應時。
系統時間
這是乙個64位的計時器,它從系統啟動時開始計時,擁有毫秒級的精確度。
時鐘時間
這個是乙個從1970開始計時的。domain0維持著它的精確性。
domain虛擬時間
在只有一台domin被執行的時候(當乙個domain被排程分離時候)它像系統時間一樣。所以共享cpu資源的dmain將要分配好享有物理時間比例作為自身增長的虛擬時間。
通過客戶作業系統共享的記憶體頁的方式xen來為系統時間和時鐘時間輸出timestamps(???不知道怎麼翻)。xen同樣提供了週期計時器類為timestamps基於cpu hz的立即計算。這樣允許了客戶推斷出系統和時鐘.
所有的timestamps需要被更新和動態的讀取被儲存在共享頁中的版本號。版本號在timtimestamps更新後增加,這樣可以保證客戶系統通過檢驗兩個版本號是否相等來判斷是否讀取的是一致的狀態。
xen包括了乙個週期性的計時器。它每隔10ms傳送乙個時間事件給當前執行的domain.xen排程器同樣也傳送乙個時間事件給排程的domain.這樣就允許了客戶作業系統可以為不活躍的domain調整時間。另外,xen允許每乙個domain 請求獲得乙個乙個時間事件,它通過使用set_timer_op系統呼叫來獲得指定的系統時間。客戶作業系統可以使用這個計時器判斷當它們阻塞的時候是否超時。
xen 提供了乙個統一的api介面給cpu排程程式使用。它可以在啟動時從乙個數量的排程程式中選擇乙個排程演算法,而且可以很簡單的新增自己的演算法。sedf和credit排程程式是目前xen發行版的一部分。如果credit排程處於穩定,而且將作為預設的排程,那麼sedf將不再被採用。
credit排程程式提供了合理的分配cpu資源給執行的domain.它可以使執行的vcpu在整個系統中處於負載平衡。
注意:多處理器主機支援xen已經支援多處理主機系統。當使用credit排程程式的時候,乙個domain的vcpus將被動態的在物理cpu之間轉移,這樣可以使系統的吞吐量達到最大化。vcpus同樣可以通過連線機制用手工限制的方式對映到物理cpu的子集。
xen 有乙個為domain0提供的特權的擴充套件介面,它允許domains可以在伺服器上構建和啟動其他的domains,並且可以為排程管理、記憶體、網路和
裝置管理提供控制介面.
ps:只有做了翻譯才知道自己的英文水平是如此的糟糕!有些術語就是翻譯不好!
30天學30種技術
redhat負責openshift技術推廣的shekhar gulati從2013年10月29日開始,立下心願要在30天內學習30種技術。現在,他完成了。他自己的頭銜也程式設計了 30天學30種技術 部落格作者,比evangelist感覺的確強不少。這個系列當然也為openshift 帶來了不少流量...
30年30首詩入選榜單
color darkblue 30年30首詩入選榜單 按姓氏拼音排序 艾青 古羅馬的大鬥技場 柏樺 在清朝 北島 回答 昌耀 一百頭雄牛 陳東東 雨中的馬 多多 阿姆斯特丹的河流 顧城 一代人 海子 面朝大海 春暖花開 韓東 有關大雁塔 黑大春 當我在晚秋時節歸來 藍藍 鞋匠之死 李亞偉 中文系 梁...
30 關聯文字
現有兩個文字檔案db1.txt和db2.txt。db1.txt中第一列為姓名,第二列為英語成績 db2.txt中第一列為姓名,第二列為數學成績。通過姓名欄位將db1.txt關聯到db2.txt檔案生成db3.txt檔案,使db3.txt檔案的第一列為姓名,第二列為英語成績,第三列為數學成績,第四列為...