TW201317781A - 虛擬機器記憶體的分享方法與電腦系統 - Google Patents

虛擬機器記憶體的分享方法與電腦系統 Download PDF

Info

Publication number
TW201317781A
TW201317781A TW100145074A TW100145074A TW201317781A TW 201317781 A TW201317781 A TW 201317781A TW 100145074 A TW100145074 A TW 100145074A TW 100145074 A TW100145074 A TW 100145074A TW 201317781 A TW201317781 A TW 201317781A
Authority
TW
Taiwan
Prior art keywords
memory
virtual machine
pages
free
marked
Prior art date
Application number
TW100145074A
Other languages
English (en)
Other versions
TWI452468B (zh
Inventor
Han-Lin Li
Jui-Hao Chiang
Tzi-Cker Chiueh
Ying-Shiuan Pan
Po-Jui Tsao
Original Assignee
Ind Tech Res Inst
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ind Tech Res Inst filed Critical Ind Tech Res Inst
Priority to CN201110442250.7A priority Critical patent/CN103064796B/zh
Priority to US13/363,365 priority patent/US9058197B2/en
Publication of TW201317781A publication Critical patent/TW201317781A/zh
Application granted granted Critical
Publication of TWI452468B publication Critical patent/TWI452468B/zh

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

一種虛擬機器記憶體的分享方法,此分享方法用於在執行至少一個虛擬機器的電腦系統上。此分享方法包括以下步驟。取得虛擬機器所對應的記憶體映射圖,此記憶體映射圖存有所對應的虛擬機器中記憶體頁面的使用狀態。根據虛擬機器所對應的記憶體映射圖,標記虛擬機器上未被使用的記憶體頁面為空閒頁。分享虛擬機器中的空閒頁。藉此,虛擬機器可以分享未被使用的記憶體頁面。一種使用上述分享方法的電腦系統亦被提出。

Description

虛擬機器記憶體的分享方法與電腦系統
本揭露是有關於一種可分享虛擬機器中未使用記憶體的方法與電腦系統。
隨著電腦硬體裝置的成本越來越降低以及大型伺服器的需求越來越高,虛擬機器(Virtual Machine)也越來越被重視。虛擬機器為一種介面,應用於一軟體與電腦系統之間,並可提供此電腦系統的各種資源給上述軟體使用。此軟體通常為一作業系統,因此,作業系統可以透過虛擬機器來存取電腦系統上的資源。然而,在一電腦系統上可以安裝多個虛擬機器,每個虛擬機器上可安裝不同的作業系統。舉例來說,微軟的windows作業系統與linux作業系統便可同時安裝在一個電腦系統上不同的虛擬機器中。
另一方面,在開發新的作業系統時更可在一電腦系統上測試不同版本的作業系統,其中各個作業系統也被安裝在不同的虛擬機器上,當其中一個測試的作業系統發生錯誤時便不會導致整個電腦系統當機。另外,隨著雲端計算(Cloud Computing)的應用越來越廣,伺服器的機動性(mobility)也越來越重要。而由於虛擬機器能讓作業系統與電腦系統之間的耦合關係被鬆綁,因此一個作業系統可以隨著虛擬機器動態的被移動到另外一個電腦系統,藉此平衡伺服器的負載。
然而,雖然理論上電腦系統上可以執行多個虛擬機器,但是可執行的虛擬機器數量還是會受到限制,其中一個限制的原因便是記憶體容量的問題。在一電腦系統上所配置的記憶體是有限的,若平均的將所有的記憶體分配給所執行的虛擬機器,則每個虛擬機器所能運用的記憶體便可能不足。然而,這些虛擬機器中可能會使用到相同的程式碼或是資料(例如,window作業系統的核心程式),因此每一個虛擬機器上都存有這些相同的資料。若能將這些虛擬機器中相同的資料分享,使各個虛擬機器只使用一份程式碼或資料於電腦系統的記憶體中,便能更有效的利用電腦系統的記憶體。其中一種分享記憶體的作法是,針對每個虛擬機器中的每一個記憶體分頁(memory page),根據一個雜湊函數(hash function)來計算出一個雜湊值,並比對各個虛擬機器中的記憶體分頁是否有相同雜湊值。若不同的虛擬機器中存在相同的雜湊值的記憶體分頁,則這些記憶體分頁便可能是存有相同的資料,可以進一步的分享。然而,此方法必須對每個虛擬機器的每個記憶體分頁都計算雜湊值,所以非常的耗時。因此如何有效的分享虛擬機器中的記憶體,為此領域研究人員所關心的問題。
本揭露提出一種虛擬機器記憶體的分享方法,可以快速的分享一電腦系統上所執行的各虛擬機器的記憶體。
本揭露提出一種電腦系統,可以快速的分享此電腦系統上所執行的各虛擬機器的記憶體。
本揭露提出一種虛擬機器記憶體的分享方法,此分享方法用於執行至少一個虛擬機器的電腦系統中。此分享方法包括以下步驟。取得虛擬機器所對應的記憶體映射圖,此記憶體映射圖存有所對應的虛擬機器中記憶體頁面的使用狀態。根據虛擬機器所對應的記憶體映射圖,標記虛擬機器上未被使用的記憶體頁面為第一空閒頁。以及,分享虛擬機器中的第一空閒頁。
以另外一個角度來說,本揭露還提出一種電腦系統,用以執行至少一個虛擬機器。此電腦系統包括有記憶單元、處理單元、記憶體控制單元。其中記憶單元包括有多個實體記憶體頁面,而處理單元耦接至該記憶單元。記憶體控制單元則耦接至上述處理單元與記憶體單元,並用以取得上述虛擬機器所對應的記憶體映射圖,此記憶體映射圖存有所對應的虛擬機器中記憶體頁面的使用狀態。記憶體控制單元更用以根據虛擬機器所對應的記憶體映射圖,標記虛擬機器上未被使用的記憶體頁面為多個第一空閒頁,並分享各虛擬機器中的第一空閒頁。
基於上述,本揭露提出了一種虛擬機器記憶體的分享方法與一種電腦系統,其可以分享電腦系統上虛擬機器中未使用的記憶體分頁。由於本揭露並不需要對虛擬機器的記憶體分頁計算雜湊值,因此可以提升執行的速度。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
[第一實施例]
圖1為依照本揭露第一實施例所繪示的電腦系統方塊圖。
請參照圖1,電腦系統100包括處理單元120、記憶單元140、與記憶體控制單元160。
處理單元120耦接至記憶單元140,用以執行電腦系統100中的軟體及軔體。處理單元120例如為中央處理器(Central Process Unit,CPU)。
記憶單元140包含了多個實體記憶體頁面142。記憶單元140例如為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)或靜態隨機存取記憶體(Static Random Access Memory,SRAM)。
記憶體控制單元160耦接至處理單元120與記憶體單元140,用以控制記憶體單元140中的實體記憶體頁面142。記憶體控制單元160例如為微處理器(microprocessor),執行一非揮發性記憶體(未繪示)中的程式碼。
電腦系統100上執行了多個虛擬機器,而每個虛擬機器上可執行一作業系統。請參照圖2,圖2為依照本揭露實施例所繪示的電腦系統與虛擬機器的示意圖。虛擬機器監控程序(Virtual Machine Monitor,VMM)220被執行在電腦系統100上,用以控制電腦系統100上所有的資源。其中電腦系統100的資源包括處理單元120、記憶單元140、或是電腦系統100上的輸入輸出(input output,IO)裝置(未繪示)的執行與使用。在本實施例中,VMM 220建置了虛擬機器230與虛擬機器240,虛擬機器230與虛擬機器240便可以透過VMM 220來存取上述電腦系統100的資源。然而虛擬機器監控程序220可以提供數目更多或更少的虛擬機器,本揭露並不限制虛擬機器的數目。
VMM 220可將電腦系統100上的資源分配給虛擬機器230與虛擬機器240。以記憶體為例,VMM 220將記憶單元140中的實體記憶體頁面142分配給虛擬機器230與虛擬機器240,使虛擬機器230中包含了多個記憶體頁面232,並使虛擬機器240中包含了多個記憶體頁面242。值得注意的是,記憶體頁面232與記憶體頁面242為客端實體記憶體(guest physical memory),也就是說記憶體頁面232與記憶體頁面242並不是實體的記憶體,僅是被對應至記憶單元140中實體記憶體頁面142的虛擬記憶體。
另一方面,虛擬機器230上安裝了作業系統260,且虛擬機器240上安裝了作業系統250。如此一來,作業系統260便可以存取虛擬機器230上的資源(例如,記憶體頁面232),而作業系統250便可以存取虛擬機器240上的資源(例如,記憶體頁面242)。而作業系統260中也包含了多個虛擬記憶體頁面262,作業系統260是用邏輯位置(logical address)來存取這些虛擬記憶體頁面262。當作業系統260用邏輯位置存取虛擬記憶體頁面262時,此邏輯位置會被作業系統260轉換為記憶體頁面232的客端實體位置(guest physical address),而VMM 220再將此客端實體位置轉換為實體記憶體頁面142的實體位置(physical address)。作業系統260透過這樣的轉換關係來存取實體記憶體頁面142。作業系統250也透過類似的轉換用邏輯位置來存取實體記憶體頁面142,在此便不再贅述。
而作業系統260中的記憶體映射圖(memory map)264則存放著記憶體頁面232的使用狀態。在一實施例中,作業系統260為微軟windows作業系統,記憶體映射圖264則為頁框值資料庫(page frame number database,PFN database)。而頁框值資料庫為陣列型態的資料結構,此陣列的每一個元素中包括”Type”欄位,而”Type”欄位記錄著對應的一個記憶體頁面232的使用狀態。而記憶體頁面232的使用狀態例如為已配置、或未使用等。在一實施例中,作業系統250為Linux作業系統,並使用對偶式記憶體管理演算法(Buddy System Algorithm)來管理空閒頁,記憶體映射圖254是名為mem_map的陣列資料結構。然而,本揭露並不限制虛擬機器上作業系統的種類,也不限制記憶體映射圖的資料結構。
圖3為依照本揭露實施例之虛擬機器記憶體分享方法的流程圖。
請參照圖3,在步驟S302中,本實施例之記憶體控制單元160取得對應各虛擬機器的記憶體映射圖在記憶體中之位址,並藉由此位址得到記憶體映射圖。詳細的說,記憶體控制單元160取得對應於虛擬機器230的記憶體映射圖264,以及對應於虛擬機器240的記憶體映射圖254。在一實施例中,作業系統260為windows作業系統,而在windows作業系統中執行檔、動態連結資料庫(dynamically linked libraries,DLLs)或核心印象檔(kernel image)皆符合可攜帶可執行(portable executable,PE)的格式。記憶體控制單元160可以根據有PE格式的核心印象檔找到此核心印象檔在記憶體中的基準地址(base address),並可以找到所對應的程式資料庫(program database,PDB)檔案。記憶體控制單元160可以從上述程式資料庫檔案找到作業系統260中記憶體映射圖264在記憶體中相對於核心印象檔的相對位置。記憶體控制單元160將上述的相對位置與基準位置結合,便可以得到記憶體映射圖264的記憶體位置。然而,本揭露並不限制記憶體控制單元160取得記憶體映射圖的方式。
在步驟S304中,記憶體控制單元160根據各虛擬機器所對應的記憶體映射圖,標記各虛擬機器上未被使用的記憶體頁面為多個第一空閒頁。請參考圖4A(a),圖4A為依照本揭露實施例所繪示的第一空閒頁的示意圖。舉例來說,記憶體控制單元160根據記憶體映射表264取得記憶體頁面232的使用狀態,並將使用狀態為”未使用”的記憶體頁面標示為第一空閒頁234;並且根據記憶體映射表254取得記憶體頁面242的使用狀態,將虛擬機器240中未使用的記憶體頁面標示為第一空閒頁244。以下稱第一空閒頁時所指的是標記為第一空閒頁的記憶體分頁。值得注意的是,第一空閒頁234對應至記憶單元140中的實體記憶體頁面143,而第一空閒頁244對應至記憶單元140中的實體記憶體頁面144,因此,第一空閒頁234與第一空閒頁244分別佔據了記憶單元140不同的實體記憶體頁面。值得注意的是,若第一空閒頁234與第一空閒頁244內的資料並沒有被重置(即,全設為0),則即使經過雜湊函數的運算,第一空閒頁234與第一空閒頁244很有可能會產生不同的雜湊值,也就不能被習知的做法分享。
在步驟S306中,記憶體控制單元160分享各虛擬機器的第一空閒頁。舉例來說,記憶體控制單元160分享第一空閒頁234與第一空閒頁244,使得第一空閒頁234與第一空閒頁244會對應至相同的實體記憶體頁面143(如圖4A(b)所示)。在一實施例中,VMM 220是名為Xen的開放原始碼的虛擬機器監控程序,其中提供了nominate與share的指令,用以分享記憶體。記憶體控制單元160可藉由呼叫上述nominate與share的指令來分享記憶體。另一方面,在另一實施例中,記憶體控制單元160所執行的功能被實作為在虛擬機器230上的程式碼,由處理單元120執行並呼叫上述的nominate與share指令來分享記憶體。本揭露並不限制分享虛擬機器上記憶體的方式。
在其他實施例中,為了避免記憶體控制單元160在分享第一空閒頁234與第一空閒頁244的同時,虛擬機器230(或虛擬機器240)將資料寫入第一空閒頁234(或第一空閒頁244),此種情形會使得記憶體控制單元160分享已被使用的記憶體分頁,造成錯誤。因此,在本揭露的一實施例中,記憶體控制單元160在步驟S306之前還會暫停各虛擬機器對第一空閒頁的存取。並且在步驟S306之後,記憶體空置單元160還會恢復各虛擬機器對第一空閒頁的存取。
然而,本揭露並不限制分享記憶體頁面時虛擬機器的個數,本揭露也可用在只有建置一個虛擬機器的電腦系統上。圖4B為依照本揭露一實施例所繪示的一個虛擬機器的記憶體頁面的分享示意圖。
請參考圖4B,在一實施例中,VMM 220上只建置了一個虛擬機器230,虛擬機器230上執行作業系統260。記憶體控制單元160依照圖3的流程,先取得虛擬機器220上的記憶體映射圖264(步驟S302)。接著在步驟S304中,記憶體控制單元160根據虛擬機器所對應的記憶映射圖264,標記虛擬機器230上未被使用的記憶體頁面232為第一空閒頁。例如,記憶體控制單元160標記未使用的記憶體頁面234與記憶體頁面264為第一空閒頁。接著在步驟S306中,分享虛擬機器230中的第一空閒頁,使得記憶體頁面232中不同的記憶體頁面可映射至實體記憶體頁面142中相同的實體記憶體頁面。例如,記憶體控制單元160在分享記憶體頁面234與記憶體頁面236之後,使得記憶體頁面234與記憶體頁面236被映射至實體記憶體頁面145。
[第二實施例]
請參考圖5,圖5為依照本揭露第二實施例之記憶體分享方法的流程圖。其中步驟S302、S304、S306已詳細說明如上,在此便不再贅述。
在步驟S303中,記憶體控制單元160暫停各虛擬機器對記憶體頁面的存取。也就是說,記憶體控制單元160暫停了虛擬機器230對記憶體頁面232的存取,也暫停了虛擬機器240對記憶體頁面242的存取。
並且,在步驟S305中,記憶體控制單元恢復了各虛擬機器對記憶體頁面的存取。也就是說,記憶體控制單元160恢復了虛擬機器230對記憶體頁面232的存取,也恢復了虛擬機器240對記憶體頁面242的存取。
如此一來,就可以避免記憶體控制單元160在進行步驟S304的同時,各虛擬機器將資料寫入記憶體頁面所造成的錯誤。
[第三實施例]
請參考圖6及圖7,圖6為依照本揭露第三實施例之記憶體分享方法的流程圖;圖7為依照本揭露第三實施例所繪示的未使用記憶體分頁的示意圖。其中步驟S302與步驟S304已詳細說明如上,在此便不再贅述。然而,為了避免在步驟S304之後並且在記憶體控制單元160分享記憶體頁面之前有資料寫入至欲分享的記憶體頁面,本實施例還會根據記憶體映射圖再次標記未使用的記憶體頁面為第二空閒頁並且使用唯讀(read-only)標記來確認記憶體頁面未被寫入過。
舉例來說,在步驟S304中,記憶體控制單元160根據虛擬機器230所對應的記憶體映射圖264,標記各虛擬機器上未被使用的記憶體頁面為多個第一空閒頁720(如圖7(a)所示)。
接著在步驟S602中,記憶體控制單元160標記虛擬機器上的記憶體頁面為唯讀狀態。具體來說,記憶體控制單元160是將被標記為第一空閒頁的記憶體頁面標記為唯讀狀態。以虛擬機器230為例,第一空閒頁720皆被記憶體控制單元160標記為唯讀狀態。除此之外,在步驟S602之後,若有被標記為唯讀狀態的記憶體頁面(例如,第一空閒頁720)被寫入時,記憶體控制單元160會取消被寫入的記憶體頁面的唯讀狀態。
接著在步驟S604中,記憶體控制單元160根據各虛擬機器所對應的記憶體映射圖,標記各虛擬機器上未被使用的記憶體頁面為多個第二空閒頁。例如,記憶體控制單元160根據對應於虛擬機器230的記憶體映射圖264,將記憶體頁面232中未使用的記憶體頁面標示為第二空閒頁730(如圖7(b)所示)。值得注意的是,在記憶體控制單元執行步驟S304與步驟S604的時間之間,記憶體頁面731被改寫了,因此第二空閒頁730與第一空閒頁720的範圍並不相同。並且,記憶體頁面731的唯讀狀態也會被取消。
接著,在步驟S606中,記憶體控制單元160將分享各虛擬機器中同時被標記為唯讀、第一空閒頁以及第二空閒頁的記憶體頁面。舉例來說,記憶體控制單元160檢查第一空閒頁720與第二空閒頁730所包含的記憶體分頁,得到重複的記憶體頁面740(如圖7(c)所示)。並且在分享記憶體頁面時,記憶體控制單元160檢查記憶體頁面740是否仍是唯讀狀態以判斷記憶體頁面740是否有遭到寫入。如果記憶體頁面740仍是唯讀狀態則記憶體控制單元160保持其唯讀狀態並分享記憶體頁面740。
在本實施例中,VMM 220是名為Xen的開放原始碼的虛擬機器監控程序,其中提供了nominate與share的指令,用以分享記憶體。更詳細的說,記憶體控制單元160是先呼叫nominate指令,取得記憶體頁面的握把(handle)。然後再根據兩個記憶體頁面的握把來呼叫share指令,藉此分享此兩記憶體頁面(步驟S606)。也就是說步驟S606是藉由呼叫share指令來實作,而nominate的指令必須在步驟S606之前完成。舉例來說,請參照圖4A,記憶體控制單元160先呼叫nominate指令取得被標記為第一空閒頁234的各個記憶體分頁的握把,接著呼叫nominate指令取得虛擬機器240裡標記為第一空閒頁244的各個記憶體分頁的握把。接著記憶體控制單元160再跟據標記為第一空閒頁234的記憶體分頁的握把,以及被標記為第一空閒頁244的記憶體分頁的握把來呼叫share指令,使得第一空閒頁234與第一空閒頁244的記憶體分頁可以分享實體記憶體分頁143。由於nominate與share的指令並不是被同時執行,因此會產生在nominate與share之間有資料寫入的問題。
請參考圖8,圖8為依照本揭露第三實施例所繪示的分享記憶體方法各步驟的時間軸示意圖。請同時參考圖7與圖8。
如圖8(a)所示的情況,記憶體控制單元160先執行步驟S304並將未使用的記憶體分頁標示為第一空閒頁720,接著虛擬機器230寫入資料到記憶體頁面731(步驟S802)。然後在步驟S804中記憶體控制單元160執行nominate指令,但所得到的記憶體握把會是標記為第一空閒頁720的記憶體分頁。也就是說,記憶體控制單元160所得到的握把所指向的第一空閒頁720中包含有一個已被使用的記憶體分頁731。在這樣的情況下,記憶體控制單元160在執行share指令時(步驟S806),會分享已被使用的記憶體分頁731,造成錯誤。
然而,在本實施例的分享方法中會確認兩次未使用的記憶體分頁並使用唯讀標記。本實施例如圖8(b)所示,在記憶體控制單元160執行步驟S304之後,記憶體控制單元160會標記記憶體頁面232為唯讀狀態(步驟S602)。並且在步驟S802與S804以後,還會進行第二次的確認(步驟S604),標示非使用的記憶體頁面為第二空閒頁730。如此一來,在步驟S604中便會得到第二空閒頁730,而不會包括已被寫入的記憶體頁面731。因此在步驟S606中記憶體控制單元160執行share指令以分享同時被標記為唯讀、第一空閒頁以及第二空閒頁的記憶體頁面740時,並不會分享已被使用的記憶體分頁731。
在其他實施例中,記憶體控制單元160在圖6的流程圖中也可只執行步驟S302、S304、S604與S606。也就是說,記憶體控制單元160並不標記記憶體頁面為唯讀狀態(步驟S602);而在步驟S606中,記憶體控制單元160分享被標記為第一空閒頁且也被標記為第二空閒頁的記憶體頁面。
綜上所述,本揭露提出了一種虛擬機器記憶體的分享方法與一種電腦系統。本揭露由於所分享的記憶體是虛擬機器中未被使用的記憶體分頁,因此不需要經過雜湊函數的比對,能夠提升效率。另一方面,本揭露在確認虛擬機器中未被使用的記憶體分頁時,會先暫停各虛擬機器對記憶體分頁的存取,或者是確認兩次未使用的記憶體分頁,使得可以解決在存取記憶體分頁的同時有資料被寫入的問題。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...電腦系統
120...處理單元
140...記憶單元
142、143、144、145...實體記憶體頁面
220...虛擬機器監控程序
230、240...虛擬機器
232、234、236、242、731、740...記憶體頁面
250、260...作業系統
262、252...虛擬記憶體頁面
254、264...記憶體映射圖
234、244、720...第一空閒頁
730...第二空閒頁
S302、S303、S304、S305、S306、S602、S604、S606...虛擬機器記憶體分享方法的各步驟
S802...寫入資料
S804...呼叫nominate指令
S806...呼叫share指令
圖1為依照本揭露第一實施例所繪示的電腦系統方塊圖。
圖2為依照本揭露第一實施例所繪示的電腦系統與虛擬機器的示意圖。
圖3為依照本揭露第一實施例之虛擬機器記憶體分享方法的流程圖。
圖4A為依照本揭露第一實施例所繪示的第一空閒頁的示意圖。
圖4B為依照本揭露第一實施例所繪示的一個虛擬機器的記憶體頁面的分享示意圖。
圖5為依照本揭露第二實施例之記憶體分享方法的流程圖。
圖6為依照本揭露第三實施例之記憶體分享方法的流程圖。
圖7為依照本揭露第三實施例所繪示的未使用記憶體分頁的示意圖。
圖8為依照本揭露第三實施例所繪示的分享記憶體方法各步驟的時間軸示意圖
S302、S304、S306...虛擬機器記憶體分享方法的各步驟

Claims (20)

  1. 一種虛擬機器記憶體的分享方法,用於一電腦系統,該電腦系統用以執行至少一虛擬機器,該分享方法包括:取得該至少一虛擬機器所對應的一記憶體映射圖,該記憶體映射圖存有所對應的該至少一虛擬機器中多個記憶體頁面的使用狀態;根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為多個第一空閒頁;以及分享該至少一虛擬機器中的該些第一空閒頁。
  2. 如申請專利範圍第1項所述之分享方法,該方法還包括:根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為多個第二空閒頁;分享該至少一虛擬機器中被標記為該些第一空閒頁且也被標記為該些第二空閒頁的該些記憶體頁面。
  3. 如申請專利範圍第2項所述之分享方法,其中被標記為該些第二空閒頁的該些記憶體頁面的個數少於被標記為該些第一空閒頁的該些記憶體頁面的個數。
  4. 如申請專利範圍第2項所述之分享方法,其中根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁的步驟之後還包括:標記被標記為該些第一空閒頁的該些記憶體頁面為唯讀狀態。
  5. 如申請專利範圍第4項所述之分享方法,其中標記被標記為該些第一空閒頁的該些記憶體頁面為唯讀狀態的步驟之後還包括:當被標記為唯讀狀態且被標記為該些第一空閒頁的該些記憶體頁面被寫入時,取消被寫入的該些記憶體頁面的唯讀狀態。
  6. 如申請專利範圍第5項所述之分享方法,其中分享該至少一虛擬機器中被標記為該些第一空閒頁且也被標記為該些第二空閒頁的該些記憶體頁面的步驟還包括:分享同時被標記為唯讀狀態、第一空閒頁以及第二空閒頁的該些記憶體頁面。
  7. 如申請專利範圍第1項所述之分享方法,其中根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁的步驟之前還包括:暫停該至少一虛擬機器對該些記憶體頁面的存取。
  8. 如申請專利範圍第7項所述之分享方法,其中根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁的步驟之後還包括:恢復該至少一虛擬機器對該些記憶體頁面的存取。
  9. 如申請專利範圍第1項所述之分享方法,其中分享方法該至少一虛擬機器中的該些第一空閒頁的步驟之前還包括:暫停該至少一虛擬機器對該些第一空閒頁的存取。
  10. 如申請專利範圍第9項所述之分享方法,其中分享該至少一虛擬機器中的該些第一空閒頁的步驟之後還包括:恢復該至少一虛擬機器對該些第一空閒頁的存取。
  11. 一種電腦系統,用以執行至少一虛擬機器,該電腦系統包括:一記憶單元,包括有多個實體記憶體頁面;一處理單元,耦接至該記憶單元;以及一記憶體控制單元,耦接至該處理單元與該記憶單元;其中,該記憶體控制單元取得該至少一虛擬機器所對應的一記憶體映射圖,該記憶體映射圖存有所對應的該虛擬機器中多個記憶體頁面的使用狀態;該記憶體控制單元根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為多個第一空閒頁;以及該記憶體控制單元分享該至少一虛擬機器中的該些第一空閒頁。
  12. 如申請專利範圍第11項所述之電腦系統,其中該記憶體控制單元根據該至少一虛擬機器所對應的該記憶體映射圖,標記該至少一虛擬機器上未被使用的該些記憶體頁面為多個第二空閒頁;以及該記憶體控制單元分享該至少一虛擬機器中被標記為該些第一空閒頁且也被標記為該些第二空閒頁的該些記憶體頁面。
  13. 如申請專利範圍第12項所述之電腦系統,其中被標記為該些第二空閒頁的該些記憶體頁面的個數少於被標記為該些第一空閒頁的該些記憶體頁面的個數。
  14. 如申請專利範圍第12項所述之電腦系統,其中該記憶體控制單元在標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁之後,該記憶體控制單元還將被標記為該些第一空閒頁的該些記憶體頁面標記為唯讀狀態。
  15. 如申請專利範圍第14項所述之電腦系統,其中該記憶體控制單元在標記被標記為該些第一空閒頁的該些記憶體頁面為唯讀狀態之後,當被標記為唯讀狀態且被標記為該些第一空閒頁的該些記憶體頁面被寫入時,該記憶體控制單元取消被寫入的該些記憶體頁面的唯讀狀態。
  16. 如申請專利範圍第15項所述之電腦系統,其中該記憶體控制單元在分享該至少一虛擬機器中被標記為該些第一空閒頁且也被標記為該些第二空閒頁的該些記憶體頁面時,該記憶體控制單元是分享同時被標記為唯讀狀態、該些第一空閒頁以及該些第二空閒頁的該些記憶體頁面。
  17. 如申請專利範圍第11項所述之電腦系統,其中在標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁之前,該記憶體控制單元暫停該至少一虛擬機器對該些記憶體頁面的存取。
  18. 如申請專利範圍第17項所述之電腦系統,其中在標記該至少一虛擬機器上未被使用的該些記憶體頁面為該些第一空閒頁之後,該記憶體控制單元恢復該至少一虛擬機器對該些記憶體頁面的存取。
  19. 如申請專利範圍第11項所述之電腦系統,其中在分享該至少一虛擬機器中的該些第一空閒頁之前,該記憶體控制單元暫停該至少一虛擬機器對該些第一空閒頁的存取。
  20. 如申請專利範圍第19項所述之電腦系統,其中在分享該至少一虛擬機器中的該些第一空閒頁之後,該記憶體控制單元恢復該至少一虛擬機器對該些第一空閒頁的存取。
