TW202244731A - 虛擬機的裝置直通方法及其伺服器 - Google Patents

虛擬機的裝置直通方法及其伺服器 Download PDF

Info

Publication number
TW202244731A
TW202244731A TW110117542A TW110117542A TW202244731A TW 202244731 A TW202244731 A TW 202244731A TW 110117542 A TW110117542 A TW 110117542A TW 110117542 A TW110117542 A TW 110117542A TW 202244731 A TW202244731 A TW 202244731A
Authority
TW
Taiwan
Prior art keywords
operating system
virtual machine
packet
hardware device
analyzer
Prior art date
Application number
TW110117542A
Other languages
English (en)
Other versions
TWI790615B (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 宏碁股份有限公司
Priority to TW110117542A priority Critical patent/TWI790615B/zh
Priority to US17/724,484 priority patent/US20220365805A1/en
Publication of TW202244731A publication Critical patent/TW202244731A/zh
Application granted granted Critical
Publication of TWI790615B publication Critical patent/TWI790615B/zh

Links

Images

Classifications

    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/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/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

提供一種虛擬機的裝置直通方法及其伺服器。方法包含:建立包含對應於硬體裝置的裝置驅動程式以及插座節點的主機操作系統核心以及包含客戶端操作系統以及客戶端核心的虛擬機,其中客戶端操作系統包含應用程式以及分析器;由客戶端核心自應用程式接收輸入輸出請求指令,並且傳送對應於輸入輸出請求指令的輸入輸出請求封包至分析器;由分析器根據輸入輸出請求封包中的虛擬功能名稱將對應於輸入輸出請求指令的存取封包傳送至對應於虛擬功能名稱的插座節點;以及由插座節點根據存取封包存取裝置驅動程式以驅動硬體裝置。

Description

虛擬機的裝置直通方法及其伺服器
本發明是有關於一種虛擬機的裝置直通方法及其伺服器。
運算裝置可通過虛擬機(virtual machine,VM)技術來模擬電腦系統。虛擬機可通過裝置直通(device pass-through)技術存取硬體裝置以通過主機(host)操作系統(operating system,OS)核心(kernel)控制硬體裝置。目前,虛擬機可通過多種方式來執行裝置直通。舉例來說,由獨立硬體製造商(independent hardware vendor,IHV)開發的VirtIO裝置可被安裝於虛擬機的客戶端核心(guest kernel)中。當虛擬機的客戶端操作系統欲將存取指令傳送給主機操作系統時,客戶端操作系統(guest OS)可通過VirtIO裝置傳送存取指令給主機操作系統以通過主機操作系統存取硬體裝置。此外,虛擬機可使用單一輸入輸出虛擬化(single root I/O virtualization,SR-IOV)技術以通過虛擬功能(virtual function,VF)存取硬體裝置。再者,虛擬機也可以使用veth技術以在虛擬機與主機操作系統之間建立通道,並通過通道傳送存取指令給主機操作系統。然而,採用上述的方法的使用者都需委請獨立硬體製造商或獨立軟體製造商(independent software vendor,ISV)進行軟體開發,故使用者都需支付一筆費用。
另一方面,主機操作系統核心也可使用軟體(例如:QEMU或CrosVM)產生虛擬裝置(virtual device)以供虛擬機存取。然而,上述的方法會顯著地降低運算裝置的效能。
本發明提供一種虛擬機的裝置直通方法及其伺服器,可優化虛擬機的效能。
本發明的一種虛擬機的伺服器,包含處理器、儲存媒體以及收發器。儲存媒體儲存多個模組。處理器耦接儲存媒體以及收發器,並且存取和執行多個模組,其中多個模組包含主機操作系統核心以及虛擬機。主機操作系統核心通過收發器通訊連接至硬體裝置,並且包含對應於硬體裝置的裝置驅動程式以及插座節點。虛擬機包含客戶端操作系統以及客戶端核心,其中客戶端操作系統包含應用程式以及分析器,其中客戶端核心自應用程式接收輸入輸出請求指令,並且傳送對應於輸入輸出請求指令的輸入輸出請求封包至分析器,其中分析器根據輸入輸出請求封包中的虛擬功能名稱將對應於輸入輸出請求指令的存取封包傳送至對應於虛擬功能名稱的插座節點,其中插座節點根據存取封包存取裝置驅動程式以驅動硬體裝置。
在本發明的一實施例中,上述的客戶端核心包含VirtIO裝置,其中輸入輸出請求封包包含虛擬功能名稱和硬體識別碼的其中之一,其中分析器響應於輸入輸出請求封包包含硬體識別碼而通過對應於硬體識別碼的VirtIO裝置傳送存取封包至主機操作系統核心,其中主機操作系統核心根據存取封包存取裝置驅動程式以驅動硬體裝置。
在本發明的一實施例中,上述的主機操作系統核心響應於插座節點接收存取封包而將對應於插座節點的計數值加一,其中主機操作系統核心通過收發器輸出計數值。
在本發明的一實施例中,上述的分析器根據輸入輸出請求封包產生存取封包,其中存取封包包含存取指令以及對應於插座節點的插座節點名稱。
在本發明的一實施例中,上述的存取封包更包含對應於虛擬機的虛擬機位址,其中插座節點響應於驅動硬體裝置而根據虛擬機位址傳送硬體裝置的輸出至虛擬機。
在本發明的一實施例中,上述的存取封包包含對應於VirtIO裝置的VirtIO裝置位址,其中主機操作系統核心響應於驅動硬體裝置而根據VirtIO裝置位址傳送硬體裝置的輸出至VirtIO裝置。
在本發明的一實施例中,上述的主機操作系統核心通過收發器偵測硬體裝置,並且響應於偵測硬體裝置而建立裝置驅動程式以及插座節點。
在本發明的一實施例中,上述的主機操作系統核心響應於偵測硬體裝置而傳送配置封包至分析器,其中配置封包包含對應於硬體裝置的硬體識別碼、對應於插座節點的插座節點位址以及對應於插座節點的插座節點名稱。
在本發明的一實施例中,上述的分析器根據配置封包產生虛擬功能名稱以及插座節點名稱的映射表。
在本發明的一實施例中,上述的分析器根據映射表而將存取封包傳送至對應於虛擬功能名稱的插座節點。
在本發明的一實施例中,上述的分析器與插座節點通過虛擬機插座(vsock)協定與彼此進行通訊。
本發明的一種虛擬機的裝置直通方法,包含:建立主機操作系統核心以及虛擬機,其中主機操作系統核心包含對應於硬體裝置的裝置驅動程式以及插座節點,其中虛擬機包含客戶端操作系統以及客戶端核心,其中客戶端操作系統包含應用程式以及分析器;由客戶端核心自應用程式接收輸入輸出請求指令,並且傳送對應於輸入輸出請求指令的輸入輸出請求封包至分析器;由分析器根據輸入輸出請求封包中的虛擬功能名稱將對應於輸入輸出請求指令的存取封包傳送至對應於虛擬功能名稱的插座節點;以及由插座節點根據存取封包存取裝置驅動程式以驅動硬體裝置。
基於上述,本發明的虛擬機可通過與硬體裝置專屬的插座節點通訊以存取硬體裝置。相較於傳統的虛擬機通過虛擬裝置存取硬體裝置,通過插座節點存取硬體裝置可避免二進位翻譯(binary translation)程序的發生,從而減少運算資源的浪費。
為了使本發明之內容可以被更容易明瞭,以下特舉實施例作為本發明確實能夠據以實施的範例。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟,係代表相同或類似部件。
圖1根據本發明的一實施例繪示一種虛擬機的伺服器100的示意圖。伺服器100可包含處理器110、儲存媒體120以及收發器130。
處理器110例如是中央處理單元(central processing unit,CPU),或是其他可程式化之一般用途或特殊用途的微控制單元(micro control unit,MCU)、微處理器(microprocessor)、數位信號處理器(digital signal processor,DSP)、可程式化控制器、特殊應用積體電路(application specific integrated circuit,ASIC)、圖形處理器(graphics processing unit,GPU)、影像訊號處理器(image signal processor,ISP)、影像處理單元(image processing unit,IPU)、算數邏輯單元(arithmetic logic unit,ALU)、複雜可程式邏輯裝置(complex programmable logic device,CPLD)、現場可程式化邏輯閘陣列(field programmable gate array,FPGA)或其他類似元件或上述元件的組合。處理器110可耦接至儲存媒體120以及收發器130,並且存取和執行儲存於儲存媒體120中的多個模組和各種應用程式。
儲存媒體120例如是任何型態的固定式或可移動式的隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)、快閃記憶體(flash memory)、硬碟(hard disk drive,HDD)、固態硬碟(solid state drive,SSD)或類似元件或上述元件的組合,而用於儲存可由處理器110執行的多個模組或各種應用程式。
收發器130以無線或有線的方式傳送及接收訊號。收發器130還可以執行例如低噪聲放大、阻抗匹配、混頻、向上或向下頻率轉換、濾波、放大以及類似的操作。
圖2根據本發明的一實施例繪示儲存媒體120中的多個模組的示意圖。儲存媒體120中的多個模組可包含主機操作系統核心200以及虛擬機300。主機操作系統核心200可通過收發器130通訊連接至硬體裝置400。虛擬機300可通過主機操作系統核心200存取硬體裝置400。雖然圖2的實施例通過單一裝置(即:伺服器100)實施主機操作系統核心200以及虛擬機300,但本發明不限於此。舉例來說,主機操作系統核心200以及虛擬機300可分別由彼此通訊連接的不同運算裝置實施。
主機操作系統核心200可包含對應於硬體裝置400的插座節點(socket node)210以及裝置驅動程式230。插座節點210可通過裝置驅動程式230存取硬體裝置400。虛擬機300例如是一種基於內核的虛擬機(kernel-based virtual machine,KVM)。虛擬機300可包含客戶端操作系統(guest OS)310以及客戶端核心(guest kernel)330。客戶端操作系統310可包含應用程式311以及分析器313,其中分析器313可包含對應於硬體裝置400的插座(socket)315。客戶端核心330可包含VirtIO裝置331。
圖3根據本發明的一實施例繪示一種虛擬機的裝置直通方法的流程圖,其中所述裝置直通方法可由如圖1所示伺服器100實施。在本實施例中,假設應用程式311欲存取硬體裝置400,虛擬機300可根據裝置直通方法判斷通過virtIO裝置331或插座315以存取硬體裝置400。
參照圖2和圖3,在步驟S301中,客戶端核心330可將輸入輸出(I/O)請求封包(即:IRP封包)S2傳送至分析器313,其中所述I/O請求封包S2對應於硬體裝置400。分析器313可自客戶端核心330取得I/O請求封包S2。具體來說,應用程式311可通過收發器130接收資料,並且根據接收的資料產生I/O請求指令(或稱為「I/O中斷指令」)S1,其中所述I/O請求指令S1可對應於硬體裝置400。應用程式311可傳送I/O請求指令S1至客戶端核心330,並且客戶端核心330可傳送對應於I/O請求指令S1的I/O請求封包S2至分析器313。I/O請求封包S2可包含虛擬功能名稱(VF name)或硬體識別碼(hardware ID,HW ID)。
舉例來說,伺服器100可通過收發器130連接至外部輸入裝置(例如:鍵盤)。使用者可通過外部輸入裝置操作應用程式311以傳送I/O請求指令S1至客戶端核心330。舉另一例來說,伺服器100可通過收發器130連接至外部電子裝置(例如:終端裝置或伺服器)。應用程式311可通過收發器130以自外部電子裝置接收指令,並且根據所述指令傳送I/O請求指令S1至客戶端核心330。
在步驟S302中,分析器313可判斷I/O請求封包S2是否包含硬體識別碼。若I/O請求封包S2包含硬體識別碼,則進入步驟S303。若I/O請求封包S2不包含硬體識別碼,則進入步驟S308。
I/O請求封包S2包含硬體識別碼代表客戶端核心330中存在硬體裝置400專屬的virtIO裝置331。因此,若客戶端核心330判斷I/O請求指令S1是用於存取硬體裝置400的,則客戶端核心330可將對應於硬體裝置400以及virtIO裝置331的硬體識別碼封裝於I/O請求封包S2中。客戶端核心330可通過I/O請求封包S2指示分析器313使用virtIO裝置331來存取硬體裝置400。另一方面,若客戶端核心330中不存在專屬於硬體裝置400的virtIO裝置(即:virtIO裝置331不屬於硬體裝置400),則客戶端核心330將無法指示分析器313使用virtIO裝置331來存取硬體裝置400。
在步驟S303中,分析器313可根據過I/O請求封包S2產生對應於硬體裝置400的存取封包S3,其中存取封包S3可包含用於存取硬體裝置400的存取指令。在步驟S304中,分析器313可將存取封包S3傳送至對應於硬體識別碼的virtIO裝置331。
在一實施例中,若虛擬機300欲在存取硬體裝置400後取得硬體裝置400的輸出,則存取封包S3可進一步包含virtIO裝置331的virtIO裝置位址33,其中virtIO裝置位址33為儲存媒體120的記憶體位址。據此,分析器313可通過存取封包S3指示主機操作系統核心200通過virtIO裝置位址33來回饋硬體裝置400的輸出給虛擬機300。
在步驟S305中,virtIO裝置331可傳送存取封包S3至主機操作系統核心200。主機操作系統核心200可根據存取封包S3來存取裝置驅動程式230以驅動硬體裝置400。具體來說,virtIO裝置331可將存取封包S3傳送至硬體裝置400的硬體裝置位址34,其中硬體裝置位址34為儲存媒體120的記憶體位址。裝置驅動程式230可自硬體裝置位址34取得存取封包S3,並且根據存取封包S3驅動硬體裝置400。
在步驟S306中,主機操作系統核心200可判斷存取封包S3是否包含virtIO裝置331的virtIO裝置位址33。若存取封包S3包含virtIO裝置位址33,則進入步驟S307。若存取封包S3不包含virtIO裝置位址33,則結束流程。
在步驟S307中,主機操作系統核心200可根據virtIO裝置331的virtIO裝置位址33傳送硬體裝置400的輸出S4至VirtIO裝置331。VirtIO裝置331可進一步將硬體裝置400的輸出S4傳送至應用程式311。
在步驟S308中,分析器313可根據過I/O請求封包S2產生對應於硬體裝置400的存取封包S5,其中存取封包S5可包含用於存取硬體裝置400的存取指令以及對應於插座節點210的插座節點名稱。
在步驟S309中,分析器313可將存取封包S5傳送至對應於虛擬功能名稱的插座節點210,其中分析器313與插座節點210可通過虛擬機插座(VM socket,vsock)協定來與彼此進行通訊。因此,虛擬機300不須執行二進位翻譯也可將存取封包S5傳送給主機操作系統核心200。具體來說,分析器313可儲存虛擬功能名稱與插座節點名稱的映射表。在從I/O請求封包S2取得虛擬功能名稱後,分析器313可根據映射表判斷虛擬功能名稱與插座節點210的插座節點名稱相對應。據此,分析器313可通過插座315將存取封包S5傳送至插座節點210的插座節點位址32,其中插座節點位址32為儲存媒體120的記憶體位址。換句話說,分析器313可根據映射表傳送存取封包S5至對應於虛擬功能名稱的插座節點210。映射表的建立方法記載於圖4的實施例中。
在一實施例中,若虛擬機300欲在存取硬體裝置400後取得硬體裝置400的輸出,則存取封包S5可進一步包含虛擬機300的虛擬機位址31,其中虛擬機位址31為儲存媒體120的記憶體位址。據此,分析器313可通過存取封包S5指示主機操作系統核心200通過虛擬機位址31來回饋硬體裝置400的輸出給虛擬機300。
在一實施例中,主機操作系統核心200可響應於插座節點210接收存取封包S5而將對應於插座節點210的計數值加一。主機操作系統核心200可通過收發器130輸出插座節點210的計數值以供使用者參考。舉例來說,若在一特定時段內,插座節點210的計數值超過閾值,則使用者可判斷虛擬機300經常需要存取對應於插座節點210的硬體裝置400。據此,使用者可考慮為硬體裝置400建立專屬的VirtIO裝置。硬體裝置400專屬的VirtIO裝置可提升存取硬體裝置400的效率。
在步驟S310中,插座節點210可根據存取封包S5來存取驅動程式230以驅動硬體裝置400。
在步驟S311中,主機操作系統核心200可判斷存取封包S5是否包含虛擬機300的虛擬機位址31。若存取封包S5包含虛擬機位址31,則進入步驟S312。若存取封包S5不包含虛擬機位址31,則結束流程。
在步驟S312中,主機操作系統核心200可根據虛擬機300的虛擬機位址31傳送硬體裝置400的輸出S6至虛擬機300。虛擬機300中的應用程式311可取得硬體裝置400的輸出S6。
圖4根據本發明的一實施例繪示為硬體裝置400建立裝置直通通道的方法的流程圖,其中所述方法可由如圖1所示的伺服器100實施。在完成硬體裝置400的裝置直通通道的建立後,伺服器100便可執行如圖3所示的方法。
在步驟S401中,主機操作系統核心200可通過收發器130偵測硬體裝置400。
在步驟S402中,主機操作系統核心200可建立(或啟動(launch))對應於硬體裝置400的裝置驅動程式230。
在步驟S403中,主機操作系統核心200可建立對應於硬體裝置400的插座節點210。
在步驟S404中,主機操作系統核心200可傳送配置封包至分析器313。配置封包可包含對應於硬體裝置400的硬體識別碼,並可包含對應於插座節點210的插座節點名稱以及插座節點位址。
在步驟S405中,分析器313可根據配置封包產生虛擬功能名稱以及插座節點名稱的映射表。具體來說,在接收配置封包後,分析器313可建立與配置封包中的硬體識別碼(或硬體裝置400)相對應的虛擬功能,並可產生對應於所述虛擬功能的虛擬功能名稱。根據配置封包產生的虛擬功能名稱與配置封包中的插座節點名稱是相對應的。換句話說,虛擬功能名稱與插座節點名稱之間具有映射關係。據此,分析器313可根據所述映射關係建立虛擬功能名稱與插座節點名稱的映射表。此外,分析器313可根據配置封包建立對應於插座節點210的插座315。
圖5根據本發明的一實施例繪示另一種虛擬機的裝置直通方法的流程圖,其中所述裝置直通方法可由如圖1所示的伺服器100實施。在步驟S501中,建立主機操作系統核心以及虛擬機,其中主機操作系統核心包含對應於硬體裝置的裝置驅動程式以及插座節點,其中虛擬機包含客戶端操作系統以及客戶端核心,其中客戶端操作系統包含應用程式以及分析器。在步驟S502中,由客戶端核心自應用程式接收輸入輸出請求指令,並且傳送對應於輸入輸出請求指令的輸入輸出請求封包至分析器。在步驟S503中,由分析器根據輸入輸出請求封包中的虛擬功能名稱將對應於輸入輸出請求指令的存取封包傳送至對應於虛擬功能名稱的插座節點。在步驟S504中,由插座節點根據存取封包存取裝置驅動程式以驅動硬體裝置。
綜上所述,本發明的分析器可在接收到I/O請求封包時判斷是否採用VirtIO裝置來存取主機操作系統核心。當分析器判斷不採用VirtIO裝置時,分析器可通過與硬體裝置專屬的插座節點通訊以存取硬體裝置。相較於傳統的虛擬機通過虛擬裝置存取硬體裝置,通過插座節點存取硬體裝置可避免二進位翻譯程序的發生,從而減少運算資源的浪費。此外,本發明的主機操作系統核心可統計插座節點被存取的次數,以供使用者參考。使用者可根據插座節點被存取的次數來決定是否為對應的硬體裝置開發專屬的VirtIO裝置。若存取封包包含虛擬機位址,則主機操作系統核心可根據虛擬機位址將硬體裝置的輸出回傳給虛擬機。另一方面,當主機操作系統核心偵測到新硬體裝置時,主機操作系統核心可將新硬體裝置的相關資訊傳送給分析器。分析器可根據所述相關資訊來存取所述硬體裝置。
100:伺服器 110:處理器 120:儲存媒體 130:收發器 200:主機操作系統核心 210:插座節點 230:裝置驅動程式 300:虛擬機 310:客戶端操作系統 31:虛擬機位址 311:應用程式 313:分析器 315:插座 32:插座節點位址 33:virtIO裝置位址 330:客戶端核心 34:硬體裝置位址 400:硬體裝置 S1:輸入輸出請求指令 S2:輸入輸出請求封包 S3、S5:存取封包 S4、S6:輸出 S301、S302、S303、S304、S305、S306、S307、S308、S309、S310、S311、S312、S401、S402、S403、S404、S405、S501、S502、S503、S504:步驟
圖1根據本發明的一實施例繪示一種虛擬機的伺服器的示意圖。 圖2根據本發明的一實施例繪示儲存媒體中的多個模組的示意圖。 圖3根據本發明的一實施例繪示一種虛擬機的裝置直通方法的流程圖。 圖4根據本發明的一實施例繪示為硬體裝置建立裝置直通通道的方法的流程圖。 圖5根據本發明的一實施例繪示另一種虛擬機的裝置直通方法的流程圖。
S501、S502、S503、S504:步驟

Claims (12)

  1. 一種虛擬機的伺服器,包括: 收發器; 儲存媒體,儲存多個模組;以及 處理器,耦接所述儲存媒體以及所述收發器,並且存取和執行所述多個模組,其中所述多個模組包括: 主機操作系統核心,通過所述收發器通訊連接至硬體裝置,並且包含對應於所述硬體裝置的裝置驅動程式以及插座節點;以及 虛擬機,包括客戶端操作系統以及客戶端核心,其中所述客戶端操作系統包括應用程式以及分析器,其中 所述客戶端核心自所述應用程式接收輸入輸出請求指令,並且傳送對應於所述輸入輸出請求指令的輸入輸出請求封包至所述分析器,其中 所述分析器根據所述輸入輸出請求封包中的虛擬功能名稱將對應於所述輸入輸出請求指令的存取封包傳送至對應於所述虛擬功能名稱的所述插座節點,其中 所述插座節點根據所述存取封包存取所述裝置驅動程式以驅動所述硬體裝置。
  2. 如請求項1所述的伺服器,其中所述客戶端核心包括VirtIO裝置,其中所述輸入輸出請求封包包括所述虛擬功能名稱和硬體識別碼的其中之一,其中所述分析器響應於所述輸入輸出請求封包包括所述硬體識別碼而通過對應於所述硬體識別碼的所述VirtIO裝置傳送所述存取封包至所述主機操作系統核心,其中所述主機操作系統核心根據所述存取封包存取所述裝置驅動程式以驅動所述硬體裝置。
  3. 如請求項1所述的伺服器,其中所述主機操作系統核心響應於所述插座節點接收所述存取封包而將對應於所述插座節點的計數值加一,其中所述主機操作系統核心通過所述收發器輸出所述計數值。
  4. 如請求項1所述的伺服器,其中所述分析器根據所述輸入輸出請求封包產生所述存取封包,其中所述存取封包包括存取指令以及對應於所述插座節點的插座節點名稱。
  5. 如請求項4所述的伺服器,其中所述存取封包更包括對應於所述虛擬機的虛擬機位址,其中所述插座節點響應於驅動所述硬體裝置而根據所述虛擬機位址傳送所述硬體裝置的輸出至所述虛擬機。
  6. 如請求項2所述的伺服器,其中所述存取封包包括對應於所述VirtIO裝置的VirtIO裝置位址,其中所述主機操作系統核心響應於驅動所述硬體裝置而根據所述VirtIO裝置位址傳送所述硬體裝置的輸出至所述VirtIO裝置。
  7. 如請求項1所述的伺服器,其中所述主機操作系統核心通過所述收發器偵測所述硬體裝置,並且響應於偵測所述硬體裝置而建立所述裝置驅動程式以及所述插座節點。
  8. 如請求項7所述的伺服器,其中所述主機操作系統核心響應於偵測所述硬體裝置而傳送配置封包至所述分析器,其中所述配置封包包括對應於所述硬體裝置的硬體識別碼、對應於所述插座節點的插座節點位址以及對應於所述插座節點的插座節點名稱。
  9. 如請求項8所述的伺服器,其中所述分析器根據所述配置封包產生所述虛擬功能名稱以及所述插座節點名稱的映射表。
  10. 如請求項9所述的伺服器,其中所述分析器根據所述映射表而將所述存取封包傳送至對應於所述虛擬功能名稱的所述插座節點。
  11. 如請求項1所述的伺服器,其中所述分析器與所述插座節點通過虛擬機插座(vsock)協定與彼此進行通訊。
  12. 一種虛擬機的裝置直通方法,包括: 建立主機操作系統核心以及虛擬機,其中所述主機操作系統核心包含對應於硬體裝置的裝置驅動程式以及插座節點,其中所述虛擬機包括客戶端操作系統以及客戶端核心,其中所述客戶端操作系統包括應用程式以及分析器; 由所述客戶端核心自所述應用程式接收輸入輸出請求指令,並且傳送對應於所述輸入輸出請求指令的輸入輸出請求封包至所述分析器; 由所述分析器根據所述輸入輸出請求封包中的虛擬功能名稱將對應於所述輸入輸出請求指令的存取封包傳送至對應於所述虛擬功能名稱的所述插座節點;以及 由所述插座節點根據所述存取封包存取所述裝置驅動程式以驅動所述硬體裝置。
