虛擬機管理器

虛擬機管理器(VMM)是的實際作業系統,它建立和維護一個管理虛擬機的框架,同時為其他vxd程式提供許多重要的服務。

基本介紹

基本信息,記憶體管理,處理中斷,執行緒調度,主調度器,虛擬機,

基本信息

虛擬機管理器(VMM)它建立和維護一個管理虛擬機的框架,同時為其他vxd程式提供許多重要的服務。

記憶體管理

VMM使用Intel 80386或更新的處理器的記憶體調頁能力來為系統虛擬機創建一個32位的虛地址空間。它把這個地址空間分為四個不同的部分:
V86區 地址從0H到10FFEFH,這個區屬於當前執行的虛擬機。
應用程式私有區地址從4MB到2GB。這是Win32應用程式運行的空間。每個Win32的進程都有它自己的2GB(要減去4MB)。
應用程式共享區地址從2GB到3GB。這個區域是在虛擬機內的所有應用程式共享的。系統DLL(user32,kernel32,gid32)都駐存在這裡。所有的Win16程式也放在這裡,因為它們行為都是不規範的的:它們對記憶體中的其他Win16程式進行讀寫。只有在這個區域裡,Win16程式才可以看到其他所有的Win16程式。記憶體映射檔案和分配給DPMI的記憶體也被存放在這裡。
系統共享區地址從3GB到4GB。這裡是VMM和VXM存放的地方。
VMM為VxD程式提供三種VxD服務:
頁面記憶體服務 這種服務分配/管理頁面大小為4KB的記憶體。這是提供的最低級的服務,其他所有的服務都是建立在頁面記憶體服務上的。
堆記憶體服務 管理小的記憶體塊。這種高級別的記憶體管理服務建立在頁面記憶體服務的基礎上。
表服務管理可用來實行鏈結表的固定大小的記憶體塊。

處理中斷

在保護模式下,中斷指向中斷描述表(IDT)。VMM通過VxD的幫助監視虛擬機的IDT。通常VMM處理IDT內幾乎所有的中斷入口。它進行第一級的中斷處理:保存被中斷程式的狀態,把控制傳送到第二級的中斷處理,第二級的中斷處理通常由各種VxD程式來進行實際的處理。當第二級中斷處理程式完成了它的工作之後,它把控制轉交給重分派程式,由重分派程式來恢復被中斷程式的狀態並從先前被中斷的地方繼續執行。
上面的描述太過簡單。由於被中斷的虛擬機的時間片可能已過,重分派也許不會馬上執行。VxD程式通過VMM服務如:Set_PM_Int或Hook_V86_Int_Chain來安裝中斷處理。VxD程式不應該直接改動IDT中的中斷入口(除非你很確切的知道將發生的後果)。

執行緒調度

VMM使用兩個調度器組件來在虛擬機之間實現有優先權的多執行緒處理:

主調度器

時間片管理器或副調度器
主調度器的任務是選擇有最高優先權的執行緒來執行。這種選擇在VMM處理一個中斷(如計時器中斷)時進行。選擇的結果決定了當VMM從中斷服務返回時由哪一個執行緒/虛擬機獲得控制權。主調度器工作的結果是確定的,一個執行緒要么獲得控制權,要么沒有,只有一個執行緒可以得到控制權。VMM和其他的VxD可以通過VMM服務來調整執行緒的執行優先權。例如,當一個硬中斷髮生時,VMM就會增加中斷處理的執行優先權以便讓它在儘可能短的時間內有更高的機會被調用。
副調度器通過主調度器提供的服務來給享有最高優先權的執行緒分配cpu時間。副調度器給每個執行緒一個時間片。當一個執行緒執行到它的時間片完結時,副調度器就增加下一個執行緒的優先權,這樣它就會被主調度器選中並執行。
你可以從Walter Oney''s Systems Programming for Windows 95和Windows 95 DDK 文檔裡面得到關於這個問題的細節

虛擬機

通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。通過虛擬機軟體,你可以在一台物理計算機上模擬出一台或多台虛擬的計算機,這些虛擬機完全就像真正的計算機那樣進行工作,例如你可以安裝作業系統、安裝應用程式、訪問網路資源等等。對於你而言,它只是運行在你物理計算機上的一個應用程式,但是對於在虛擬機中運行的應用程式而言,它就像是在真正的計算機中進行工作。因此,當我在虛擬機中進行軟體評測時,可能系統一樣會崩潰,但是,崩潰的只是虛擬機上的作業系統,而不是物理計算機上的作業系統,並且,使用虛擬機的“Undo”(恢復)功能,我可以馬上恢復虛擬機到安裝軟體之前的狀態。

相關詞條

熱門詞條

聯絡我們