TW100145074A 2011-10-18 2011-12-07 虛擬機器記憶體的分享方法與電腦系統 TWI452468B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110442250.7A CN103064796B (zh) 2011-10-18 2011-12-26 虚拟机内存的共享方法与计算机系统
US13/363,365 US9058197B2 (en) 2011-10-18 2012-01-31 Method for sharing memory of virtual machine and computer system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201161548697P 2011-10-18 2011-10-18

Publications (2)

Publication Number Publication Date
TW201317781A true TW201317781A (zh) 2013-05-01
TWI452468B TWI452468B (zh) 2014-09-11

Family

ID=48871914

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100143979A TWI444824B (zh) 2011-10-18 2011-11-30 虛擬機器記憶體的鑑識方法與電腦系統
TW100145074A TWI452468B (zh) 2011-10-18 2011-12-07 虛擬機器記憶體的分享方法與電腦系統

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100143979A TWI444824B (zh) 2011-10-18 2011-11-30 虛擬機器記憶體的鑑識方法與電腦系統

Country Status (1)

Country Link
TW (2) TWI444824B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI578221B (zh) * 2014-06-27 2017-04-11 英特爾股份有限公司 確認虛擬位址轉譯

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2020045269A1 (ja) * 2018-08-28 2021-08-10 tonoi株式会社 システム、情報処理方法、及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US7702843B1 (en) * 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US8006043B2 (en) * 2008-10-06 2011-08-23 Vmware, Inc. System and method for maintaining memory page sharing in a virtual environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI578221B (zh) * 2014-06-27 2017-04-11 英特爾股份有限公司 確認虛擬位址轉譯
US9792222B2 (en) 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure

Also Published As

Publication number Publication date
TW201317780A (zh) 2013-05-01
TWI452468B (zh) 2014-09-11
TWI444824B (zh) 2014-07-11

Similar Documents

Publication Publication Date Title
US9058197B2 (en) Method for sharing memory of virtual machine and computer system using the same
US10275348B2 (en) Memory controller for requesting memory spaces and resources
US10089191B2 (en) Selectively persisting application program data from system memory to non-volatile data storage
US9086957B2 (en) Requesting a memory space by a memory controller
US9218302B2 (en) Page table management
KR101496325B1 (ko) 가상 머신의 상태를 저장, 복원하는 방법 및 장치
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
TWI457759B (zh) 用於處理分頁錯誤的方法和裝置以及非暫時性的電腦可讀取媒體
US11461045B2 (en) Platform agnostic atomic operations
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
US11836091B2 (en) Secure memory access in a virtualized computing environment
WO2019085811A1 (zh) 一种实现驱动的系统及方法
US9575796B2 (en) Virtual device timeout by memory offlining
WO2018103022A1 (zh) 帧缓存实现方法、装置、电子设备和计算机程序产品
TWI452468B (zh) 虛擬機器記憶體的分享方法與電腦系統
US20120216189A1 (en) Methods, Devices and Computer Program Products for Emulating a Physical Hard Drive as Multiple Virtual Hard Drives
US11074200B2 (en) Use-after-free exploit prevention architecture
US20120011330A1 (en) Memory management apparatus, memory management method, program therefor
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US20230266992A1 (en) Processor for managing resources using dual queues, and operating method thereof
JP6439887B1 (ja) 情報処理装置
US20130262790A1 (en) Method, computer program and device for managing memory access in a multiprocessor architecture of numa type
JP2013037589A (ja) 画像形成装置および画像形成プログラム