TW110117542A 2021-05-14 2021-05-14 虛擬機的裝置直通方法及其伺服器 TWI790615B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW110117542A TWI790615B (zh) 2021-05-14 2021-05-14 虛擬機的裝置直通方法及其伺服器
US17/724,484 US20220365805A1 (en) 2021-05-14 2022-04-19 Device pass-through method for virtual machine and server using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110117542A TWI790615B (zh) 2021-05-14 2021-05-14 虛擬機的裝置直通方法及其伺服器

Publications (2)

Publication Number Publication Date
TW202244731A true TW202244731A (zh) 2022-11-16
TWI790615B TWI790615B (zh) 2023-01-21

Family

ID=83999060

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110117542A TWI790615B (zh) 2021-05-14 2021-05-14 虛擬機的裝置直通方法及其伺服器

Country Status (2)

Country Link
US (1) US20220365805A1 (zh)
TW (1) TWI790615B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200796B1 (en) * 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
WO2013091185A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Gpu accelerated address translation for graphics virtualization
US9910689B2 (en) * 2013-11-26 2018-03-06 Dynavisor, Inc. Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host
US20200409732A1 (en) * 2019-06-26 2020-12-31 Ati Technologies Ulc Sharing multimedia physical functions in a virtualized environment on a processing unit

Also Published As

Publication number Publication date
TWI790615B (zh) 2023-01-21
US20220365805A1 (en) 2022-11-17

Similar Documents

Publication Publication Date Title
EP3204862B1 (en) Emulated endpoint configuration
JP3138119U (ja) リモート起動制御装置
WO2019095655A1 (zh) 一种数据交互方法和计算设备
US7577765B2 (en) Advanced power management in generic USB drivers
TWI303025B (en) Physical device , i/o device and computer system with virtual machine capable interfaces
US10509758B1 (en) Emulated switch with hot-plugging
US20070005867A1 (en) Virtual peripheral device interface and protocol for use in peripheral device redirection communication
KR100946395B1 (ko) 내장형 마이크로컨트롤러를 가진 마이크로컴퓨터 브리지 아키텍처
US9734100B2 (en) Network controller sharing between SMM firmware and OS drivers
EP2090979B1 (en) Interface driver program for computer and recording medium therefor
JP2003532165A (ja) 入出力デバイスを動的に再構成する装置及び方法
JP2008539484A (ja) ユニバーサル・シリアル・バス機能のデリゲーション
JP7093979B2 (ja) デバイスプロキシ装置及びそれを含む計算機システム
US20100169069A1 (en) Composite device emulation
JP5160844B2 (ja) Hidデバイスの通信速度を高める方法
TWI790615B (zh) 虛擬機的裝置直通方法及其伺服器
WO2014000299A1 (zh) 串口重定向处理方法、设备和系统
US20140006645A1 (en) Emulated keyboard controller and embedded controller interface via an interconnect interface
JP5626839B2 (ja) 仮想計算機システム、仮想計算機制御装置および仮想計算機システムの実行方法
CN115469962A (zh) 虚拟机的装置直通方法及其服务器
JP6965943B2 (ja) 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム
CN117331720B (zh) 用于多核间通信的方法、寄存器组、芯片及计算机设备
US20130031547A1 (en) Facilitating compatible interaction, at least in part
EP4361858A1 (en) Securing function as a service cloud computing environments
US20240289134A1 (en) Control method and electronic device