TWI556107B - 用於安全虛擬機器間共用記憶體通訊之技術 - Google Patents

用於安全虛擬機器間共用記憶體通訊之技術 Download PDF

Info

Publication number
TWI556107B
TWI556107B TW104122172A TW104122172A TWI556107B TW I556107 B TWI556107 B TW I556107B TW 104122172 A TW104122172 A TW 104122172A TW 104122172 A TW104122172 A TW 104122172A TW I556107 B TWI556107 B TW I556107B
Authority
TW
Taiwan
Prior art keywords
virtual machine
view
computing device
shared memory
shared
Prior art date
Application number
TW104122172A
Other languages
English (en)
Other versions
TW201629779A (zh
Inventor
中島 淳
智賢 蔡
拉維 沙希塔
梅蘇 爾金
愛德恩 沃普蘭克
拉許曼 帕泰爾
亞歷山大 閔
仁 王
聰源 戴
Original Assignee
英特爾股份有限公司
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 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201629779A publication Critical patent/TW201629779A/zh
Application granted granted Critical
Publication of TWI556107B publication Critical patent/TWI556107B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

用於安全虛擬機器間共用記憶體通訊之技術
本發明係有關於用於安全虛擬機器間共用記憶體通訊之技術。
電信及其他資料網路功能愈來愈被併入網路資料中心中。例如,在歷史上已分佈於許多胞元塔之間的蜂巢式基地台功能可能現在被併入虛擬化網路資料中心中。如封包切換和封包過濾的網路功能通常需要處理大量的小型資料封包。然而,在一或更多虛擬機器中執行那些網路功能可能引入與虛擬機器之隔離邊界(例如,記憶體或I/O隔離)關聯的負擔。負擔可能限制網路功能虛擬化的流量和可擴展性,特別是用於小型資料封包的虛擬機器間通訊。
典型的電腦處理器包括對虛擬化操作的硬體支援。軟體虛擬化包括通透地執行來自主作業系統或虛擬機器監視器(VMM)內的一或更多客用作業系統。硬體虛擬 化特徵可能包括延伸特權模型、對虛擬記憶體定址之硬體輔助的支援、對延伸記憶體允許的支援、及其他虛擬化特徵。
100‧‧‧計算裝置
120‧‧‧處理器
128‧‧‧I/O子系統
130‧‧‧記憶體
138‧‧‧資料儲存裝置
122‧‧‧虛擬機器延伸(VMX)支援
124‧‧‧延伸分頁表(EPT)支援
126‧‧‧快速視圖切換(FVS)支援
132‧‧‧客用分頁表
134‧‧‧延伸分頁表
136‧‧‧延伸分頁表指標
140‧‧‧通訊子系統
142‧‧‧周邊裝置
200‧‧‧環境
202‧‧‧虛擬機器監視器
204‧‧‧目標虛擬機器
206‧‧‧來源虛擬機器
208‧‧‧認證模組
210‧‧‧安全視圖模組
212‧‧‧共用記憶體模組
218‧‧‧資料存取模組
222‧‧‧緩衝器所有權模組
224‧‧‧視圖切換模組
228‧‧‧安全視圖
230‧‧‧存取控制模組
214‧‧‧共用記憶體段
216‧‧‧安全視圖控制結構
300‧‧‧方法
302-324‧‧‧方塊
400‧‧‧示意圖
404‧‧‧緩衝器
406‧‧‧虛擬分頁
408‧‧‧客用實體記憶體
410‧‧‧客用實體分頁
132a‧‧‧客用分頁表
412‧‧‧實體分頁
414‧‧‧虛擬記憶體
416‧‧‧虛擬分頁
132b‧‧‧客用分頁表
418‧‧‧客用實體記憶體
420‧‧‧客用實體分頁
422‧‧‧實體分頁
134a‧‧‧預設視圖EPT
134b‧‧‧安全視圖EPT
424‧‧‧虛擬分頁
426‧‧‧客用實體分頁
232‧‧‧許可表
428‧‧‧實體分頁
500‧‧‧方法
502-514‧‧‧方塊
600‧‧‧方法
602-614‧‧‧方塊
700‧‧‧圖
404a-404e‧‧‧緩衝器
702‧‧‧安全視圖開始指標
712‧‧‧安全視圖結束指標
704‧‧‧處理指標
706‧‧‧目前指標
708‧‧‧下一個指標
710‧‧‧高水位標記指標
714‧‧‧互斥
716‧‧‧狀態旗標
718‧‧‧區域
720‧‧‧區域
722‧‧‧區域
800‧‧‧方法
802-816‧‧‧方塊
900‧‧‧方法
902-920‧‧‧方塊
430‧‧‧虛擬分頁
432‧‧‧客用實體分頁
434‧‧‧實體分頁
436‧‧‧實體分頁
本文所述之概念在附圖中係經由舉例性而非限制性繪示出。為了簡單和清楚說明,圖中所示之元件不一定按比例來繪製。在此適當地考慮,已在圖之間重覆參考標號以指示對應或類似元件。
第1圖係用於安全虛擬機器間共用記憶體通訊的計算裝置之至少一個實施例的簡化方塊圖;第2圖係第1圖之計算裝置的環境之至少一個實施例的簡化方塊圖;第3圖係可能由第1和2圖之計算裝置所執行之用於安全虛擬機器間共用記憶體通訊管理的方法之至少一個實施例的簡化流程圖;第4圖係繪示可能由第1和2圖之計算裝置所建立的虛擬記憶體分頁表結構之示意圖;第5圖係用於存取可能由第1和2圖之計算裝置所執行之共用記憶體的方法之至少一個實施例的簡化流程圖;第6圖係用於許可存取可能由第1和2圖之計算裝置所執行之共用記憶體的方法之至少一個實施例的簡化流程圖; 第7圖係繪示可能由第1和2圖之計算裝置所建立的安全視圖控制結構之示意圖;第8圖係用於取得可能由第1和2圖之計算裝置所執行的共用記憶體緩衝器之所有權的方法之至少一個實施例的簡化流程圖;及第9圖係用於傳送和收回可能由第1和2圖之計算裝置所執行的共用記憶體緩衝器之所有權的方法之至少一個實施例的簡化流程圖。
【發明內容及實施方式】
儘管本揭露之概念易受到各種修改及替代形式的影響,但其具體實施例已經由舉例的方式而顯示在圖中且將於本文中詳細說明。然而,應了解沒有打算將本揭露之概念限於所揭露之特定形式,但相反地,意圖在於涵蓋與本揭露及所附之申請專利範圍一致的所有修改、等效物、及替代物。
在本說明書中提到的「一個實施例」、「一實施例」、「一示範實施例」等等,係表示所述之實施例可能包括一特定特徵、結構、或特性,但每個實施例可能或可能不包括此特定特徵、結構、或特性。此外,這樣的說法不係指相同的實施例。又,當說明與實施例關聯之特定特徵、結構、或特性時,應認為無論是否明確地說明,其在本領域之熟知技藝者的理解內能影響這類與其他實施例關聯之特徵、結構、或特性。此外,應了解包括在為 「至少一A、B、且C」之形式之列表中的項目可代表(A);(B);(C);(A且B);(A且C);(B且C);或(A、B、且C)。同樣地,以「A、B、或C之至少一者中」為形式所列出的項目可代表(A);(B);(C);(A且B);(A且C);(B且C);或(A、B、且C)。
在一些情況中,所揭露之實施例可能在硬體、韌體、軟體、或以上之任何組合中實作。所揭露之實施例可能也被實作為由暫態或非暫態機器可讀(例如,電腦可讀)儲存媒體所載送或儲存在暫態或非暫態機器可讀(例如,電腦可讀)儲存媒體上的指令,其可能藉由一或更多處理器來讀取和執行。機器可讀儲存媒體可能被實作為用於以機器(例如,揮發性或非揮發性記憶體、媒體磁碟、或其他媒體裝置)可讀之形式來儲存或傳送資訊的任何儲存裝置、機制、或其他實體結構。
在圖中,可能以特定佈置及/或排序來顯示一些結構或方法特徵。然而,應了解可能不需要上述特定佈置及/或排序。反而,在一些實施例中,可能以不同於在示範圖中所示之方式及/或順序來佈置上述特徵。此外,在特定圖中包含結構或方法特徵並不表示暗指在所有實施例中皆需要上述特徵,且在一些實施例中,可能不包括或可能結合其他特徵。
現在參考第1圖,用於安全虛擬機器間共用記憶體通訊的示範計算裝置100包括處理器120、I/O子系統128、記憶體130、及資料儲存裝置138。在使用 中,如下面所述,計算裝置100係配置以支援在兩個或更多虛擬機器之間的安全共用記憶體通訊。尤其是,目標虛擬機器-存取另一來源虛擬機器之共用記憶體資料的虛擬機器-認證具有虛擬機器監視器(VMM)的視圖切換元件。認證允許VMM控制和限制存取共用記憶體資料。目標虛擬機器請求存取共用記憶體段,其可能包括由VMM本身所建立之來源虛擬機器或共用記憶體的記憶體分頁。VMM將請求之共用記憶體段加入至計算裝置100的安全視圖延伸分頁表(EPT)。目標虛擬機器可能使用處理器120的虛擬化支援藉由切換至安全視圖EPT來存取共用記憶體,且接著執行正常記憶體存取共用記憶體段。目標虛擬機器可能存取來源虛擬機器的所有記憶體,或在一些實施例中,來源虛擬機器可能與VMM註冊特定共用記憶體段。
藉由經由安全視圖通訊,計算裝置100可能允許安全存取共用記憶體而不需要VMM的虛擬機器退出、超呼叫、或其他調用用於每個存取。因此,計算裝置100可能藉由例如消除不必要地內文切換至VMM或藉由減少所引起的EPT無效數量來提高共用記憶體效能。提高之共用記憶體效能可能使虛擬機器間共用記憶體通訊對小型資料封包(例如,64位元組封包)或對更大量的處理器核心而言係可行的,其依序可能提高用於網路功能虛擬化的效能。此外,目標虛擬機器和來源虛擬機器可能使用共用記憶體段來協調共用記憶體緩衝器的所有權。記憶體緩 衝器所有權之協調可能藉由避免不必要的EPT無效來提高效能。
計算裝置100可能被實作為任何類型之能夠進行虛擬機器間共用記憶體通訊且以其他方式進行本文所述之功能的裝置。例如,計算裝置100可能實作為,但不限於工作站、伺服器電腦、分散式計算系統、多處理器系統、膝上型電腦、筆記型電腦、平板電腦、智慧型手機、行動計算裝置、可穿戴計算裝置、電腦、桌上型電腦、消費性電子裝置、智慧型電器、及/或能夠虛擬機器間共用記憶體通訊的任何其他計算裝置。如第1圖所示,示範計算裝置100包括處理器120、I/O子系統128、記憶體130、及資料儲存裝置138。當然,在其他實施例中,計算裝置100可能包括其他或額外元件,如一般在平板電腦中所發現的元件(例如,各種輸入/輸出裝置)。此外,在一些實施例中,一或更多示範元件可能被併入另一元件中,或以其他方式形成另一元件的一部分。例如,在一些實施例中,記憶體130、或其一部分可能被併入處理器120中。
處理器120可能被實作為任何類型之能夠進行本文所述之功能的處理器。例如,處理器120可能被實作為單一或多核心處理器、數位信號處理器、微控制器、或其他處理器或處理/控制電路。此外,雖然被繪示為包括單一處理器120,但應了解在一些實施例中,計算裝置100可能包括多個處理器120。處理器120包括對虛擬化 之硬體為基、硬體輔助、或硬體加速的支援。尤其是,處理器120包括虛擬機器延伸(VMX)支援122、延伸分頁表(EPT)支援124、及快速視圖切換(FVS)支援126。VMX支援122藉由提供兩種執行模式:VMX根模式和VMX非根模式來支援作業系統的虛擬化執行。VMX根模式允許執行軟體廣泛控制計算裝置100及其硬體資源。藉此,虛擬機器監視器(VMM)或超管理器可能在VMX根模式中執行。VMX非根模式限制存取某些硬體指令,同時仍實作處理器120的一般環式/特權系統。由此,一或更多客用虛擬機器(VM)及/或作業系統(OS)可能在VMX非根模式中執行。那些客用OS可能在環式零中執行,類似於沒有虛擬化的執行。某些硬體指令及某些其他系統事件之執行可能觸發至VMX根模式之硬體輔助的轉移。那些硬體輔助的轉移通常被稱為虛擬機器退出(VMExit)或超呼叫。當遇到VMExit時,處理器120可能將內文從客用VM切換至VMM以處理VMExit。由此,VMExit可能對虛擬碼強加效能損失。VMX支援122可能被實作為例如Intel®VT-x技術。
EPT支援124支援硬體輔助的第二級分頁位址轉換。針對非虛擬化工作負載(或當在VMX根模式中操作時),處理器120可能提供在虛擬記憶體位址(也被稱為線性位址)至實體記憶體位址之間之硬體輔助的轉換。處理器120可能使用儲存在記憶體130中且由主作業系統、超管理器、或VMM所管理的一或更多分頁表結構來轉換記 憶體位址。針對虛擬化工作負載(或當在VMX非根模式中操作時),處理器120支援在虛擬記憶體位址至客用實體記憶體位址(例如,由在客用VM內執行的應用程式所使用)之間之硬體輔助的轉換。客用OS可能維護在記憶體130中的一或更多分頁表結構以管理至客用實體記憶體位址的轉換。然而,客用實體記憶體位址可能未對應於在記憶體130內的實際實體記憶體位址。EPT支援124提供在客用實體記憶體位址至實體記憶體位址(也被稱為主實體記憶體位址)之間之硬體輔助的轉換。EPT支援124可能使用儲存在記憶體130中且由VMM或超管理器所管理的一或更多延伸分頁表結構來轉換記憶體位址。若沒有EPT支援124,則在客用實體記憶體位址與實體記憶體位址之間的轉換可能需要一或更多VMExit。EPT支援124也可能支援將存取允許與每個客用實體分頁及/或實體分頁(例如,讀取、寫入、及/或執行允許)關聯。允許違反(其可能被稱為EPT違反)可能產生VMExit,其允許VMM或超管理器處理EPT違反。此外或另外,在一些實施例中,允許違反可能產生可能由客用OS所產生的虛擬化例外。EPT支援124可能被實作為例如Intel®VT-x技術。
FVS支援126允許處理器120快速地且自動地在兩個或更多記憶體視圖之間切換而無需VMExit至VMX根模式。記憶體視圖包括由EPT所定義的客用實體分頁映射及相關允許且由此可能一個一個地與EPT對應。FVS支援126可能支援藉由改變在記憶體中虛擬機器控制結構 (VMCS)內的指標以指向不同的EPT結構來切換記憶體視圖。在一些實施例中,FVS支援126可能允許在VMX非根模式中的軟體選擇已由在VMX根模式內執行的軟體所預定的數個記憶體視圖之其中一者。藉此,FVS支援126可能允許客用VM(例如,在客用VM中執行的客用OS或應用程式軟體)在記憶體視圖之間切換而無需可能昂貴的內文切換至VMM或超管理器。FVS支援126可能被實作為專用處理器指令,如由某些Intel®處理器所支援的VMFUNC指令。
記憶體130可能被實作為任何類型之能夠進行本文所述之功能的揮發性或非揮發性記憶體或資料儲存器。在操作中,記憶體130可能儲存在計算裝置100之操作其間所使用的各種資料和軟體,如作業系統、應用程式、程式、庫、及驅動程式。記憶體130可能被細分成被稱為分頁之固定大小的段。每個分頁可能包括例如4096位元組的資料。記憶體130更包括客用分頁表132、一或更多延伸分頁表(EPT)134、及一或更多延伸分頁表指標(EPTP)136。客用分頁表132儲存在虛擬記憶體分頁與客用實體記憶體分頁之間的映射。如上所述,客用分頁表132可能由處理器120所使用以在虛擬記憶體位址與客用實體記憶體位址之間轉換。每個EPT 134儲存在客用實體記憶體分頁與實體記憶體分頁之間的映射。如上所述,每個EPT 134可能由處理器120之EPT支援124所使用以在客用實體記憶體位址與實體記憶體位址之間轉換。每個 EPT 134可能也包括用於每個客用實體分頁的存取允許(例如,讀取、寫入、及/或執行)。客用分頁表132和EPT 134兩者可能被實作為一或更多記憶體中資料結構,如陣列、列表、相關陣列、巢式或階層式陣列、或其他資料結構。EPTP 136可能由處理器120所使用以識別出目前主動的EPT 134。因此,改變與客用VM關聯的EPTP 136可能允許計算裝置100快速地改變用於客用VM的實體記憶體映射。如上所述,EPTP 136可能由FVS支援126所管理。
記憶體130係經由I/O子系統128通訊地耦接至處理器120,其可能被實作為用以藉由處理器120、記憶體130、及計算裝置100的其他元件來促進輸入/輸出操作的電路及/或元件。例如,I/O子系統128可能被實作為,或以其他方式包括記憶體控制器中心、輸入/輸出控制中心、韌體裝置、通訊連結(即,點對點連結、匯流排連結、電線、電纜、光導、印刷電路板跡線等等)及/或用以促進輸入/輸出操作的其他元件和子系統。在一些實施例中,I/O子系統128可能形成系統晶片(SoC)的一部分且連同處理器120、記憶體130、及計算裝置100的其他元件一起被結合在單一積體電路晶片上。
資料儲存裝置138可能被實作為任何類型配置用於短期或長期資料儲存的裝置,例如,記憶體裝置和電路、記憶卡、硬碟機、固態硬碟、或其他資料儲存裝置。計算裝置100可能也包括通訊子系統140。通訊子系 統140可能被實作為能夠透過網路啟動在計算裝置100與其他遠端裝置之間之通訊的任何通訊電路、裝置、網路介面控制器、或其集合。通訊子系統140可能配置以使用任一或更多通訊技術(例如,有線或無線通訊)及相關協定(例如,乙太網路、藍芽®、Wi-Fi®、WiMAX等等)以實現上述通訊。
在一些實施例中,計算裝置100可能也包括一或更多周邊裝置142。周邊裝置142可能包括任何數量的額外輸入/輸出裝置、介面裝置、及/或其他周邊裝置。例如,在一些實施例中,周邊裝置142可能包括顯示器、觸控螢幕、圖形電路、鍵盤、滑鼠、揚聲器系統、及/或其他輸入/輸出裝置、介面裝置、及/或周邊裝置。
現在參考第2圖,在所示之實施例中,計算裝置100在操作期間建立環境200。所示之實施例200包括虛擬機器監視器(VMM)202、目標虛擬機器204、及來源虛擬機器206。雖然被繪示為包括兩個虛擬機器(VM),但應了解其他實施例可能包括額外VM。VMM 202包括認證模組208、安全視圖模組210、及共用記憶體模組212。目標虛擬機器204包括資料存取模組218、緩衝器所有權模組222、視圖切換模組224、及安全視圖228。來源虛擬機器206包括資料存取模組218、存取控制模組230、緩衝器所有權模組222、視圖切換模組224、及安全視圖228。環境200的各種模組可能被實作為硬體、韌體、軟體、或以上之組合。例如,環境200的模組、邏 輯、及其他元件之各者可能形成處理器120或計算裝置100之其他硬體元件的一部分、或以其他方式由處理器120或計算裝置100之其他硬體元件所建立。
VMM 202的認證模組208係配置以認證目標虛擬機器204及/或來源虛擬機器206的切換視圖元件226。認證模組208可能進行任何能夠判斷視圖切換元件226是否為值得信賴的適當認證程序,如驗證與視圖切換元件226關聯的一或更多數位簽章或憑證。視圖切換元件226可能被實作為任何客用作業系統核心、核心模組、驅動器、介面、使用者空間應用程式、或可能用以切換記憶體視圖且藉此存取安全視圖228的其他元件。在認證之後,視圖切換元件226可能能夠切換至安全視圖228而無須進一步與VMM 202互動。因此,視圖切換元件226之認證可能保護安全視圖228的安全、隱私、及/或完整性。
VMM 202的安全視圖模組210係配置以若視圖切換元件226被安全地認證,則配置安全視圖228以允許存取共用記憶體段。安全視圖228定義由目標虛擬機器204及/或來源虛擬機器206所使用之計算裝置100的實體記憶體映射。例如,可能藉由修改計算裝置100的一或更多EPT 134來配置安全視圖228。由此,安全視圖228可能允許目標虛擬機器204使用一般記憶體存取指令來直接存取與來源虛擬機器206及/或VMM 202關聯的實體記憶體分頁。
VMM 202的共用記憶體模組212係配置以建立共用記憶體段214,其可能藉由目標虛擬機器204及/或來源虛擬機器206經由安全視圖228來存取。例如,共用記憶體段214可能建立在這堆VMM 202上。共用記憶體段214可能用於在虛擬機器204、206及/或VMM 202之間的安全虛擬記憶體間通訊。在一些實施例中,共用記憶體模組212可能建立一或更多安全視圖控制結構(SVCS)216。尤其是,共用記憶體模組212可能建立用於每個安全視圖228的SVCS 216。每個SVCS 216可能包括在共用記憶體段214內或被分別建立。如下面進一步所述,SVCS 216可能由虛擬機器204、206所使用以協調記憶體緩衝器的所有權之傳送。
目標虛擬機器204及/或來源虛擬機器206的視圖切換模組224係配置以將預設記憶體視圖切換至安全視圖228而不產生虛擬機器退出(VMExit)事件。視圖切換模組224可能使用處理器120的快速視圖切換支援126以切換視圖而不產生VMExit事件。如上所述,視圖切換模組224可能包括進行視圖切換的視圖切換元件226。視圖切換元件226可能在切換至安全視圖228之前藉由VMM 202來認證。
目標虛擬機器204及/或來源虛擬機器206的緩衝器所有權模組222係配置以使用由VMM 202所建立的SVCS 216來協調記憶體緩衝器的所有權從來源虛擬機器206至目標虛擬機器204之傳送。尤其是,在安全視圖 228內的記憶體緩衝器之所有權可能從來源虛擬機器206傳送至目標虛擬機器204,且緩衝器可能在它接收那些緩衝器的所有權之後藉由目標虛擬機器204來處理。當安全視圖228已填充超出預定容量時,來源虛擬機器206可能收回已由目標虛擬機器204所處理的緩衝器,且VMM 202可能清除安全視圖228且使EPT 134無效。
目標虛擬機器204及/或來源虛擬機器206的資料存取模組218係配置以存取在共用記憶體段中的資料。資料存取模組218可能讀取包括在一或更多共用記憶體緩衝器中的資料,將資料寫入至一或更多共用記憶體緩衝器中,或存取在由VMM 202所建立之共用記憶體段214中的資料。資料存取模組218可能包括進行資料存取的一或更多應用程式220。應用程式220可能包括網路功能的應用程式,如路由器、防火牆、虛擬交換器、中間盒、或其他虛擬網路電器。由此,存取之共用記憶體緩衝器可能包括接收佇列、傳送佇列、網路封包緩衝器、或其他網路I/O資料。
來源虛擬機器206的存取控制模組230係配置以與VMM 202註冊共用記憶體段。註冊共用記憶體段允許來源虛擬機器206控制存取其自己的記憶體空間之特定段。存取控制模組230可能維護許可表232。許可表232包括參考要與目標虛擬機器204共用之來源虛擬機器206的客用實體分頁。
現在參考第3圖,在使用中,計算裝置100 可能執行用於管理安全虛擬機器間共用記憶體通訊的方法300。方法300可能藉由VMM 202來執行且因此可能在具有完全存取計算裝置100(包括管理EPT 134的能力)的VMX根模式中執行。方法300開始於方塊302,其中計算裝置100接收用以認證虛擬機器204、206之視圖切換元件226的請求。虛擬機器204、206在被許可存取安全視圖228之前請求視圖切換元件226之認證。虛擬機器204、206可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求認證。
在方塊304中,計算裝置100認證請求之視圖切換元件226。視圖切換元件226可能被實作為任何客用作業系統核心、核心模組、驅動器、介面、使用者空間應用程式、或可能用以切換記憶體視圖且藉此存取安全視圖228的其他元件。計算裝置100可能使用確認、驗證、證明、或以其他方式判定視圖切換元件226被授權及/或未被篡改的任何技術來認證視圖切換元件226。例如,計算裝置100可能驗證與視圖切換元件226關聯的一或更多數位簽章或憑證。若視圖切換元件226未被驗證,則計算裝置100可能產生錯誤信息或以其他方式拒絕允許未經驗證的視圖切換元件226能存取安全視圖228。
在方塊306中,計算裝置100判斷額外虛擬機器204、206是否應具有經認證的視圖切換元件226。例如,多個目標虛擬機器204可能請求用以存取共用記憶體之認證。作為另一實例,目標虛擬機器204和來源虛擬 機器206兩者可能請求用以使用由VMM 202所建立的共用記憶體段214透過安全通道通訊之認證。若額外VM應被認證,則方法300迴歸至方塊302。若沒有任何額外VM應被認證,則方法300前進至方塊308。
在方塊308中,計算裝置100判斷是否允許來源虛擬機器206選擇性地允許存取共用記憶體分頁。若否,則方法分支前進至下述之方塊316。若要允許選擇性存取,則方法300前進至方塊310。
在方塊310中,計算裝置100從來源虛擬機器206接收共用記憶體段之註冊。註冊描述欲從來源虛擬機器206至目標虛擬機器204共用的客用實體記憶體分頁、段、或其他區域。來源虛擬機器206可能使用任何適當技術(包括執行VMExit或超呼叫、寫至來源虛擬機器206的客用實體記憶體、或以其他方式調用VMM 202)來與VMM 202註冊共用記憶體段。在一些實施例中,在方塊312中,計算裝置100可能從來源虛擬機器206接收許可表232。許可表232識別出應與目標虛擬機器204共用的客用實體分頁。由於許可表232係位於且參考來源虛擬機器206的客用實體分頁,因此來源虛擬機器206可能產生許可表232而不調用VMM 202。此外,VMM 202可能在記憶體130內適當的位置中處理許可表232;亦即,沒有建立許可表232額外的副本。
在一些實施例中,在方塊314中,計算裝置100可能從來源虛擬機器206接收請求以共用由VMM 202 所建立的共用記憶體段214。來源虛擬機器206可能使用任何適當格式來產生請求。例如,來源虛擬機器206可能請求藉由更新許可表232以識別出儲存在安全視圖228內的分頁來存取共用記憶體段214。因此,在那些實施例中,計算裝置100可能已預先認證來源虛擬機器206的視圖切換元件226。
在方塊316中,計算裝置100從目標虛擬機器204接收請求以存取共用記憶體段。目標虛擬機器204可能請求存取來源虛擬機器206的共用記憶體分頁及/或存取由VMM 202所建立的共用記憶體段214。目標虛擬機器204可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求存取。
在方塊318中,計算裝置100藉由修改適當的EPT 134來將請求之共用記憶體段加入至目標虛擬機器204的安全視圖228。在修改EPT 134之後,目標虛擬機器204的客用實體分頁被映射至對應於請求之共用記憶體段的實體記憶體分頁。由此,由目標虛擬機器204所執行的核心及/或使用者模式軟體可能透過目標虛擬機器204的虛擬記憶體空間來存取那些分頁。在一些實施例中,在方塊320中,計算裝置100可能將來源虛擬機器206的所有客用實體分頁加入至安全視圖EPT 134。因此,在那些實施例中,目標虛擬機器204可能被許可完全存取來源虛擬機器206的所有資料,包括應用程式資料、核心資料、和如傳送佇列、接收佇列、及封包資料的I/O資料。此外 或另外,在一些實施例中,來源虛擬機器206的一些或所有共用資料可能被直接映射至計算裝置100的硬體,如映射至通訊子系統140。例如,來源虛擬機器206的一或更多緩衝器可能使用如Intel®VT-d技術或單根I/O虛擬化(SR-IOV)的虛擬化技術被直接映射至NIC、埠口、虛擬函數、或通訊子系統140的其他元件。
在一些實施例中,在方塊322中,計算裝置100可能加入先前已由來源虛擬機器206所註冊之來源虛擬機器206的客用實體分頁。例如,計算裝置100可能檢查來源虛擬機器206的許可表232且加入在許可表232中所識別出的所有客用實體分頁。由此,來源虛擬機器206可能限制存取其客用實體記憶體分頁。在一些實施例中,在方塊324中,計算裝置100可能將由VMM 202所建立之共用記憶體段214加入至安全視圖EPT 134。
在修改安全視圖EPT 134之後,方法300迴歸至方塊302以認證額外虛擬機器。如下面結合第5圖和第6圖進一步所述,在修改安全視圖EPT 134之後,目標虛擬機器204及/或來源虛擬機器206可能存取共用記憶體分頁而不產生其他VMExit、超呼叫、或以其他方式調用VMM 202。
現在參考第4圖,示意圖400繪示可能被建立以提供虛擬機器間共用記憶體通訊之分頁表結構的可能實施例。方塊402繪示來源虛擬機器206的虛擬記憶體佈局。為了說明,來源虛擬機器206包括單一緩衝器404。 緩衝器404可能被實作為任何共用記憶體資料結構。例如,緩衝器404可能包括或以其他方式被實作為傳送佇列、接收佇列、或其他網路I/O資料結構。如圖所示,緩衝器404係位於虛擬分頁406。方塊408繪示來源虛擬機器206的客用實體佈局。如圖所示,緩衝器404係位於客用實體分頁410。可能由來源虛擬機器206之客用OS所維護的客用分頁表132a在虛擬記憶體402的虛擬分頁至客用實體記憶體408的客用實體分頁之間映射。如圖所示,客用分頁表132a將虛擬分頁406映射至客用實體分頁410。
圖400進一步繪示實體記憶體130的佈局。如圖所示,緩衝器404係位於在實體記憶體130內的實體分頁412。由VMM 202所維護的延伸分頁表(EPT)134在客用實體記憶體408的的客用實體分頁至實體記憶體130的實體分頁之間映射。如圖所示,EPT 134將客用實體分頁410映射至實體分頁412。
方塊414繪示目標虛擬機器204的虛擬記憶體佈局。如圖所示,目標虛擬機器204包括安全視圖228,被繪示為虛擬記憶體的連續區塊。在其他實施例中,安全視圖228可能是非連續、稀疏、或以其他方式分佈於虛擬記憶體414內。如上所述,目標虛擬機器204可能僅在認證其具有VMM 202的視圖切換元件226之後存取在安全視圖228內的資料。如圖所示,來自來源虛擬機器206的緩衝器404被映射至在安全視圖228內的虛擬分 頁416。方塊418繪示目標虛擬機器204的客用實體佈局。如圖所示,緩衝器404係位於安全視圖228內的客用實體分頁420。可能由目標虛擬機器204之客用OS所維護的客用分頁表132b在虛擬記憶體414的虛擬分頁至客用實體記憶體418的客用實體分頁之間映射。如圖所示,客用分頁表132b將虛擬分頁416映射至客用實體分頁420。
VMM 202管理預設視圖EPT 134a和安全視圖EPT 134b。如圖所示,預設視圖EPT 134a將客用實體分頁420映射至實體分頁422。實體分頁422不包括任何可用資料。例如,實體分頁422可能被歸零或以其他方式清除資料。在一些實施例中,預設視圖EPT 134a可能包括用以限制存取實體分頁422的允許設定。由此,任何存取與來自預設視圖關聯之緩衝器404的客用實體分頁420(或虛擬分頁416)不解析包含緩衝器404的實體分頁412。對照下,安全視圖EPT 134b將客用實體分頁420映射至實體分頁412。因此,存取與來自安全視圖228關聯之緩衝器404的客用實體分頁420會存取包含緩衝器404的實體分頁412。
如圖所示,EPT指標136可能指向預設視圖EPT 134a或安全視圖EPT 134b。處理器120當解析客用實體分頁至實體分頁時參考EPT指標136。如上所述,可能使用FVS支援126藉由如視圖切換元件226的客用軟體(例如,藉由執行VMFUNC處理器指令)來切換或以其 他方式修改EPT指標136。因此,目標虛擬機器204可能藉由修改EPT指標136而不調用VMM 202來控制存取緩衝器404。
如上所述,在一些實施例中,來源虛擬機器206可能藉由識別出要在許可表232中共用的分頁來控制存取客用實體記憶體分頁。在所示之實施例中,許可表232係位於虛擬記憶體402的虛擬分頁424且位於客用實體記憶體408的客用實體分頁426。如圖所示,許可表232例如藉由儲存緩衝器404的客用實體分頁號碼(例如,客用實體分頁410)來參考緩衝器404。許可表232更位於實體記憶體130內的實體分頁428。如上所述,若緩衝器404係由許可表232所參考,則VMM 202可能將對緩衝器404的參考加入至安全視圖EPT 134b。如圖所示,許可表232本身可能無法存取目標虛擬機器204。
現在參考第5圖,在使用中,計算裝置100可能執行用於存取虛擬機器間共用記憶體段的方法500。方法500可能藉由目標虛擬機器204來執行且因此可能在具有有限存取計算裝置100的VMX非根模式中執行。方法500開始於方塊502,其中計算裝置100與VMM 202請求視圖切換元件226之認證。如上面結合第3圖之方塊302至304所述,目標虛擬機器204在被許可存取安全視圖228之前請求視圖切換元件226之認證。目標虛擬機器204可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求認證。如上所述,若視圖切換元件226 未被驗證,則計算裝置100可能產生錯誤信息或以其他方式拒絕允許未經驗證的視圖切換元件226能存取安全視圖228。
在方塊504中,計算裝置100請求VMM 202用於存取共用記憶體段。如上面結合第3圖之方塊316所述,目標虛擬機器204可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求存取。在一些實施例中,在方塊506中,目標虛擬機器204可能請求存取緩衝器或來源虛擬機器206的其他共用記憶體分頁。在一些實施例中,在方塊508中,目標虛擬機器204可能請求存取由VMM 202所建立之共用記憶體段214。
在方塊510中,計算裝置100切換至安全視圖228。在切換至安全視圖228之後,共用記憶體段在執行於目標虛擬機器204中之一或更多客用應用程式220或作業系統的虛擬位址空間中可能是可存取的。在一些實施例中,在方塊512中,計算裝置100可能設定EPT指標136以指向與安全視圖228關聯的EPT 134。例如,如第4圖所示,EPT指標136可能從指標切換至預設視圖EPT 134a以指向安全視圖EPT 134b。計算裝置100可能使用如VMFUNC指令的專用處理器指令來切換EPT指標136。在一些實施例中,切換EPT指標136可能限於環式零、核心模式、或目標虛擬機器204及/或處理器120的一些其他監視模式。因此,可能藉由如作業系統驅動器的核心模式碼來切換EPT指標136。在一些實施例中,如應 用程式220的使用者模式碼可能使EPT指標136藉由呼叫核心模式驅動器來切換。在一些實施例中,可能允許如應用程式220的使用者模式碼直接執行如VMFUNC指令的專用處理器指令。
在方塊514中,計算裝置100存取共用記憶體段。例如,目標虛擬機器204的應用程式220及/或作業系統可能從共用記憶體段讀取資料或將資料寫入至共用記憶體段。在一些實施例中,目標虛擬機器204可能讀取或寫入網路資料或其他I/O資料至來源虛擬機器206的記憶體分頁。尤其是,目標虛擬機器204可能在來源虛擬機器206的記憶體分頁上進行一或更多直接記憶體存取(DMA)操作,其可能允許直接存取I/O裝置及/或資料。此外或另外,目標虛擬機器204可能讀取或寫入資料至由VMM 202所建立之共用記憶體段214。由此,共用記憶體段214可能用於虛擬機器間信號傳送、發信號、或不包含存取來源虛擬機器206之記憶體分頁的其他通訊。在存取共用記憶體段之後,方法500迴歸至方塊514且可能繼續存取共用記憶體段。
現在參考第6圖,在使用中,計算裝置100可能執行用於許可存取虛擬機器間共用記憶體段的方法600。方法600可能藉由來源虛擬機器206來執行且因此可能在具有有限存取計算裝置100的VMX非根模式中執行。方法600開始於方塊602,其中計算裝置100判斷是否選擇性允許存取來源虛擬機器206的記憶體分頁。若 否,則方法600分支前進至下述之方塊606。若選擇性地允許存取,則方法600前進至方塊604。
在方塊604中,計算裝置100與來源虛擬機器206註冊共用記憶體段。如上面結合第3圖之方塊308所述,註冊描述要從來源虛擬機器206至目標虛擬機器204共用的客用實體記憶體分頁、段、或其他區域。如上所述,計算裝置100可能識別出要在許可表232中共用的客用實體分頁。來源虛擬機器206可能使用任何適當技術(包括執行VMExit或超呼叫、或以其他方式調用VMM 202)來與VMM 202註冊共用記憶體段。
在方塊606中,計算裝置100判斷是否存取由VMM 202所建立之共用記憶體段214。若否,方法600迴歸至方塊602。因此,當未提供選擇性存取且未存取共用記憶體段214時,目標虛擬機器204可能存取來源虛擬機器206的記憶體而沒有任何對VMM 202或藉由來源虛擬機器206之其他確認動作的請求。若計算裝置100判定存取共用記憶體段214,則方法600前進至方塊608。
在方塊608中,計算裝置100與VMM 202請求來源虛擬機器206的視圖切換元件226之認證。如上面結合第3圖之方塊302至304所述,虛擬機器206在被許可存取安全視圖228之前請求視圖切換元件226之認證。來源虛擬機器206可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求認證。如上所述,若視圖切換元件226未被驗證,則計算裝置100可能產生錯誤信 號或其他方式拒絕允許未經驗證的視圖切換元件226能存取安全視圖228。
在方塊610中,計算裝置100切換至安全視圖228。在切換至安全視圖228之後,共用記憶體段在執行於來源虛擬機器206中之一或更多客用應用程式220或作業系統的虛擬位址空間中可能是可存取的。在一些實施例中,計算裝置100可能設定EPT指標136以指向與安全視圖228關聯的EPT 134。例如,如第4圖所示,EPT指標136可能從指向預設視圖EPT 134a切換至指向安全視圖EPT 134b。計算裝置100可能使用如VMFUNC指令的專用處理器指令來切換EPT指標136。在一些實施例中,切換EPT指標136可能限於環式零、核心模式、或來源虛擬機器206及/或處理器120的一些其他監視模式。因此,可能藉由如作業系統驅動器的核心模式碼來切換EPT指標136。在一些實施例中,如應用程式220的使用者模式碼可能使EPT指標136藉由呼叫核心模式驅動器來切換。在一些實施例中,可能允許如應用程式220的使用者模式碼直接執行如VMFUNC指令的專用處理器指令。
在方塊612中,計算裝置100請求VMM 202用於存取共用記憶體段214。如上面結合第3圖之方塊316所述,來源虛擬機器206可能藉由產生VMExit、超呼叫、或以其他方式調用VMM 202來請求存取。計算裝置100可能藉由識別出在許可表232中之安全視圖228內 的分頁來請求存取共用記憶體段214。
在方塊614中,計算裝置100存取由VMM 202所建立之共用記憶體段214。來源虛擬機器206可能讀取或寫入儲存在共用記憶體段214內的資料。例如,來源虛擬機器206可能使用共用記憶體段214以藉由目標虛擬機器204來傳送或以其他方式管理記憶體分頁的所有權,如下面關於第7-9圖進一步所述。方法600迴歸至方塊614以繼續存取共用記憶體段214。
現在參考第7圖,圖700繪示用以傳送在來源虛擬機器206與目標虛擬機器204之間的記憶體緩衝器之所有權的安全視圖控制結構(SVCS)216之一個可能實施例。如圖所示,SVCS 216係與包括數個緩衝器404a至404e的示範安全視圖228關聯。那些緩衝器404可能共用由來源虛擬機器206所產生之共用記憶體段。例如,每個緩衝器404可能包括接收佇列、傳送佇列、或來源虛擬機器206的任何其他I/O緩衝器。
如圖所示,SVCS 216包括一些指標,用以指向在目標虛擬機器204之客用實體記憶體418中之安全視圖228內的位置。在所示之實施例中,指標被儲存為客用分頁訊框號碼。當然,在其他實施例中,那些指標可能以其他格式或基於不同位址空間來儲存。例如,SVCS 216可能包括在目標虛擬機器204之虛擬記憶體414內的指標及/或相對於安全視圖228的偏移。
尤其是,示範SVCS 216包括安全視圖開始指 標702和安全視圖結束指標712,其分別係指安全視圖228的開始和結束。SVCS 216也包括處理指標704、目前指標706、下一個指標708、及高水位標記指標710。那些指標係用以協調在來源虛擬機器206與目標虛擬機器204之間的記憶體緩衝器之所有權,如下面結合第8圖和第9圖進一步所述。在所示之實施例中,SVCS 216也包括互斥714和一組狀態旗標716。互斥714和狀態旗標716可能用於協調同時存取在來源虛擬機器206與目標虛擬機器204之間的SVCS 216。
如圖所示,SVCS 216將安全視圖228分成一些區域718、720、722。使用區域718被定義從安全視圖開始指標702至處理指標704,在所示之實施例中包含且包括緩衝器404a。使用區域718代表已由目標虛擬機器204所處理且由此可能由來源虛擬機器206所收回的緩衝器404。使用中區域720被定義從處理指標704至下一個指標708,非包含且由此包括緩衝器404b至404e。使用中區域720代表最近已由來源虛擬機器206所共用之緩衝器404。在處理指標704與目標指標706之間的緩衝器,非包含(例如,緩衝器404b)代表已主動由目標虛擬機器204所處理之緩衝器404。從下一個指標708(包含)至安全視圖結束指標712(不包含)的未使用區域722代表在安全視圖228中的自由空間,其可能由從安全視圖機器206共用的額外緩衝器404所佔據。高水位標記指標710係指在安全視圖228中的臨界位址。當安全視圖228滿到或超過 高水位標記指標710時,可能收回在使用區域718中的緩衝器404。
現在參考第8圖,在使用中,計算裝置100可能執行用於取得共用記憶體緩衝器之所有權的方法800。方法800可能藉由目標虛擬機器204來執行且因此可能在具有有限存取計算裝置100的VMX非根模式中執行。方法800開始於方塊802,其中計算裝置100切換至安全視圖228。計算裝置100可能認證安全視圖切換元件226且接著藉由更新EPT指標136來切換至安全視圖228,如上面結合第5圖所述。尤其是,計算裝置100可能請求存取由VMM 202所建立之共用記憶體段214。共用記憶體段214包括安全視圖控制結構(SVCS)216。
回去參考第4圖,圖400繪示藉由目標虛擬機器204來存取SVCS 216。如圖所示,SVCS 216係位於安全視圖228內的虛擬分頁430。客用分頁表132b將虛擬分頁430映射至客用實體分頁432。預設視圖EPT 134a將客用實體分頁432映射至實體分頁434。實體分頁434不提供存取SVCS 216,例如,實體分頁434可能被歸零,或可能設定以限制存取實體分頁434。對照之下,安全視圖EPT 134b將客用實體分頁432映射至包含SVCS 216的實體分頁436。實體分頁436可能藉由VMM 202來分配、建立、或以其他方式維護。例如,實體分頁436可能在一堆VMM 202中被分配。由此,在目標虛擬機器204中執行的應用程式220及/或作業系統可能經由安全視 圖228存取SVCS 216。
回去參考第8圖,在方塊804中,計算裝置100讀取SVCS 216以判斷是否準備要處理任何使用中共用緩衝器。計算裝置100可能判斷任何使用中共用緩衝器是否準備要藉由檢查SVCS 216的處理指標704、目前指標706、及/或下一個指標708來處理。例如,計算裝置100可能判斷處理指標704是否小於下一個指標708,指示額外緩衝器404已由來源虛擬機器206所共用。在方塊806中,計算裝置100判斷共用緩衝器是否準備好。若否,則方法800迴歸至方塊804以繼續監控SVCS 216。若共用緩衝器準備好,則方法800前進至方塊808。
在方塊808中,計算裝置100基於SVCS 216的目前指標706來處理在使用中區域720中的一或更多共用緩衝器。目標虛擬機器204可能進行任何操作以處理共用緩衝器。例如,目標虛擬機器204可能進行一或更多虛擬網路功能,如封包路由、封包過濾、或以其他方式處理網路封包資料。在方塊810中,在處理共用緩衝器之後,計算裝置100遞增SVCS 216的處理指標704。如上所述,遞增處理指標704指示那些共用緩衝器已藉由目標虛擬機器204來處理且可能藉由來源虛擬機器206來收回。
在方塊812中,計算裝置100判斷安全視圖228是否超過預定容量準位。計算裝置100可能藉由判斷SVCS 216的下一個指標708是否等於或超過SVCS 216的高水位標記指標710來進行此判斷。在一些實施例中,計 算裝置100可能比較處理指標704與高水位標記指標710,用以判斷是否已處理所有共用緩衝器。在方塊814中,計算裝置100基於安全視圖228是否超過容量而分支。若不超過容量(即,若下一個指標708及/或處理指標704不超過高水位標記指標710),則方法800迴歸至方法804以繼續處理共用緩衝器。若安全視圖228超過容量,則方法800前進至方塊816。
在方塊816中,計算裝置100可能處理由VMM 202所產生之EPT 134無效。如下面進一步所述,來源虛擬機器206可能當安全視圖228超過容量時收回使用之共用緩衝器。在收回此記憶體之後,VMM 202可能例如藉由使與安全視圖228關聯的目前EPT 134無效且重新初始任何相關SVCS 216來重設安全視圖228。使EPT 134無效可能移除由有關使用之緩衝器的處理器120所快取之轉換項目。在清除安全視圖228之後,可能需要目標虛擬機器204以例如藉由切換至新的EPT 134來重新初始化安全視圖228。在處理任何EPT無效之後,方法800迴歸至方塊804以繼續處理共用緩衝器。
現在參考第9圖,在使用中,計算裝置100可能執行用於傳送共用記憶體緩衝器之所有權的方法900。方法900可能藉由來源虛擬機器206來執行且因此可能在具有有限存取計算裝置100的VMX非根模式中執行。方法900開始於方塊902,其中計算裝置100切換至安全視圖228。計算裝置100可能認證安全視圖切換元件 226且接著藉由更新EPT指標136來切換至安全視圖228,如上面結合第6圖所述。尤其是,計算裝置100可能請求存取由VMM 202所建立之共用記憶體段214。如上所述,共用記憶體段214包括SVCS 216。
在方塊904中,計算裝置100產生要與目標虛擬機器204共用之新的共用緩衝器。共用緩衝器可能被實作為例如來源虛擬機器206的一或更多客用實體分頁。在一些實施例中,共用緩衝器可能包括接收佇列、傳送佇列、或要由目標虛擬機器204處理之來源虛擬機器206所產生的任何其他網路I/O資料。
在方塊906中,計算裝置100將新建立的共用緩衝器加入至許可表232。如上所述,將緩衝器加入至許可表232指示緩衝器應與目標虛擬機器204共用。在方塊908中,計算裝置100將請求發送至VMM 202以與目標虛擬機器204共用新的緩衝器。如上面在第6圖中所述,來源虛擬機器206可能使用任何適當技術(包括執行VMExit或超呼叫、或以其他方式調用VMM 202)來與VMM 202註冊新建立的共用緩衝器。VMM 202可能將安全視圖228內之新建立的共用緩衝器映射在SVCS 216的下一個指標708之位置。在成功地共用此緩衝器之後,可能遞增下一個指標708。
在方塊910中,計算裝置100讀取SVCS 216以判斷安全視圖228是否超過容量。例如,計算裝置100可能判斷下一個指標708是否等於或超過高水位標記指標 710。在方塊912中,計算裝置100基於安全視圖228是否超過容量而分支。若否,則方法900分支迴歸至方塊904以繼續產生共用記憶體緩衝器。若安全視圖228超過容量,則方法900前進至方塊914。
在方塊914中,計算裝置100等待目標虛擬機器204以處理所有使用中共用記憶體緩衝器404。來源虛擬機器206可能設定在SVCS 216之狀態旗標716中的一或更多旗標以指示來源虛擬機器206正等待完成。如上所述,目標虛擬機器204可能繼續在使用中緩衝器404中處理,直到沒有任何緩衝器404留在使用中區域720中。來源虛擬機器206可能監控SVCS 216以判定何時目標虛擬機器204已完成處理使用中緩衝器404。此外或另外,在一些實施例中,來源虛擬機器206可能將新建立的緩衝器提交至由目標虛擬機器204之不同執行緒所維護的另一安全視圖228,而非等待目標虛擬機器204。
在處理所有使用中緩衝器404之後,在方塊916中,計算裝置100從許可表232移除每個使用之緩衝器404。如上所述,藉由從許可表232移除那些緩衝器404,來源虛擬機器206指示那些緩衝器應不再與目標虛擬機器204共用。在方塊918中,計算裝置100收回每個使用之緩衝器404。例如,來源虛擬機器206可能釋放、刪除、或以其他方式去分配與在使用區域718內之每個緩衝器404關聯的記憶體。在收回之後,與使用之緩衝器404關聯的記憶體可能被來源虛擬機器206重新使用。在 方塊920中,計算裝置100可能處理由VMM 202所產生之EPT無效。在已收回與使用之緩衝器404關聯的記憶體之後,VMM 202可能例如藉由使與安全視圖228關聯的目前EPT 134無效且重新初始化任何相關SVCS 216來重設安全視圖228。使EPT 134無效可能移除由參考使用之緩衝器且由此可能允許重新使用記憶體的處理器120所快取之轉換項目。在清除安全視圖228之後,可能需要來源虛擬機器206以例如藉由切換至新的EPT 134來重新初始化安全視圖228。藉由僅當安全視圖228超過容量時收回記憶體,相較於例如當處理每個緩衝器時收回它,計算裝置100可能減少EPT無效數量。在進行任何EPT無效之後,方法900迴歸至方塊904以繼續產生共用緩衝器。
實例
下面提供了本文所揭露之技術的說明性實例。技術之實施例可能包括下面所述的實例之任一或更多者、及其任何組合。
實例1包括一種用於安全虛擬機器間共用記憶體通訊的計算裝置,計算裝置包含一認證模組,用以回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由計算裝置的一虛擬機器監視器來認證計算裝置之目標虛擬機器的視圖切換元件;一安全視圖模組,用以回應於視圖切換元件之認證,藉由虛擬機器監視器來配置一安全記憶體視圖,用以回應於用以存取從目標虛擬機器 接收之一共用記憶體段的請求而存取計算裝置的共用記憶體段,其中安全記憶體視圖定義計算裝置的一實體記憶體映射;一視圖切換模組,用以回應於用以存取共用記憶體段的請求,使用視圖切換元件藉由目標虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及一資料存取模組,用以回應於切換至安全記憶體視圖,藉由目標虛擬機器來存取共用記憶體段。
實例2包括實例1之主題,且其中視圖切換元件包含一作業系統核心、一核心模式驅動器、或一使用者級應用程式。
實例3包括實例1和2之任一者之主題,且其中共用記憶體段包含計算裝置的一或更多實體記憶體分頁。
實例4包括實例1-3之任一者之主題,且其中用以配置安全記憶體視圖包含用以配置計算裝置的一延伸分頁表。
實例5包括實例1-4之任一者之主題,且其中用以切換至安全記憶體視圖包含用以設定計算裝置的一延伸分頁表指標以參考延伸分頁表。
實例6包括實例1-5之任一者之主題,且其中用以設定延伸分頁表指標包含用以執行一處理器指令以改變延伸分頁表指標。
實例7包括實例1-6之任一者之主題,且其中共用記憶體段包含計算裝置之一來源虛擬機器的客用實 體記憶體分頁。
實例8包括實例1-7之任一者之主題,且其中共用記憶體段包含一輸入/輸出緩衝器。
實例9包括實例1-8之任一者之主題,且其中共用記憶體段包含一傳送佇列或一接收佇列。
實例10包括實例1-9之任一者之主題,且更包括一存取控制模組,用以藉由來源虛擬機器來與虛擬機器監視器註冊共用記憶體段;其中用以配置安全記憶體視圖以存取共用記憶體段包含用以配置安全記憶體視圖以存取由來源虛擬機器所註冊的共用記憶體段。
實例11包括實例1-10之任一者之主題,且其中用以註冊共用記憶體段包含用以在來源虛擬機器的一許可表中識別出共用記憶體段的客用實體分頁;及將許可表提交至虛擬機器監視器。
實例12包括實例1-11之任一者之主題,且更包括一共用記憶體模組,用以藉由虛擬機器監視器來建立共用記憶體段;其中認證模組更用以回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由虛擬機器監視器來認證計算裝置之來源虛擬機器的視圖切換元件;視圖切換模組更用以回應於視圖切換元件之認證,使用來源虛擬機器的視圖切換元件藉由來源虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及資料存取模組更用以回應於切換至安全記憶體視圖,藉由來源虛擬機器來存取共用記憶體段;其中用以配置安全記憶體視 圖以存取共用記憶體段包含用以配置安全記憶體視圖以存取由虛擬機器監視器所建立的共用記憶體段。
實例13包括實例1-12之任一者之主題,且更包括一存取控制模組,用以藉由來源虛擬機器來與虛擬機器監視器註冊一第二共用記憶體段;其中用以配置安全記憶體視圖以存取共用記憶體段更包含用以配置安全記憶體視圖以存取由來源虛擬機器所註冊的第二共用記憶體段;及用以藉由目標虛擬機器來存取共用記憶體段更包含用以藉由目標虛擬機器來存取第二共用記憶體段。
實例14包括實例1-13之任一者之主題,且更包括一緩衝器所有權模組,用以藉由來源虛擬機器來產生要被目標計算裝置處理的一共用緩衝器,其中第二共用記憶體段包括共用緩衝器;回應於共用記憶體段的存取,藉由目標虛擬機器來處理共用緩衝器;及使用儲存在由虛擬機器監視器所建立之共用記憶體段中的一安全視圖控制結構藉由目標虛擬機器和來源虛擬機器來協調共用緩衝器的所有權。
實例15包括實例1-14之任一者之主題,且其中用以註冊第二共用記憶體段包含用以在安全視圖控制結構的下一個指標註冊共用緩衝器;用以處理共用緩衝器包含用以回應於共用緩衝器之處理而遞增安全視圖控制結構的一處理指標;及用以產生共用緩衝器包含用以藉由來源虛擬機器來判斷是否超過安全視圖的容量,且回應於超過來源虛擬機器的容量之判斷而藉由來源虛擬機器來等待 目標虛擬機器以完成處理共用緩衝器;回應於藉由目標虛擬機器來完成共用緩衝器之處理,藉由來源虛擬機器來從許可表移除共用緩衝器;回應於從許可表移除共用緩衝器,藉由來源虛擬機器來收回共用緩衝器;及回應於收回共用緩衝器,藉由虛擬機器監視器來使計算裝置的一延伸分頁表無效。
實例16包括實例1-15之任一者之主題,且其中用以判斷是否超過安全視圖的容量包含用以判斷安全視圖控制結構的下一個指標是否超過安全視圖控制結構的一參考指標。
實例17包括一種用於安全虛擬機器間共用記憶體通訊的方法,方法包含回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由一計算裝置的一虛擬機器監視器來認證計算裝置之目標虛擬機器的視圖切換元件;回應於認證視圖切換元件,藉由虛擬機器監視器來配置一安全記憶體視圖以回應於用以存取從目標虛擬機器接收之一共用記憶體段的請求而存取計算裝置的共用記憶體段,其中安全記憶體視圖定義計算裝置的一實體記憶體映射;回應於用以存取共用記憶體段的請求,使用視圖切換元件藉由目標虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至安全記憶體視圖,藉由目標虛擬機器來存取共用記憶體段。
實例18包括實例17之主題,且其中視圖切換元件包含一作業系統核心、一核心模式驅動器、或一使 用者級應用程式。
實例19包括實例17和18之任一者之主題,且其中共用記憶體段包含計算裝置的一或更多實體記憶體分頁。
實例20包括實例17-19之任一者之主題,且其中配置安全記憶體視圖包含配置計算裝置的一延伸分頁表。
實例21包括實例17-20之任一者之主題,且其中切換至安全記憶體視圖包含設定計算裝置的一延伸分頁表指標以參考延伸分頁表。
實例22包括實例17-21之任一者之主題,且其中設定延伸分頁表指標包含執行一處理器指令以改變延伸分頁表指標。
實例23包括實例17-22之任一者之主題,且其中共用記憶體段包含計算裝置之一來源虛擬機器的客用實體記憶體分頁。
實例24包括實例17-23之任一者之主題,且其中共用記憶體段包含一輸入/輸出緩衝器。
實例25包括實例17-24之任一者之主題,且其中共用記憶體段包含一傳送佇列或一接收佇列。
實例26包括實例17-25之任一者之主題,且更包括藉由來源虛擬機器來與虛擬機器監視器註冊共用記憶體段;其中配置安全記憶體視圖以存取共用記憶體段包含配置安全記憶體視圖以存取由來源虛擬機器所註冊的共 用記憶體段。
實例27包括實例17-26之任一者之主題,且其中註冊共用記憶體段包含在來源虛擬機器的一許可表中識別出共用記憶體段的客用實體分頁;及將許可表提交至虛擬機器監視器。
實例28包括實例17-27之任一者之主題,且更包括藉由虛擬機器監視器來建立共用記憶體段;回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由虛擬機器監視器來認證計算裝置之來源虛擬機器的視圖切換元件;回應於認證視圖切換元件,使用視圖切換元件藉由來源虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至安全記憶體視圖,藉由來源虛擬機器來存取共用記憶體段;其中配置安全記憶體視圖以存取共用記憶體段包含配置安全記憶體視圖以存取由虛擬機器監視器所建立的共用記憶體段。
實例29包括實例17-28之任一者之主題,且更包括藉由來源虛擬機器來與虛擬機器監視器註冊一第二共用記憶體段;其中配置安全記憶體視圖以存取共用記憶體段更包含配置安全記憶體視圖以存取由來源虛擬機器所註冊的第二共用記憶體段;及藉由目標虛擬機器來存取共用記憶體段更包含藉由目標虛擬機器來存取第二共用記憶體段。
實例30包括實例17-29之任一者之主題,且更包括藉由來源虛擬機器來產生要被目標計算裝置處理的 一共用緩衝器,其中第二共用記憶體段包括共用緩衝器;回應於存取共用記憶體段,藉由目標虛擬機器來處理共用緩衝器;及使用儲存在由虛擬機器監視器所建立之共用記憶體段中的一安全視圖控制結構藉由目標虛擬機器和來源虛擬機器來協調共用緩衝器的所有權。
實例31包括實例17-30之任一者之主題,且其中藉由來源虛擬機器來註冊第二共用記憶體段包含在安全視圖控制結構的下一個指標註冊共用緩衝器;處理共用緩衝器包含回應於處理共用緩衝器而遞增安全視圖控制結構的一處理指標;及產生共用緩衝器包含藉由來源虛擬機器來判斷是否超過安全視圖的容量,且回應於超過來源虛擬機器的容量之判斷而藉由來源虛擬機器來等待目標虛擬機器以完成處理共用緩衝器;回應於目標虛擬機器完成共用緩衝器之處理,藉由來源虛擬機器來從許可表移除共用緩衝器;回應於從許可表移除共用緩衝器,藉由來源虛擬機器來收回共用緩衝器;及回應於收回共用緩衝器,藉由虛擬機器監視器來使計算裝置的一延伸分頁表無效。
實例32包括實例17-31之任一者之主題,且其中判斷是否超過安全視圖的容量包含判斷安全視圖控制結構的下一個指標是否超過安全視圖控制結構的一參考指標。
實例33包括一種計算裝置,包含一處理器;及一記憶體,具有複數個指令儲存在其中,當這些指令被處理器執行時使計算裝置進行實例17-32之任一者之方 法。
實例34包括一或更多機器可讀儲存媒體,包含複數個指令儲存在其上,回應於這些指令被執行而導致一計算裝置進行實例17-32之任一者之方法。
實例35包括一種計算裝置,包含用於進行實例17-32之任一者之方法之手段。
實例36包括一種用於安全虛擬機器間共用記憶體通訊的計算裝置,計算裝置包含用於認證之手段,回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由一虛擬機器監視器來認證計算裝置之目標虛擬機器的視圖切換元件;用於配置之手段,回應於認證視圖切換元件,藉由虛擬機器監視器來配置一安全記憶體視圖,用以回應於用以存取從目標虛擬機器接收之一共用記憶體段的請求而存取計算裝置的共用記憶體段,其中安全記憶體視圖定義計算裝置的一實體記憶體映射;用於切換之手段,回應於用以存取共用記憶體段的請求,使用視圖切換元件藉由目標虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及用於存取之手段,回應於切換至安全記憶體視圖,藉由目標虛擬機器來存取共用記憶體段。
實37包括實例36之主題,且其中視圖切換元件包含一作業系統核心、一核心模式驅動器、或一使用者級應用程式。
實例38包括實例36和37之任一者之主題, 且其中共用記憶體段包含計算裝置的一或更多實體記憶體分頁。
實例39包括實例36-38之任一者之主題,且其中用於配置安全記憶體視圖之手段包含用於配置計算裝置的一延伸分頁表之手段。
實例40包括實例36-39之任一者之主題,且其中用於切換至安全記憶體視圖之手段包含用於設定計算裝置的一延伸分頁表指標以參考延伸分頁表之手段。
實例41包括實例36-40之任一者之主題,且其中用於設定延伸分頁表指標之手段包含用於執行一處理器指令以改變延伸分頁表指標之手段。
實例42包括實例36-41之任一者之主題,且其中共用記憶體段包含計算裝置之一來源虛擬機器的客用實體記憶體分頁。
實例43包括實例36-42之任一者之主題,且其中共用記憶體段包含一輸入/輸出緩衝器。
實例44包括實例36-43之任一者之主題,且其中共用記憶體段包含一傳送佇列或一接收佇列。
實例45包括實例36-44之任一者之主題,且更包括用於註冊之手段,用於藉由來源虛擬機器來與虛擬機器監視器註冊共用記憶體段;其中用於配置安全記憶體視圖以存取共用記憶體段之手段包含用於配置安全記憶體視圖以存取由來源虛擬機器所註冊的共用記憶體段之手段。
實例46包括實例36-45之任一者之主題,且其中用於註冊共用記憶體段之手段包含用於在來源虛擬機器的一許可表中識別出共用記憶體段的客用實體分頁之手段;及用於將許可表提交至虛擬機器監視器之手段。
實例47包括實例36-46之任一者之主題,且更包括用於建立之手段,藉由虛擬機器監視器來建立共用記憶體段;用於認證之手段,回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由虛擬機器監視器來認證計算裝置之來源虛擬機器的視圖切換元件;用於切換之手段,回應於認證視圖切換元件,使用視圖切換元件藉由來源虛擬機器來切換至安全記憶體視圖而沒有一虛擬機器退出事件;及用於存取之手段,回應於切換至安全記憶體視圖,藉由來源虛擬機器來存取共用記憶體段;其中用於配置安全記憶體視圖以存取共用記憶體段之手段包含用於配置安全記憶體視圖以存取由虛擬機器監視器所建立的共用記憶體段之手段。
實例48包括實例36-47之任一者之主題,且更包括用於註冊之手段,藉由來源虛擬機器來與虛擬機器監視器註冊第二共用記憶體段;其中用於配置安全記憶體視圖以存取共用記憶體段之手段更包含用於配置安全記憶體視圖以存取由來源虛擬機器所註冊的第二共用記憶體段之手段;及用於存取之手段,藉由目標虛擬機器來存取共用記憶體段更包含用於藉由目標虛擬機器來存取第二共用記憶體段之手段。
實例49包括實例36-48之任一者之主題,且更包括用於產生之手段,藉由來源虛擬機器來產生要被目標計算裝置處理的一共用緩衝器,其中第二共用記憶體段包括共用緩衝器;用於處理之手段,回應於存取共用記憶體段,藉由目標虛擬機器來處理共用緩衝器;及用於協調之手段,使用儲存在由虛擬機器監視器所建立之共用記憶體段中的一安全視圖控制結構藉由目標虛擬機器和來源虛擬機器來協調共用緩衝器的所有權。
實例50包括實例36-49之任一者之主題,且其中用於藉由來源虛擬機器來註冊第二共用記憶體段之手段包含用於在安全視圖控制結構的下一個指標註冊共用緩衝器之手段;用於處理共用緩衝器之手段包含用於回應於處理共用緩衝器而遞增安全視圖控制結構的一處理指標之手段;及用於產生共用緩衝器之手段包含用於藉由來源虛擬機器來判斷是否超過安全視圖的容量之手段,且回應於超過來源虛擬機器的容量之判斷,藉由來源虛擬機器來等待目標虛擬機器以完成處理共用緩衝器;用於回應於目標虛擬機器完成共用緩衝器之處理,藉由來源虛擬機器來從許可表移除共用緩衝器之手段;及用於回應於從許可表移除共用緩衝器,藉由來源虛擬機器來收回共用緩衝器之手段;及用於回應於收回共用緩衝器,藉由虛擬機器監視器來使計算裝置的一延伸分頁表無效之手段。
實例51包括實例36-50之任一者之主題,且其中用於判斷是否超過安全視圖的容量之手段包含用於判 斷安全視圖控制結構的下一個指標是否超過安全視圖控制結構的一參考指標之手段。
100‧‧‧計算裝置
120‧‧‧處理器
122‧‧‧虛擬機器延伸(VMX)支援
124‧‧‧延伸分頁表(EPT)支援
126‧‧‧快速視圖切換(FVS)支援
128‧‧‧I/O子系統
130‧‧‧記憶體
132‧‧‧客用分頁表
134‧‧‧延伸分頁表
136‧‧‧延伸分頁表指標
138‧‧‧資料儲存裝置
140‧‧‧通訊子系統
142‧‧‧周邊裝置

Claims (25)

  1. 一種用於安全虛擬機器間共用記憶體通訊的計算裝置,該計算裝置包含:一認證模組,用以回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由該計算裝置的一虛擬機器監視器來認證該計算裝置之該目標虛擬機器的該視圖切換元件;一安全視圖模組,用以回應於從該目標虛擬機器接收之存取一共用記憶體段的請求而以回應於該視圖切換元件之認證的該虛擬機器監視器,來配置一安全記憶體視圖,以存取該計算裝置的該共用記憶體段,其中該安全記憶體視圖定義該計算裝置的一實體記憶體映圖;一視圖切換模組,用以回應於用以存取該共用記憶體段的請求,以使用該視圖切換元件的該目標虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及一資料存取模組,用以回應於切換至該安全記憶體視圖,藉由該目標虛擬機器來存取該共用記憶體段。
  2. 如申請專利範圍第1項所述之計算裝置,其中:該共用記憶體段包含該計算裝置的一或更多實體記憶體分頁;及配置該安全記憶體視圖包含配置該計算裝置的一延伸分頁表。
  3. 如申請專利範圍第2項所述之計算裝置,其中切換至該安全記憶體視圖包含設定該計算裝置的一延伸分頁 表指標以參考該延伸分頁表。
  4. 如申請專利範圍第3項所述之計算裝置,其中設定該延伸分頁表指標包含執行一處理器指令以改變該延伸分頁表指標。
  5. 如申請專利範圍第1項所述之計算裝置,其中該共用記憶體段包含該計算裝置之一來源虛擬機器的客用實體記憶體分頁。
  6. 如申請專利範圍第5項所述之計算裝置,更包含:一存取控制模組,用以藉由該來源虛擬機器來與該虛擬機器監視器註冊該共用記憶體段;其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊的該共用記憶體段。
  7. 如申請專利範圍第1項所述之計算裝置,更包含:一共用記憶體模組,用以藉由該虛擬機器監視器來建立該共用記憶體段,其中:該認證模組更用以回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由該虛擬機器監視器來認證該計算裝置之該來源虛擬機器的該視圖切換元件;該視圖切換模組更用以回應於該視圖切換元件之認證,使用該來源虛擬機器的該視圖切換元件藉由該來源虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出 事件;及該資料存取模組更用以回應於切換至該安全記憶體視圖,藉由該來源虛擬機器來存取該共用記憶體段;其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該虛擬機器監視器所建立的該共用記憶體段。
  8. 如申請專利範圍第7項所述之計算裝置,更包含:一存取控制模組,用以藉由該來源虛擬機器來與該虛擬機器監視器註冊一第二共用記憶體段;其中:用以配置該安全記憶體視圖以存取該共用記憶體段更包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊的該第二共用記憶體段;及藉由該目標虛擬機器來存取該共用記憶體段更包含藉由該目標虛擬機器來存取該第二共用記憶體段。
  9. 如申請專利範圍第8項所述之計算裝置,更包含一緩衝器所有權模組,用以:藉由該來源虛擬機器來產生要被該目標計算裝置處理的一共用緩衝器,其中該第二共用記憶體段包括該共用緩衝器;回應於該共用記憶體段的存取,藉由該目標虛擬機器來處理該共用緩衝器;及使用儲存在由該虛擬機器監視器所建立之該共用記憶體段中的一安全視圖控制結構藉由該目標虛擬機器和該來 源虛擬機器來協調該共用緩衝器的所有權。
  10. 如申請專利範圍第9項所述之計算裝置,其中:用以註冊該第二共用記憶體段包含在該安全視圖控制結構的下一個指標註冊該共用緩衝器;用以處理該共用緩衝器包含回應於該共用緩衝器之處理而遞增該安全視圖控制結構的一處理指標;及用以產生該共用緩衝器包含藉由該來源虛擬機器來判斷是否超過該安全視圖的容量,且回應於超過該來源虛擬機器的容量之判斷而:藉由該來源虛擬機器來等待該目標虛擬機器以完成處理該共用緩衝器;回應於藉由該目標虛擬機器來完成該共用緩衝器之處理,藉由該來源虛擬機器來從許可表移除該共用緩衝器;回應於從該許可表移除該共用緩衝器,藉由該來源虛擬機器來收回該共用緩衝器;及回應於收回該共用緩衝器,藉由該虛擬機器監視器來使該計算裝置的一延伸分頁表無效。
  11. 如申請專利範圍第10項所述之計算裝置,其中判斷是否超過該安全視圖的容量包含判斷該安全視圖控制結構的該下一個指標是否超過該安全視圖控制結構的一參考指標。
  12. 一種用於安全虛擬機器間共用記憶體通訊的方法,該方法包含:回應於用以認證從一目標虛擬機器接收之一視圖切換 元件的請求的一計算裝置的一虛擬機器監視器,來認證該計算裝置之該目標虛擬機器的該視圖切換元件;回應於從該目標虛擬機器接收之存取一共用記憶體段的請求而以回應於認證該視圖切換元件的該虛擬機器監視器,來配置一安全記憶體視圖以存取該計算裝置的該共用記憶體段,其中該安全記憶體視圖定義該計算裝置的一實體記憶體映射;回應於用以存取該共用記憶體段的請求,使用該視圖切換元件的該目標虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至該安全記憶體視圖,藉由該目標虛擬機器來存取該共用記憶體段。
  13. 如申請專利範圍第12項所述之方法,其中:該共用記憶體段包含該計算裝置的一或更多實體記憶體分頁;及配置該安全記憶體視圖包含配置該計算裝置的一延伸分頁表。
  14. 如申請專利範圍第12項所述之方法,其中該共用記憶體段包含該計算裝置之一來源虛擬機器的客用實體記憶體分頁,該方法更包含:藉由該來源虛擬機器來與該虛擬機器監視器註冊該共用記憶體段;其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊 的該共用記憶體段。
  15. 如申請專利範圍第12項所述之方法,更包含:藉由該虛擬機器監視器來建立該共用記憶體段;回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由該虛擬機器監視器來認證該計算裝置之該來源虛擬機器的該視圖切換元件;回應於認證該視圖切換元件,使用該視圖切換元件藉由該來源虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至該安全記憶體視圖,藉由該來源虛擬機器來存取該共用記憶體段;其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該虛擬機器監視器所建立的該共用記憶體段。
  16. 如申請專利範圍第15項所述之方法,更包含:藉由該來源虛擬機器來與該虛擬機器監視器註冊一第二共用記憶體段,其中配置該安全記憶體視圖以存取該共用記憶體段更包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊的該第二共用記憶體段,且其中藉由該目標虛擬機器來存取該共用記憶體段更包含藉由該目標虛擬機器來存取該第二共用記憶體段;藉由該來源虛擬機器來產生要被該目標計算裝置處理的一共用緩衝器,其中該第二共用記憶體段包括該共用緩衝器; 回應於存取該共用記憶體段,藉由該目標虛擬機器來處理該共用緩衝器;及使用儲存在由該虛擬機器監視器所建立之該共用記憶體段中的一安全視圖控制結構藉由該目標虛擬機器和該來源虛擬機器來協調該共用緩衝器的所有權。
  17. 一或更多電腦可讀儲存媒體,包含複數個指令,回應於該些指令被執行而使一計算裝置:回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由該計算裝置的一虛擬機器監視器來認證該計算裝置之該目標虛擬機器的該視圖切換元件;回應於用以從該目標虛擬機器接收之存取一共用記憶體段的請求而以回應於認證該視圖切換元件的該虛擬機器監視器,來配置一安全記憶體視圖以存取該計算裝置的該共用記憶體段,其中該安全記憶體視圖定義該計算裝置的一實體記憶體映射;回應於用以存取該共用記憶體段的請求,使用該視圖切換元件的該目標虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至該安全記憶體視圖,藉由該目標虛擬機器來存取該共用記憶體段。
  18. 如申請專利範圍第17項所述之一或更多電腦可讀儲存媒體,其中:該共用記憶體段包含該計算裝置的一或更多實體記憶體分頁;及 用以配置該安全記憶體視圖包含配置該計算裝置的一延伸分頁表。
  19. 如申請專利範圍第17項所述之一或更多電腦可讀儲存媒體,其中該共用記憶體段包含該計算裝置之一來源虛擬機器的客用實體記憶體分頁,該一或更多電腦可讀儲存媒體更包含複數個指令,回應於該些指令被執行而使該計算裝置:藉由該來源虛擬機器來與該虛擬機器監視器註冊該共用記憶體段;其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊的該共用記憶體段。
  20. 如申請專利範圍第17項所述之一或更多電腦可讀儲存媒體,更包含複數個指令,回應於該些指令被執行而使該計算裝置:藉由該虛擬機器監視器來建立該共用記憶體段;回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由該虛擬機器監視器來認證該計算裝置之該來源虛擬機器的該視圖切換元件;回應於認證該視圖切換元件,使用該視圖切換元件藉由該來源虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及回應於切換至該安全記憶體視圖,藉由該來源虛擬機器來存取該共用記憶體段; 其中配置該安全記憶體視圖以存取該共用記憶體段包含配置該安全記憶體視圖以存取由該虛擬機器監視器所建立的該共用記憶體段。
  21. 如申請專利範圍第20項所述之一或更多電腦可讀儲存媒體,更包含複數個指令,回應於該些指令被執行而使該計算裝置:藉由該來源虛擬機器來與該虛擬機器監視器註冊一第二共用記憶體段,其中配置該安全記憶體視圖以存取該共用記憶體段更包含配置該安全記憶體視圖以存取由該來源虛擬機器所註冊的該第二共用記憶體段,且其中藉由該目標虛擬機器來存取該共用記憶體段更包含藉由該目標虛擬機器來存取該第二共用記憶體段;藉由該來源虛擬機器來產生要被該目標計算裝置處理的一共用緩衝器,其中該第二共用記憶體段包括該共用緩衝器;回應於存取該共用記憶體段,藉由該目標虛擬機器來處理該共用緩衝器;及使用儲存在由該虛擬機器監視器所建立之該共用記憶體段中的一安全視圖控制結構藉由該目標虛擬機器和該來源虛擬機器來協調該共用緩衝器的所有權。
  22. 一種用於安全虛擬機器間共用記憶體通訊的計算裝置,該計算裝置包含:用於認證之手段,回應於用以認證從一目標虛擬機器接收之一視圖切換元件的請求,藉由一虛擬機器監視器來 認證該計算裝置之該目標虛擬機器的該視圖切換元件;用於配置之手段,回應於用以從該目標虛擬機器接收之存取一共用記憶體段的請求而以回應於認證該視圖切換元件的該虛擬機器監視器,來配置一安全記憶體視圖以存取該計算裝置的該共用記憶體段,其中該安全記憶體視圖定義該計算裝置的一實體記憶體映射;用於切換之手段,回應於用以存取該共用記憶體段的請求,使用該視圖切換元件的該目標虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及用於存取之手段,回應於切換至該安全記憶體視圖,藉由該目標虛擬機器來存取該共用記憶體段。
  23. 如申請專利範圍第22項所述之計算裝置,其中:該共用記憶體段包含該計算裝置的一或更多實體記憶體分頁;及用於配置該安全記憶體視圖之手段包含用於配置該計算裝置的一延伸分頁表之手段。
  24. 如申請專利範圍第22項所述之計算裝置,其中該共用記憶體段包含該計算裝置之一來源虛擬機器的客用實體記憶體分頁,該計算裝置更包含:用於註冊之手段,藉由該來源虛擬機器來與該虛擬機器監視器註冊該共用記憶體段;其中用於配置該安全記憶體視圖以存取該共用記憶體段之手段包含用於配置該安全記憶體視圖以存取由該來源 虛擬機器所註冊的該共用記憶體段之手段。
  25. 如申請專利範圍第22項所述之計算裝置,更包含:用於建立之手段,藉由該虛擬機器監視器來建立該共用記憶體段;用於認證之手段,回應於用以認證從一來源虛擬機器接收之一視圖切換元件的請求,藉由該虛擬機器監視器來認證該計算裝置之該來源虛擬機器的該視圖切換元件;用於切換之手段,回應於認證該視圖切換元件,使用該視圖切換元件藉由該來源虛擬機器來切換至該安全記憶體視圖而沒有一虛擬機器退出事件;及用於存取之手段,回應於切換至該安全記憶體視圖,藉由該來源虛擬機器來存取該共用記憶體段;其中用於配置該安全記憶體視圖以存取該共用記憶體段之手段包含用於配置該安全記憶體視圖以存取由該虛擬機器監視器所建立的該共用記憶體段之手段。
TW104122172A 2014-08-15 2015-07-08 用於安全虛擬機器間共用記憶體通訊之技術 TWI556107B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/460,530 US9454497B2 (en) 2014-08-15 2014-08-15 Technologies for secure inter-virtual-machine shared memory communication

Publications (2)

Publication Number Publication Date
TW201629779A TW201629779A (zh) 2016-08-16
TWI556107B true TWI556107B (zh) 2016-11-01

Family

ID=53716331

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104122172A TWI556107B (zh) 2014-08-15 2015-07-08 用於安全虛擬機器間共用記憶體通訊之技術

Country Status (6)

Country Link
US (1) US9454497B2 (zh)
EP (1) EP2985718B1 (zh)
JP (1) JP5989862B2 (zh)
KR (1) KR101782398B1 (zh)
CN (1) CN106201646B (zh)
TW (1) TWI556107B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI748338B (zh) * 2019-03-08 2021-12-01 美商萬國商業機器公司 用於安全介面控制高層級頁面管理之電腦實施方法、電腦系統及電腦程式產品
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10103872B2 (en) * 2014-09-26 2018-10-16 Intel Corporation Securing audio communications
US20160117246A1 (en) * 2014-10-27 2016-04-28 Thomson Licensing Method and apparatus for cross-core covert channel
US9891954B2 (en) * 2014-11-04 2018-02-13 Vmware, Inc. Cluster resource management in a virtualized computing environment
US9760353B2 (en) 2014-12-19 2017-09-12 Signalfx, Inc. Dynamically changing input data streams processed by data stream language programs
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
US10394692B2 (en) * 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
EP3253005A4 (en) * 2015-01-29 2018-01-17 Nec Corporation Data file registration management system, method, management device, and program
US9778945B2 (en) * 2015-02-10 2017-10-03 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US9684605B2 (en) * 2015-02-23 2017-06-20 Intel Corporation Translation lookaside buffer for guest physical addresses in a virtual machine
US9569247B2 (en) * 2015-03-31 2017-02-14 Red Hat Israel, Ltd. Range based virtual machine functions
US9870324B2 (en) * 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
US9727359B2 (en) * 2015-04-27 2017-08-08 Red Hat Israel, Ltd. Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment
US9971624B2 (en) 2015-05-17 2018-05-15 Nicira, Inc. Logical processing for containers
CN106295385B (zh) * 2015-05-29 2019-10-22 华为技术有限公司 一种数据保护方法和装置
WO2017058157A1 (en) * 2015-09-29 2017-04-06 Hewlett Packard Enterprise Development Lp Application management data
US10871981B2 (en) * 2015-11-01 2020-12-22 Nicira, Inc. Performing logical network functionality within data compute nodes
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10063469B2 (en) 2015-12-16 2018-08-28 Nicira, Inc. Forwarding element implementation for containers
KR101953546B1 (ko) * 2015-12-30 2019-06-03 한국전자통신연구원 가상 스위칭 장치 및 방법
US10055577B2 (en) * 2016-03-29 2018-08-21 Intel Corporation Technologies for mutual application isolation with processor-enforced secure enclaves
US10754772B2 (en) * 2016-06-14 2020-08-25 Sap Se Reclamation of in-memory database memory resources
US11442760B2 (en) 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US11989332B2 (en) 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
US10270715B2 (en) * 2016-11-01 2019-04-23 Oracle International Corporation High performance network I/O in a virtualized environment
US10922114B2 (en) 2016-12-12 2021-02-16 Intel Corporation System and method to improve nested virtual machine monitor performance
CN106681937A (zh) * 2016-12-12 2017-05-17 中国航空工业集团公司西安航空计算技术研究所 一种流命令格式的显示列表管理方法
US10645123B1 (en) 2016-12-28 2020-05-05 Juniper Networks, Inc. Network traffic switching for virtual machines
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
CN109460373B (zh) * 2017-09-06 2022-08-26 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
CN110892388B (zh) * 2018-07-11 2022-07-22 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
CN109901911B (zh) * 2018-11-22 2023-07-07 海光信息技术股份有限公司 一种信息设置方法、控制方法、装置及相关设备
US10776021B2 (en) * 2018-11-27 2020-09-15 Red Hat, Inc. Exit-less host page table switching and virtual machine function detection with memory pages storing an identification value that are mapped at the same guest physical addresses
US11237859B2 (en) * 2018-11-28 2022-02-01 Red Hat Israel, Ltd. Securing virtual machines in computer systems
US11099874B2 (en) 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US11126553B2 (en) * 2019-01-31 2021-09-21 EMC IP Holding Company LLC Dynamic allocation of memory between containers
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
CN111796901A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN111796944A (zh) * 2019-04-08 2020-10-20 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
US20200401434A1 (en) * 2019-06-19 2020-12-24 Vmware, Inc. Precision time protocol in a virtualized environment
JP7309579B2 (ja) 2019-11-14 2023-07-18 株式会社東芝 通信装置、通信方法及びプログラム
GB2594534B (en) * 2020-04-30 2022-09-21 Metaswitch Networks Ltd Processing user traffic in a virtualised network
US11599649B2 (en) * 2020-06-29 2023-03-07 Rockwell Automation Technologies, Inc. Method and apparatus for managing transmission of secure data packets
US11606346B2 (en) 2020-06-29 2023-03-14 Rockwell Automation Technologies, Inc. Method and apparatus for managing reception of secure data packets
CN111988230B (zh) * 2020-08-19 2023-04-07 海光信息技术股份有限公司 虚拟机通信方法、装置、系统及电子设备
CN112131011B (zh) * 2020-11-26 2021-02-26 北京壁仞科技开发有限公司 用于管理资源的方法、计算设备和计算机可读存储介质
US20210117244A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Resource manager access control
US11816498B2 (en) * 2021-01-21 2023-11-14 Nutanix, Inc. Early event-based notification for VM swapping
CN113064697B (zh) * 2021-04-01 2022-09-23 上海交通大学 利用多硬件特性加速微内核进程间通信的方法
US11971818B1 (en) 2022-07-13 2024-04-30 Cadence Design Systems, Inc. Memory view for non-volatile memory module

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120167089A1 (en) * 2009-07-28 2012-06-28 Airbus (S.A.S.) Software component and device for the automated processing of multi-purpose data, employing functions requiring different security levels or responsibility limits
TW201342064A (zh) * 2011-12-22 2013-10-16 Intel Corp 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術
US20140082751A1 (en) * 2012-09-14 2014-03-20 Harshawardhan Vipat Protecting iat/eat hooks from rootkit attacks using new cpu assists
US20140196029A1 (en) * 2013-01-10 2014-07-10 VCE Company LLC Scripting language executor service for applications

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143389A1 (en) * 2004-12-28 2006-06-29 Frank Kilian Main concept for common cache management
US8166474B1 (en) * 2005-09-19 2012-04-24 Vmware, Inc. System and methods for implementing network traffic management for virtual and physical machines
JP5146174B2 (ja) * 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US11132237B2 (en) * 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
CN101667144B (zh) * 2009-09-29 2013-02-13 北京航空航天大学 一种基于共享内存的虚拟机通信方法
WO2011143103A2 (en) * 2010-05-10 2011-11-17 Citrix Systems, Inc. Redirection of information from secure virtual machines to unsecure virtual machines
US8893274B2 (en) * 2011-08-03 2014-11-18 Trend Micro, Inc. Cross-VM network filtering
JP2013242644A (ja) * 2012-05-18 2013-12-05 Panasonic Corp 仮想計算機システム、制御方法、およびプログラム
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120167089A1 (en) * 2009-07-28 2012-06-28 Airbus (S.A.S.) Software component and device for the automated processing of multi-purpose data, employing functions requiring different security levels or responsibility limits
TW201342064A (zh) * 2011-12-22 2013-10-16 Intel Corp 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術
US20140082751A1 (en) * 2012-09-14 2014-03-20 Harshawardhan Vipat Protecting iat/eat hooks from rootkit attacks using new cpu assists
US20140196029A1 (en) * 2013-01-10 2014-07-10 VCE Company LLC Scripting language executor service for applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI748338B (zh) * 2019-03-08 2021-12-01 美商萬國商業機器公司 用於安全介面控制高層級頁面管理之電腦實施方法、電腦系統及電腦程式產品
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting

Also Published As

Publication number Publication date
US9454497B2 (en) 2016-09-27
EP2985718B1 (en) 2017-03-22
CN106201646B (zh) 2020-03-31
TW201629779A (zh) 2016-08-16
EP2985718A1 (en) 2016-02-17
US20160048464A1 (en) 2016-02-18
CN106201646A (zh) 2016-12-07
JP2016042354A (ja) 2016-03-31
KR101782398B1 (ko) 2017-09-28
JP5989862B2 (ja) 2016-09-07
KR20160021028A (ko) 2016-02-24

Similar Documents

Publication Publication Date Title
TWI556107B (zh) 用於安全虛擬機器間共用記憶體通訊之技術
US10019276B2 (en) Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
EP2879053B1 (en) Virtual machine memory data migration method, related apparatus, and cluster system
US20160231929A1 (en) Zero copy memory reclaim using copy-on-write
US8893267B1 (en) System and method for partitioning resources in a system-on-chip (SoC)
KR20150048173A (ko) 게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛
US20200319913A1 (en) System, apparatus and method for accessing multiple address spaces via a virtualization device
JP2015500524A (ja) 効率的なメモリ及びリソース管理
CN105980986B (zh) 用于虚拟化计算的装置和方法
US11188365B2 (en) Memory overcommit by speculative fault
US10331591B2 (en) Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention
US10430327B2 (en) Virtual machine based huge page balloon support
US20230297725A1 (en) Technologies for filtering memory access transactions received from one or more i/o devices
Kim et al. Secure device access for automotive software
US10255203B2 (en) Technologies for zero-copy inter-virtual-machine data movement
US9921875B2 (en) Zero copy memory reclaim for applications using memory offlining
US9459907B2 (en) Guest controlled malicious payload protection
US10691365B1 (en) Dynamic memory locality for guest memory
CN115933975A (zh) 数据处理方法、计算设备及计算机系统
KR20180041037A (ko) 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
CN112330229A (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US20220318040A1 (en) System and method for providing page migration
US10223284B2 (en) Flexible I/O DMA address allocation in virtualized systems
CN108932205B (zh) 一种防御RowHammer攻击的方法及设备

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees