CN116414516A - 虚拟化系统和操作其的方法 - Google Patents

虚拟化系统和操作其的方法 Download PDF

Info

Publication number
CN116414516A
CN116414516A CN202211529120.1A CN202211529120A CN116414516A CN 116414516 A CN116414516 A CN 116414516A CN 202211529120 A CN202211529120 A CN 202211529120A CN 116414516 A CN116414516 A CN 116414516A
Authority
CN
China
Prior art keywords
operating system
hardware
guest
virtualization
virtual machine
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202211529120.1A
Other languages
English (en)
Inventor
金珉奭
金俊
李沅键
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020220020540A external-priority patent/KR20230087336A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116414516A publication Critical patent/CN116414516A/zh
Pending legal-status Critical Current

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/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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/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/45562Creating, deleting, cloning virtual machine instances
    • 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
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种虚拟化系统包括处理器、主机操作系统(OS)、至少一个客户操作系统、虚拟机监视器、至少一个硬件输入/输出(I/O)设备和至少一个硬件接口设备。处理器为虚拟化环境提供功能。主机操作系统在虚拟化环境上运行。所述至少一个客户操作系统在虚拟化环境的至少一个虚拟机上运行。虚拟机监视器使用处理器的功能来实现虚拟化环境,并且生成并控制虚拟化环境的所述至少一个虚拟机。所述至少一个硬件输入/输出设备由主机操作系统和所述至少一客户操作系统控制。所述至少一个硬件接口设备支持所述至少一个客户操作系统和所述至少一个硬件输入/输出设备之间的通信。

Description

虚拟化系统和操作其的方法
相关申请的交叉引用
本申请要求在韩国知识产权局(KIPO)于2021年12月9日提交的第10-2021-0175660号韩国专利申请和于2022年2月17日提交的第10-2022-0020540号韩国专利申请的优先权,这些韩国专利申请的公开内容通过引用整体合并于此。
技术领域
示例实施例总体上涉及半导体集成电路,更具体地,涉及虚拟化系统和操作虚拟化系统的方法。
背景技术
虚拟化允许多个操作系统在一个物理设备上运行。硬件虚拟化是指虚拟机的创建,该虚拟机就像具有操作系统的真实计算机一样起作用。在虚拟机上执行的软件与底层硬件资源是分开的。在应用了虚拟化的处理器所提供的虚拟化环境中,不同的操作系统可以彼此独立地运行。虚拟化可以提供隔离、高可用性、工作负载平衡、沙盒化、跨硬件(hardware agnostic)软件等。
具有各种功能的处理器、存储器、知识产权(IP)(例如,功能电路或块)可以被包括在虚拟化系统中或由虚拟化系统实现。这样的各种硬件设备可以由各种操作系统共享。然而,当前的虚拟化技术遭受软件兼容性问题和可移植性下降。
发明内容
本公开的至少一个示例实施例提供了一种虚拟化系统,其中各种操作系统能够高效地共享各种硬件设备。
本公开的至少一个示例实施例提供了一种操作虚拟化系统的方法。
根据示例实施例,一种虚拟化系统包括处理器、主机操作系统(OS)、至少一个客户操作系统、虚拟机监视器(hypervisor)、至少一个硬件输入/输出(I/O)设备和至少一个硬件接口设备。处理器为虚拟化环境提供功能。主机操作系统在虚拟化环境上运行。所述至少一个客户操作系统在虚拟化环境的至少一个虚拟机上运行。虚拟机监视器使用处理器的功能来实现虚拟化环境,并且生成并控制虚拟化环境的所述至少一个虚拟机。所述至少一个硬件输入/输出设备由主机操作系统和所述至少一客户操作系统控制。所述至少一个硬件接口设备支持所述至少一个客户操作系统和所述至少一个硬件输入/输出设备之间的通信。
根据示例实施例,在一种操作虚拟化系统的方法中,通过使用处理器执行主机操作系统(OS)、至少一个客户操作系统和虚拟机监视器来生成虚拟化环境。处理器为虚拟化环境提供功能。主机操作系统在虚拟化环境上运行。所述至少一个客户操作系统在虚拟化环境的至少一个虚拟机上运行。虚拟机监视器使用处理器的功能来实现虚拟化环境,并且生成并控制虚拟化环境的所述至少一个虚拟机。当至少一个硬件输入/输出(I/O)设备将由所述至少一个客户操作系统控制时,使用至少一个硬件接口设备来控制所述至少一个硬件输入/输出设备。所述至少一个硬件输入/输出设备由主机操作系统和所述至少一个客户操作系统控制。所述至少一个硬件接口设备支持所述至少一个客户操作系统和所述至少一个硬件输入/输出设备之间的通信。
根据示例实施例,一种虚拟化系统包括处理器、主机操作系统(OS)、第一客户操作系统、第二客户操作系统、虚拟机监视器、硬件输入/输出(I/O)设备、第一硬件接口设备和第二硬件接口设备。处理器为虚拟化环境提供功能。主机操作系统在虚拟化环境的主机虚拟机上运行。第一客户操作系统和第二客户操作系统分别在虚拟化环境的第一客户虚拟机和第二客户虚拟机上彼此独立地运行,并独立于主机操作系统运行。第一客户虚拟机和第二客户虚拟机彼此不同。虚拟机监视器使用处理器的功能来实现虚拟化环境,并且生成并控制虚拟化环境的主机虚拟机、第一客户虚拟机和第二客户虚拟机。硬件输入/输出设备由主机操作系统、第一客户操作系统和第二客户操作系统控制。第一硬件接口设备支持第一客户操作系统和硬件输入/输出设备之间的通信。第二硬件接口设备支持第二客户操作系统和硬件输入/输出设备之间的通信。第二硬件接口设备不同于第一硬件接口设备。第一客户操作系统包括用于执行虚拟化环境的操作的第一客户虚拟化驱动器。硬件输入/输出设备通过第一客户虚拟化驱动器和第一硬件接口设备来控制。第二客户操作系统包括用于执行虚拟化环境的操作的第二客户虚拟化驱动器。硬件输入/输出设备通过第二客户虚拟化驱动器和第二硬件接口设备来控制。主机操作系统包括用于对虚拟化环境执行操作的主机虚拟化驱动器、以及配置为直接控制硬件输入/输出设备的设备驱动器。硬件输入/输出设备通过主机虚拟化驱动器和设备驱动器来控制,而不使用第一硬件接口设备或第二硬件接口设备。
在根据示例实施例的虚拟化系统和操作虚拟化系统的方法中,使用硬件来实现硬件输入/输出设备的虚拟化。例如,虚拟化系统可以包括使用由虚拟化输入/输出设备提供的接口来控制客户操作系统和虚拟化输入/输出设备的虚拟化驱动器。非虚拟化硬件输入/输出设备和虚拟化硬件输入/输出设备可以提供相同的接口,因此客户操作系统中的虚拟化驱动器可以控制虚拟化硬件输入/输出设备和非虚拟化硬件输入/输出设备两者。
因此,客户操作系统可以与提供与虚拟化硬件输入/输出设备相同接口的硬件输入/输出设备通信,并且可以与硬件输入/输出设备通信,而无需通过用于实现虚拟化的复杂软件层。因此,可以保持硬件输入/输出设备的性能并且可以防止性能下降,可以保证或确保软件的兼容性和可移植性。
附图说明
说明性的、非限制性的示例实施例将从以下结合附图的详细描述被更清楚地理解。
图1是示出根据示例实施例的虚拟化系统的框图。
图2是示出根据示例实施例的操作虚拟化系统的方法的流程图。
图3是用于描述由根据示例实施例的虚拟化系统实现的虚拟化环境的图。
图4、图5和图6是示出由根据示例实施例的虚拟化系统实现的虚拟化环境的层次结构的示例的图。
图7和图8是示出图1的虚拟化系统的示例的框图。
图9A和图9B是用于描述图7和图8的虚拟化系统的操作的图。
图10和图11是示出根据示例实施例的虚拟化系统的框图。
图12是示出根据示例实施例的虚拟化系统的框图。
图13是示出包括根据示例实施例的虚拟化系统的自主驾驶设备的框图。
图14是示出根据示例实施例的虚拟化系统安装在车辆上的示例的图。
具体实施方式
将参照附图更全面地描述各种示例实施例,在附图中示出了实施例。然而,本公开可以以许多不同的形式来体现,并且不应被解释为限于在此阐述的实施例。贯穿本申请,相同的附图标记指代相同的元件。
图1是示出根据示例实施例的虚拟化系统的框图。
参照图1,虚拟化系统10包括处理器100、至少一个硬件输入/输出(I/O)设备500和至少一个硬件接口设备600。处理器100包括主机操作系统(OS)200、至少一个客户操作系统300和虚拟机监视器400。
处理器100提供用于实现虚拟化环境的功能。主机操作系统200、至少一个客户操作系统300和虚拟机监视器400可以在虚拟化环境上运行或操作。
例如,主机操作系统200可以在虚拟化环境的主机虚拟机上运行。至少一个客户操作系统300可以在虚拟化环境的至少一个客户虚拟机上运行。在实施例中,至少一个客户操作系统300独立于主机操作系统200运行或操作。虚拟机监视器400可以使用处理器100的功能来实现或生成虚拟化环境,并且可以在虚拟化环境上生成(或创建)并控制主机虚拟机和至少一个客户虚拟机。
为了便于说明,图1仅示出了一个客户操作系统300。然而,示例实施例不限于此,可以根据虚拟化环境各种各样地确定在虚拟机监视器400上运行的客户操作系统的数量。例如,如将参照图10所述,虚拟化系统可以包括两个或更多个客户操作系统。
此外,为了便于说明,图1示出了主机操作系统200、至少一个客户操作系统300和虚拟机监视器400被包括在处理器100中。然而,示例实施例不限于此,主机操作系统200、至少一个客户操作系统系统300和虚拟机监视器400可以作为软件程序加载到存储器设备中,并且可以由处理器100执行。
例如,如将参照图12所述,虚拟化系统还可以包括存储器设备和存储设备。存储器设备可以存储数据和程序代码。用于实现虚拟化环境的软件程序代码,诸如主机操作系统200、至少一个客户操作系统300和虚拟机监视器400等,可以加载到存储器设备中,并且加载的软件程序代码可以由处理器100执行。存储设备可以存储主机操作系统200、至少一个客户操作系统300和虚拟机监视器400。例如,当虚拟化系统启动时,存储在存储设备中的软件程序代码可以根据启动顺序加载到存储器设备中,并且处理器100可以基于加载的软件程序代码提供虚拟化环境。照这样,存储器设备可以用作虚拟化系统的工作存储器。例如,存储器设备可以用诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的易失性存储器来实现,但示例实施例不限于此。例如,存储设备可以用诸如电可擦除可编程只读存储器(EEPROM)、闪速存储器、相变随机存取存储器(PRAM)、电阻随机存取存储器(RRAM)、磁随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)等的非易失性存储器来实现,但示例实施例不限于此。
虚拟化环境的示例配置将参照图3描述。
至少一个硬件输入/输出设备500可以由主机操作系统200和至少一个客户操作系统300控制。例如,至少一个硬件输入/输出设备500可以包括诸如存储器设备、相机、图形处理单元(GPU)、神经处理单元(NPU)、外围组件快速高速(PCIe)设备、通用闪存(UFS)设备等的各种物理硬件设备中的至少一种。尽管图1仅示出了一个硬件输入/输出设备,但示例实施例不限于此,可以根据示例实施例各种各样地确定硬件输入/输出设备的数量。例如,如将参照图11所述,虚拟化系统可以包括两个或更多个硬件输入/输出设备。
至少一个硬件接口设备600支持至少一个客户操作系统300和至少一个硬件输入/输出设备500之间的通信。例如,至少一个硬件接口设备600可以是用于与至少一个硬件输入/输出设备500通信的物理硬件设备。尽管图1仅示出了一个硬件接口设备,但示例实施例不限于此,可以根据客户操作系统的数量和/或硬件输入/输出设备的数量各种各样地确定硬件接口设备的数量。例如,如将参照图10和图11所述,虚拟化系统可以包括两个或更多个硬件接口设备。
在一些示例实施例中,如参照图1所述以及如将参照图7所述,至少一个硬件接口设备600可以独立于至少一个客户操作系统300和虚拟机监视器400实施和/或形成。在其他示例实施例中,如将参照图8所述,至少一个硬件接口设备600可以实现和/或形成为被包括在虚拟机监视器400中。
至少一个硬件接口设备600的示例配置将参照图7和图8描述。
在示例实施例中,虚拟化系统10基于虚拟I/O设备(VIRTIO)规范(或标准)进行操作。
图2是示出根据示例实施例的操作虚拟化系统的方法的流程图。
参照图1和图2,在根据示例实施例的操作虚拟化系统的方法中,虚拟化系统10通过使用处理器100执行主机操作系统200、至少一个客户操作系统300和虚拟机监视器400来提供(或生成)虚拟化环境(步骤S100)。处理器100为虚拟化环境提供功能。主机操作系统200在虚拟化环境上运行。至少一个客户操作系统300在虚拟化环境的至少一个虚拟机上运行。虚拟机监视器400使用处理器100的功能来实现虚拟化环境,并且在虚拟化环境上生成并控制至少一个虚拟机。
至少一个硬件输入/输出设备500可以由主机操作系统200和至少一个客户操作系统300控制。控制至少一个硬件输入/输出设备500的方案或方式可以根据控制至少一个硬件输入/输出设备500的主体或代理是主机操作系统200还是至少一个客户操作系统300而改变(或变化)。
例如,当将要由至少一个客户操作系统300控制至少一个硬件输入/输出设备500时(步骤S200:是),使用至少一个硬件接口设备600来控制至少一个硬件输入/输出设备500(步骤S300)。至少一个硬件接口设备600支持至少一个客户操作系统300和至少一个硬件输入/输出设备500之间的通信。图1通过至少一个客户操作系统300和至少一个硬件接口设备600之间的箭头线以及至少一个硬件接口设备600和至少一个硬件输入/输出设备500之间的箭头线来说明步骤S300的操作。
例如,当将要由主机操作系统200控制至少一个硬件输入/输出设备500时(步骤S200:否),在无需使用至少一个硬件接口设备600的情况下控制至少一个硬件输入/输出设备500(步骤S400)。图1通过主机操作系统200和至少一个硬件输入/输出设备500之间的箭头线来说明步骤S400的操作。
硬件输入/输出设备的虚拟化可以仅使用软件来实现。然而,当以这种方式仅使用软件时,随着复杂软件层的实现,硬件输入/输出设备的性能可能下降或劣化。此外,当以这种方式使用软件时,随着专用硬件输入/输出设备的使用,软件的兼容性和可移植性可能下降或劣化。
在根据示例实施例的虚拟化系统和操作虚拟化系统的方法中,对于硬件输入/输出设备的虚拟化替代地使用硬件来实现。例如,虚拟化系统10可以包括支持至少一个客户操作系统300和至少一个硬件输入/输出设备500之间的通信的至少一个硬件接口设备600。至少一个客户操作系统300可以使用至少一个硬件接口设备600来控制至少一个硬件输入/输出设备500。
此外,如稍后将描述的,虚拟化系统可以包括使用由虚拟化输入/输出设备提供的接口来控制客户操作系统300和虚拟化输入/输出设备的虚拟化驱动器。非虚拟化硬件输入/输出设备和虚拟化硬件输入/输出设备可以提供相同的接口,因此客户操作系统300中的虚拟化驱动器可以控制虚拟化硬件输入/输出设备和非虚拟化硬件输入/输出设备两者。
因此,客户操作系统300可以与提供与虚拟化硬件输入/输出设备相同接口的硬件输入/输出设备500通信,并且可以无需通过用于实现虚拟化的复杂软件层地与硬件输入/输出设备500进行通信。因此,可以维持硬件输入/输出设备500的性能并且可以防止性能下降,并且可以保证或确保软件的兼容性和可移植性。
图3是用于描述由根据示例实施例的虚拟化系统实现的虚拟化环境的图。
参照图3,虚拟化系统700可以包括系统硬件710和在由系统硬件710提供的虚拟化环境上运行的软件。软件可以包括虚拟机监视器520以及多个虚拟机730和740。为了便于说明,图3仅示出了两个虚拟机730和740,它们是主机虚拟机730和客户虚拟机740。然而,示例实施例不限于此,安装在虚拟机监视器720上的虚拟机的数量可以根据示例实施例而各种各样地确定。例如,虚拟化系统700可以包括两个或更多个客户虚拟机。
系统硬件710可以包括提供虚拟化环境的处理器PRC、存储器设备MEM、一个或更多个知识产权IP、存储设备STG、硬件接口设备HW_IF等。
例如,处理器PRC可以是单个处理器或者可以包括多个处理器核。当处理器PRC包括多个处理器核时,处理器核之一可以对应于图1中的提供虚拟化环境的处理器100。
例如,存储器设备MEM可以包括至少一个易失性存储器。知识产权IP可以包括具有各种功能的硬件设备,诸如相机、GPU、NPU等。存储设备STG可以包括至少一个非易失性存储器。存储器设备MEM、知识产权IP和存储设备STG可以对应于图1中的硬件输入/输出设备500。此外,硬件接口设备HW_IF可以对应于图1中的硬件接口设备600。
虚拟机730和740可以具有各种配置以执行相应的功能。
例如,主机虚拟机730可以包括主机操作系统732和主机应用HAPP。主机应用HAPP可以在主机操作系统732上运行或执行。
主机操作系统732可以包括主机虚拟化驱动器vHDRV和设备驱动器DDRV。主机虚拟化驱动器vHDRV可以是用于虚拟化环境的操作的驱动器。设备驱动器DDRV可以是用于直接控制包括在系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP等(例如,图1中的硬件输入/输出设备500)的驱动器。如参照图1和图2所述,主机操作系统732可以直接控制包括在系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP等(例如,图1中的硬件输入/输出设备500),而无需使用硬件接口设备HW_IF。
此外,客户虚拟机740可以包括虚拟硬件、客户操作系统742和客户应用GAPP。客户应用GAPP可以在客户操作系统742上运行或执行。
虚拟硬件可以对应于在客户虚拟机740中被仿真为软件的物理组件。换言之,虚拟化系统700的对应物理组件可以被虚拟化为虚拟硬件。虚拟硬件可以包括仿真系统硬件710中的全部物理组件当中分配给客户虚拟机740的物理组件的虚拟组件。例如,虚拟硬件可以包括仿真处理器PRC的虚拟处理器vPRC、仿真存储器设备MEM的虚拟存储器设备vMEM、仿真知识产权IP的虚拟知识产权vIP等。
客户操作系统742可以包括客户虚拟化驱动器vGDRV。客户虚拟化驱动器vGDRV可以是用于虚拟化环境的操作的驱动器。例如,客户虚拟化驱动器vGDRV可以通过包括在虚拟硬件中的虚拟处理器vPRC、虚拟存储器设备vMEM和虚拟知识产权vIP来控制包括在系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP(例如,图1中的硬件输入/输出设备500)。如参照图1和图2所述,客户操作系统742可以使用硬件接口设备HW_IF来控制包括在系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP等(例如,图1中的硬件输入/输出设备500)。
客户操作系统742还可以包括虚拟存储器管理单元、状态监视器等。虚拟存储器管理单元可以将客户操作系统742的虚拟地址空间分配给在客户操作系统742上运行的客户应用GAPP,并且可以管理虚拟地址空间中的虚拟地址与包括在虚拟硬件中的虚拟存储器设备vMEM的中间物理地址之间的映射操作。状态监视器可以通过监视客户虚拟机740和/或客户操作系统742来提供状态信息。例如,状态监视器可以在客户虚拟机740正常操作的同时周期性地提供状态信息。在这种情况下,当在预定时间间隔内没有提供状态信息时,虚拟机监视器720可以确定有必要重新启动客户操作系统742。
虚拟机监视器720可以生成、调度和管理多个虚拟机730和740。虚拟机监视器720可以提供多个虚拟机730和740与系统硬件710之间的接口,并管理与多个虚拟机730和740相关联的指令执行和数据传输。虚拟机监视器720可以被称为虚拟机监视器或虚拟机管理器。
虚拟机监视器720可以包括中断处理机ITR_HD、设备仿真器D_EML等。
中断处理机ITR_HD可以基于来自虚拟机730和740的信息和/或来自系统硬件710的信息来控制虚拟化系统700的操作。
设备仿真器D_EML可以将物理组件分配给客户虚拟机740,并且可以通过仿真分配的物理组件来建立并管理虚拟硬件。
虚拟机监视器720还可以包括虚拟存储器管理单元、设备驱动器等。虚拟存储器管理单元可以将包括在系统硬件710中的存储器设备MEM的一个或多个客户存储器区域分配给客户虚拟机740或客户操作系统742,并且可以管理包括在虚拟硬件中的虚拟存储器设备vMEM的中间物理地址与存储器设备MEM的物理地址之间的映射操作。设备驱动器可以直接控制包括在系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP(例如,图1中的硬件输入/输出设备500)。
尽管图3仅示出了一个客户虚拟机,但示例实施例不限于此。例如,虚拟化系统700可以包括两个或更多个客户虚拟机,并且另外的客户虚拟机也可以以与客户虚拟机740相同或相似的结构来实现。
图4、图5和图6是示出由根据示例实施例的虚拟化系统实现的虚拟化环境的层次结构的示例的图。
参照图4、图5和图6,示出了虚拟化环境包括多个客户操作系统GOS1、GOS2和GOS3的示例。
例如,虚拟化环境可以包括多个客户操作系统GOS1、GOS2和GOS3以及在多个客户操作系统GOS1、GOS2和GOS3上运行的应用。例如,应用APP11和APP12可以在第一客户操作系统GOS1上运行,应用APP21和APP22可以在第二客户操作系统GOS2上运行,应用APP31和APP32可以在第三客户操作系统GOS3上运行。客户操作系统的数量和在每个客户操作系统上运行的应用的数量可以根据示例实施例各种各样地确定。
虚拟机监视器HPVS(例如,400)可以主要分类或划分为第一类型和第二类型。图4和图5示出了第一类型的虚拟机监视器HPVS,图6示出了第二类型的虚拟机监视器HPVS。图4和图5中的第一类型的虚拟机监视器HPVS可以被称为托管虚拟机监视器,图6中的第二类型的虚拟机监视器HPVS可以被称为独立虚拟机监视器。例如,代表性的开源虚拟机监视器可以包括第一类型的基于内核的虚拟机(KVM)和第二类型的基于Xen的虚拟机监视器。
例如,第一类型的虚拟机监视器HPVS可以在如图4所示的主机操作系统HOS上运行,或者可以被包括在如图5所示的主机操作系统HOS中。在这种情况下,主机操作系统HOS可以具有相对于系统硬件SYSHW(例如,710)的完全控制。主机操作系统HOS可以在系统硬件SYSHW上运行,并且应用可以在主机操作系统HOS上运行。
例如,第二类型的虚拟机监视器HPVS可以在系统硬件SYSHW上运行,并且可以具有相对于系统硬件SYSHW的完全控制,如图6所示。在这种情况下,主机操作系统不存在于虚拟化层次结构中,并且客户操作系统GOS1、GOS2和GOS3之一可以执行主机操作系统的功能。应用可以在第二类型的虚拟机监视器HPVS上运行。
在下文中,将基于图4和图5中的第一类型的虚拟机监视器HPVS来描述示例实施例,但示例实施例不限于此。示例实施例可以应用于包括图6中的第二类型或其他类型的虚拟机监视器HPVS的任何虚拟化系统。
在下文中,将在基于VIRTIO规范实现和/或操作虚拟化系统的情况的基础上描述示例实施例。然而,示例实施例不限于此,虚拟化系统可以基于与虚拟化系统相关联或相关的各种规范来实现和/或操作。
图7和图8是示出图1的虚拟化系统的示例的框图。将省略与图1重复的描述。
参照图7,虚拟化系统10a可以包括主机操作系统200a、客户操作系统300a、虚拟机监视器400a、硬件输入/输出设备500a和硬件接口设备600a。
客户操作系统300a可以包括客户虚拟化驱动器310。客户虚拟化驱动器310可以是用于虚拟化环境的操作的驱动器,并且可以对应于图3中的客户虚拟化驱动器vGDRV。
在示例实施例中,当虚拟化系统10a基于VIRTIO规范操作时,客户虚拟化驱动器310以VIRTIO驱动器的形式实现。VIRTIO驱动器可以根据VIRTIO规范中定义的VIRTIO-MMIO(存储器映射I/O)的字段的用途,通过读取和/或写入VIRTIO-MMIO的每个字段来控制硬件输入/输出设备500a。
硬件输入/输出设备500a可以由主机操作系统200a和客户操作系统300a控制。硬件输入/输出设备500a可以对应于包括在图3的系统硬件710中的处理器PRC、存储器设备MEM、知识产权IP等。
在示例实施例中,当虚拟化系统10a基于VIRTIO规范操作时,硬件输入/输出设备500a以VIRTIO感知输入/输出设备的形式实现。VIRTIO感知输入/输出设备500a的固件可以通过硬件接口设备600a与客户操作系统300a中的VIRTIO驱动器310通信,并且与VIRTIO驱动器310的控制对应的硬件操作可以通过与VIRTIO规范中定义的设备操作相符地操作来执行。
硬件接口设备600a可以支持客户操作系统300a和硬件输入/输出设备500a之间的通信。硬件接口设备600a可以对应于包括在图3的系统硬件710中的硬件接口设备HW_IF。
在一些示例实施例中,硬件接口设备600a可以独立于客户操作系统300a和虚拟机监视器400a而形成和/或实现,如图7所示。换句话说,硬件接口设备600a可以被实现为不包括在客户操作系统300a和虚拟机监视器400a中的单独硬件。例如,硬件接口设备600a可以在与包括客户操作系统300a和虚拟机监视器400a的硬件分开的硬件中实现。
在示例实施例中,当虚拟化系统10a基于VIRTIO规范操作时,硬件接口设备600a以VRTIO-MMIO兼容硬件接口的形式实现。VIRTIO-MMIO兼容硬件接口可以是与VIRTIO规范中定义的VIRTIO-MMIO的布局兼容的硬件设备,并且可以实现为硬件邮箱或存储器设备。
尽管图7示出了硬件输入/输出设备500a和硬件接口设备600a是分开的硬件,但示例实施例不限于此。例如,硬件输入/输出设备500a和硬件接口设备600a可以实现为单个硬件。例如,硬件接口设备600a可以被包括在硬件输入/输出设备500a中。
在示例实施例中,客户操作系统300a通过客户虚拟化驱动器310和硬件接口设备600a来控制硬件输入/输出设备500a。在该实施例中,客户虚拟化驱动器310对硬件输入/输出设备500a的控制可以直接提供给硬件接口设备600a,而不被虚拟机监视器400a捕获或处理。例如,可以在客户虚拟化驱动器310和硬件接口设备600a之间传输直接访问中断DA_ITR。例如,客户虚拟化驱动器310可以将直接访问中断DA_ITR提供给虚拟机监视器400a,并且虚拟机监视器400a可以将直接访问中断DA_ITR转发给硬件接口设备600a,而不需要虚拟机监视器400a对直接访问中断DA_ITR执行操作。图7通过客户虚拟化驱动器310、硬件接口设备600a和硬件输入/输出设备500a之间的带箭头的实线示出了上述控制操作。
在示例实施例中,虚拟化系统10a还包括由主机操作系统200a和客户操作系统300a共享的共享存储器320。客户操作系统300a可以通过客户虚拟化驱动器310和共享存储器320与硬件输入/输出设备500a交换数据。图7通过客户虚拟化驱动器310、共享存储器320和硬件输入/输出设备500a之间的带箭头的虚线示出了上述数据交换操作。
为了便于说明,图7示出了共享存储器320被包括在客户操作系统300a中。然而,示例实施例不限于此。例如,共享存储器320可以与主机操作系统200a和客户操作系统300a分开设置或定位,并且可以由主机操作系统200a和客户操作系统300a共享。
主机操作系统200a可以包括主机虚拟化驱动器210和设备驱动器220。主机虚拟化驱动器210可以是用于虚拟化环境的操作的驱动器,并且可以对应于图3中的主机虚拟化驱动器vHDRV。设备驱动器220可以是用于直接控制硬件输入/输出设备500a的驱动器,并且可以对应于图3中的设备驱动器DDRV。例如,设备驱动器220可以直接控制硬件输入/输出设备500a而不使用硬件接口设备600a。例如,设备驱动器220可以向虚拟机监视器400a提供命令或控制信号,并且虚拟机监视器400a可以将命令或控制信号直接转发给硬件输入/输出设备500a。
在示例实施例中,当虚拟化系统10a基于VIRTIO规范操作时,主机虚拟化驱动器210以与客户虚拟化驱动器310类似的VIRTIO驱动器的形式实现,并且设备驱动器220可以以输入/输出驱动器的形式实现。
在示例实施例中,主机操作系统200a通过主机虚拟化驱动器210和设备驱动器220来控制硬件输入/输出设备500a,而不使用硬件接口设备600a。图7通过主机虚拟化驱动器210、设备驱动器220和硬件输入/输出设备500a之间的带箭头的实线示出了上述控制操作。
在一些示例实施例中,主机操作系统200a可以在LinuxTM虚拟机上运行。在这种情况下,主机虚拟化驱动器210可以在用户空间上运行,设备驱动器220可以作为物理设备驱动器在LinuxTM内核上运行,并且虚拟化系统还可以包括在用户空间上运行的虚拟化硬件抽象层。
在一些示例实施例中,客户操作系统300a可以在与LinuxTM虚拟机可互操作地(或结合地)操作的Android TroutTM上运行。在这种情况下,客户虚拟化驱动器310可以在LinuxTM内核上运行,并且虚拟化系统还可以包括在用户空间上运行的HAL和虚拟化HAL。例如,可以使用VIRTIO感知输入/输出设备而无需软件修改来实现上述配置。
参照图8,虚拟化系统10b可以包括主机操作系统200b、客户操作系统300b、虚拟机监视器400b、硬件输入/输出设备500b和硬件接口设备600b。
主机操作系统200b、客户操作系统300b和硬件输入/输出设备500b可以分别与图7中的主机操作系统200a、客户操作系统300a和硬件输入/输出设备500a基本相同。将省略与图7重复的描述。
硬件接口设备600b支持客户操作系统300b和硬件输入/输出设备500b之间的通信。硬件接口设备600b可以对应于包括在图3的系统硬件710中的硬件接口设备HW_IF。
在一些示例实施例中,硬件接口设备600b可以形成和/或实现为被包括在虚拟机监视器400b中,如图8所示。例如,硬件接口设备600b可以实现为包括在虚拟机监视器400b中的硬件仿真器。
在示例实施例中,当虚拟化系统10a基于VIRTIO规范操作时,硬件接口设备600b(例如,硬件仿真器)以VIRTIO-MMIO仿真器的形式实现。从VIRTIO驱动器的VIRTIO-MMIO的读取和/或到VIRTIO驱动器的VIRTIO-MMIO的写入可以由虚拟机监视器400b捕获并存储,虚拟机监视器400b可以在必要时将VIRTIO-MMIO的内容更新到VIRTIO感知输入/输出设备,VIRTIO感知输入/输出设备可以识别存储的MMIO的内容并且可以执行对应的硬件操作。
在示例实施例中,客户操作系统300b通过客户虚拟化驱动器310和硬件接口设备600b(例如,硬件仿真器)来控制硬件输入/输出设备500b。在这种情况下,客户虚拟化驱动器310对硬件输入/输出设备500b的控制可以由虚拟机监视器400b捕获或处理,并且可以提供给硬件接口设备600b。例如,可以在客户虚拟化驱动器310和硬件接口设备600b之间传输捕获的中断T_ITR。图8通过客户虚拟化驱动器310、硬件接口设备600b和硬件输入/输出设备500b之间的带箭头的实线示出了上述控制操作。
被捕获的中断T_ITR可以是被称为陷阱的同步中断。在实施例中,当客户操作系统300b正在操作时发生异常,并且客户虚拟化驱动器310在发生异常时将捕获的中断T_ITR发送到硬件接口设备600b。响应于接收到捕获的中断T_ITR,硬件接口设备600b保存猜测操作系统300b需要操作的参数,诸如堆栈指针、寄存器、程序变量等,并暂停客户操作系统300b的执行或停止客户操作系统300b的执行。例如,捕获的中断T_ITR可以是包括关于发生的异常(诸如相对于硬件输入/输出设备500b的软件或硬件异常)的类型的信息的信号。硬件接口设备600b可以响应于捕获的中断T_ITR执行动作,恢复客户操作系统300b的寄存器、堆栈指针、变量等,并继续或重启客户操作系统300b。例如,动作可导致硬件输入/输出设备500b的重置、输出错误消息等。
在一些示例实施例中,虚拟化系统10b还可以包括由主机操作系统200b和客户操作系统300b共享的共享存储器320。客户操作系统300b可以通过客户虚拟化驱动器310和共享存储器320与硬件输入/输出设备500b交换数据。图8通过客户虚拟化驱动器310、共享存储器320和硬件输入/输出设备500b之间的带箭头的虚线示出了上述数据交换操作。
图9A和图9B是用于描述图7和图8的虚拟化系统的操作的图。
参照图9A和图9B,示出了VIRTIO规范中定义的MMIO设备的布局。“Offset”表示相对于基础的偏移量,“RW”表示读R和写W的方向,“Register”和“Description”表示每个函数的名称和操作。
没有外围组件互连(PCI)支持(嵌入式设备模型中的常见情况)的虚拟化环境可以使用简单的存储器映射设备(“VIRTIO-MMIO”)来代替PCI设备。VIRTIO-MMIO行为基于PCI设备规范。因此,包括设备初始化、队列配置和缓冲区传输的大多数操作几乎与PCI设备相同。
在一些示例实施例中,图7中的硬件接口设备600a(例如,VIRTIO-MMIO兼容硬件接口)可以支持图9A和图9B所示的所有读/写,图8中的硬件接口设备(例如,VIRTIO-MMIO仿真器)可以支持图9A和图9B所示的一些读/写。
图10和图11是示出根据示例实施例的虚拟化系统的框图。将省略与图1重复的描述。
参照图10,虚拟化系统12包括处理器102、至少一个硬件输入/输出设备500以及多个硬件接口设备601和602。处理器102包括主机操作系统200、多个客户操作系统301和302以及虚拟机监视器400。
虚拟化系统12可以与图1的虚拟化系统10基本相同,除了虚拟化系统12包括多个客户操作系统301和302以及多个硬件接口设备601和602。
多个客户操作系统301和302可以包括第一客户操作系统301和第二客户操作系统302。第一客户操作系统301可以在虚拟化环境的第一虚拟机上运行。第二客户操作系统302可以在虚拟化环境的第二虚拟机上运行,并且可以独立于第一客户操作系统301运行。例如,多个客户操作系统301和302中的每个可以如参照图3所述来实现。
多个硬件接口设备601和602可以包括第一个硬件接口设备601和第二硬件接口设备602。第一硬件接口设备601可以支持第一客户操作系统301和至少一个硬件输入/输出设备500之间的通信。第二硬件接口设备602可以支持第二客户操作系统302和至少一个硬件输入/输出设备500之间的通信。例如,多个硬件接口设备601和602中的每个可以如参照图7和图8所述来实现。
在一些示例实施例中,当虚拟化系统12包括多个客户操作系统301和302时,可以为每个客户操作系统形成和/或实现一个硬件接口设备,并且每个客户操作系统可以使用对应的硬件接口设备来控制至少一个硬件输入/输出设备500。例如,当第一客户操作系统301想要控制至少一个硬件输入/输出设备500时,至少一个硬件输入/输出设备500可以使用第一个硬件接口设备601来控制。例如,当第二客户操作系统302想要控制至少一个硬件输入/输出设备500,至少一个硬件输入/输出设备500可以使用第二硬件接口设备602来控制。
为了便于说明,图10仅示出了两个客户操作系统301和302以及两个硬件接口设备601和602。然而,示例实施例不限于此,客户操作系统和硬件接口设备的数量可以根据示例实施例各种各样地确定。
参照图11,虚拟化系统14包括处理器104、多个硬件输入/输出设备504和505以及多个硬件接口设备604和605。处理器104可以包括主机操作系统200、至少一个客户操作系统300和虚拟机监视器400。
虚拟化系统14可以与图1的虚拟化系统10基本相同,除了虚拟化系统14包括多个硬件输入/输出设备504和505以及多个硬件接口设备604和605。
多个硬件输入/输出设备504和505可以包括第一硬件输入/输出设备504和第二硬件输入/输出设备505。例如,多个硬件输入/输出设备504和505中的每个可以如参照图3所述来实现。
多个硬件接口设备604和605可以包括第一硬件接口设备604和第二硬件接口设备605。第一硬件接口设备604可以支持至少一个客户操作系统300和第一硬件输入/输出设备504之间的通信。第二硬件接口设备605可以支持至少一个客户操作系统300和第二硬件输入/输出设备505之间的通信。例如,多个硬件接口设备604和605中的每个可以如参照图7和图8所述来实现。
在一些示例实施例中,当虚拟化系统14包括多个硬件输入/输出设备504和505时,可以为每个硬件输入/输出设备形成和/或实现一个硬件接口设备,并且至少一个客户操作系统300可以使用对应的硬件接口设备来控制对应的硬件输入/输出设备。例如,当至少一个客户操作系统300想要控制第一硬件输入/输出设备504时,第一硬件输入/输出设备504可以使用第一硬件接口设备604来控制。例如,当至少一个客户操作系统300想要控制第二硬件输入/输出设备505时,第二硬件输入/输出设备505可以使用第二硬件接口设备605来控制。
为了便于说明,图11仅示出了两个硬件输入/输出设备504和505以及两个硬件接口设备604和605。然而,示例实施例不限于此,硬件输入/输出设备和硬件接口设备的数量可以根据示例实施例各种各样地确定。
尽管没有详细说明,但是可以通过组合图10和图11的示例来实现根据示例实施例的虚拟化系统。
图12是示出根据示例实施例的虚拟化系统的框图。
参照图12,虚拟化系统1000可以包括片上系统(SOC)1100、存储器设备1130、显示设备1152、触摸面板1154、存储设备1170、电力管理集成电路(PMIC)1200等。片上系统1100可以包括处理器1110、硬件接口设备(HWIF)1115、存储器控制器1120、性能控制器(PFMC)1140、用户界面(UI)控制器1150、存储接口1160、一个或更多个知识产权(IP)1180、具有直接存储器存取(DMA)功能的直接存储器存取设备(DMA IP)1185、电力管理单元(PMU)1144、时钟管理单元(CMU)1146等。将理解,虚拟化系统1000的组件不限于图12所示的组件。例如,虚拟化系统1000还可以包括用于处理图像数据的硬件编解码器、安全块等。
处理器1110可以执行用于虚拟化系统1000的软件(例如,应用程序、操作系统(OS)和设备驱动器)。处理器1110可以执行可加载到存储器设备1130中的操作系统。处理器可以由处理器100、102或104之一实现。处理器1110可以执行各种应用程序以在操作系统上被驱动。处理器1110可以被提供为同构多核处理器或异构多核处理器。多核处理器是包括至少两个可独立驱动的处理器(在下文中称为“核”或“处理器核”)的计算组件。每个核可以独立地读取和执行程序指令。
存储器控制器1120可以提供存储器设备1130和片上系统1100之间的接口。存储器控制器1120可以根据来自处理器1110、知识产权1180和/或直接存储器存取设备1185的请求来访问存储器设备1130。例如,存储器设备1130可以实现为DRAM,于是存储器控制器1120可以被称为DRAM控制器。
操作系统或基本应用程序可以在引导操作期间加载到存储器设备1130中。例如,存储在存储设备1170中的虚拟机监视器HPVS、主机操作系统HOS和客户操作系统GOS可以在虚拟化系统1000的引导期间基于引导顺序加载到存储器设备1130中。此后,对应的应用APP可以由主机操作系统HOS和客户操作系统GOS加载到存储器设备1130中。
硬件接口设备1115可以支持客户操作系统GOS和硬件输入/输出设备之间的通信。例如,存储器设备1130、存储设备1170、IP 1180和直接存储器访问设备1185可以对应于硬件输入/输出设备。
性能控制器1140可以根据从操作系统的内核提供的控制请求来调节片上系统1100的操作参数。例如,性能控制器1140可以调节动态电压和频率缩放(DVFS)的水平以增强片上系统1100的性能。
用户界面控制器1150可以控制来自用户界面设备的用户输入和输出。例如,用户界面控制器1150可以根据处理器1110的控制来显示用于向显示设备1152输入数据的键盘屏幕。或者,用户界面控制器1150可以控制显示设备1152显示用户请求的数据。用户界面控制器1150可以将从诸如触摸面板1154的用户输入机构提供的数据解码成用户输入数据。
存储接口1160可以根据来自处理器1110的请求访问存储设备1170。例如,存储接口1160可以提供片上系统1100和存储设备1170之间的接口连接。例如,处理器1110处理的数据可以通过存储接口1160存储在存储设备1170中。或者,存储在存储设备1170中的数据可以通过存储接口1160提供给处理器1110。
存储设备1170可以被提供作为虚拟化系统1000的存储介质。存储设备1170可以存储应用程序、操作系统映像和各种类型的数据。存储设备170可以被提供为存储器卡(例如,MMC、eMMC、SD、MicroSD等)。存储设备170可以包括具有高容量存储能力的NAND型闪速存储器。或者,存储设备1170可以包括下一代非易失性存储器,诸如PRAM、MRAM、ReRAM和FRAM或NOR型闪速存储器。
直接存储器访问设备1185可以被提供为单独的知识产权组件来,以提高多媒体或多媒体数据的处理速度。例如,直接存储器访问设备1185可以被提供为知识产权组件,以增强文本、音频、静止图像、动画、视频、二维(2D)数据或三维(3D)数据的处理性能。
系统互连器1190可以是用于在片上系统(SoC)中提供片上网络的系统总线。系统互连器1190可以包括例如数据总线、地址总线和控制总线。数据总线可以是数据传输路径。还可以提供到存储器设备1130或存储设备1170的存储器访问路径。地址总线可以提供知识产权之间的地址交换路径。控制总线可以提供在知识产权之间传输控制信号的路径。然而,系统互连器1190的配置不限于以上描述,系统互连器190还可以包括用于高效管理的仲裁机构。
在一些示例实施例中,直接存储器存取设备1185可以具有或执行对存储器设备1130的直接存储器存取的功能。直接存储器存取表示将数据直接从一个存储器设备传送到另一存储器设备或直接在存储器设备和输入/输出设备之间传送而不通过处理器1110的方案,其可以由虚拟化系统1000的内部总线支持。直接存储器访问的模式可以包括:突发模式,其中直接存储器访问设备1185从处理器1110窃取对内部总线的控制以一次传输所有数据;循环窃取模式,其中直接存储器访问设备1185访问存储器设备1130而处理器1110不访问存储器设备1130。直接存储器访问可以在没有处理器1110的干预的情况下执行。因此,可以改善或增强虚拟化系统1000的性能,因为处理器1110可以在执行直接存储器访问的同时操作。
虚拟化系统1000还可以包括存储器管理电路,其管理处理器1110对存储器设备1130的核心访问以及直接存储器访问设备1185对存储器设备1130的直接访问。核心访问和直接访问可以包括从存储器设备1130读取数据的读取操作和将数据存储到存储器设备1130的写入操作。核心访问可以基于处理器1110发出的核心访问请求来执行,直接访问可以基于直接存储器访问设备1185发出的直接访问请求来执行。例如,运行客户操作系统GOS的操作可以被监视,控制直接存储器访问设备1185的目标客户操作系统可以基于运行客户操作系统GOS的监视结果而重新引导,存储器管理电路可以被控制以当目标客户操作系统重新引导时,基于虚拟机监视器HPVS的控制来阻止直接存储器访问设备1185对存储器设备1130的直接访问。因此,通过当重新引导控制直接存储器访问设备1185的目标客户操作系统时,控制存储器管理电路提供直接存储器访问设备1185的临时隔离,可以快速阻止直接访问并且可以高效地防止存储器崩溃。
图13是示出包括根据示例实施例的虚拟化系统的自主驾驶设备的框图。
参照图13,自主驾驶设备3000可以包括驱动器(例如,包括电路)3110、传感器3120、存储3130、控制器(例如,包括处理电路)3140和通信接口3150。
驱动器3110可以例如是用于驱动自主驾驶设备3000的配置,并且可以包括各种电路。在自主驾驶设备3000实现为车辆的情况下,驱动器3110可以包括各种电路和/或组件,诸如例如引擎/马达3111、转向单元3112、制动单元3113等。
引擎/马达3111可以包括内燃机、电动马达、蒸汽机车和斯特林发动机的任何组合。例如,在自主驾驶设备3000是油电混合动力汽车的情况下,引擎/马达3111可以是汽油引擎和电动马达。例如,引擎/马达3111可以配置为为自主驾驶设备3000在预定行驶路线上行驶供应能量。
转向单元3112可以是包括用于控制自主驾驶设备3000的方向的机构的任何组合。例如,当在自主驾驶设备3000正在驾驶时识别到障碍物时,转向单元3112可以改变自主驾驶设备3000的方向。在自主驾驶设备3000是车辆的情况下,转向单元3112可以配置为顺时针或逆时针转动方向盘,并相应地改变自主驾驶设备3000的行进方向。
制动单元3113可以是包括用于使自主驾驶设备3000减速的机构的任何组合。例如,制动单元3113可以使用摩擦或感应来降低车轮/轮胎的速度。当在自主驾驶设备3000正在驾驶时识别到障碍物时,制动单元3113可以配置为使自主驾驶设备3000减速或变慢。
驱动器3110可以是在地面上驾驶或行进的自主驾驶设备3000的驱动器,但示例实施例不限于此。驱动器3110可以包括飞行推进单元、螺旋桨、机翼等,并且可以包括根据各种示例实施例的各种船舶推进设备。
传感器3120可以包括配置为感测与自主驾驶设备3000的周围环境有关的信息的多个传感器。例如,传感器3120可以包括图像传感器3121、深度相机3122、光检测和测距(LIDAR)单元3123、无线电检测和测距(RADAR)单元3124、红外传感器3125、全球定位系统(GPS)3126、磁性传感器3127和/或加速度计传感器3128中的至少一个。
图像传感器3121可以配置为与捕获位于自主驾驶设备3000外部的外部对象相关的图像或其他数据。与外部设备相关的捕获图像或其他数据可以用作用于改变自主驾驶设备3000的速度和方向中的至少一项的数据。图像传感器3121可以包括各种类型的传感器,诸如电荷耦合器件(CCD)和互补金属氧化物半导体(CMOS)。此外,深度相机3122可以获取用于确定自主驾驶设备3000和外部对象之间的距离的深度。
LIDAR单元3123、RADAR单元3124和红外传感器3125可以每个包括配置为输出特定信号并感测自主驾驶设备3000所在环境中的外部对象的传感器。例如,LIDAR单元3123可以包括配置为辐射激光的激光光源和/或激光扫描仪、以及配置为检测激光反射的检测器。RADAR单元3124可以是配置为使用无线信号感测自主驾驶设备3000所在环境中的对象的传感器。此外,RADAR单元3124可以配置为感测对象的速度和/或方向。红外传感器3125可以是配置为使用红外区域的波长的光来感测自主驾驶设备3000所在环境中的外部对象的传感器。
GPS 3126、磁性传感器3127和加速度计传感器3128可以每个包括配置为获取与自主驾驶设备3000的速度、方向、位置等相关的信息的传感器。例如,可以获取与自主驾驶设备3000的当前状态相关的信息,并且可以识别和/或估计与外部对象碰撞的可能性等。GPS3126可以配置为通过与卫星通信的信号将自主驾驶设备3000的位置识别为纬度、经度和海拔数据,磁性传感器3127和加速度计传感器3128可以配置为根据自主驾驶设备3000的动量、加速度和取向来识别自主驾驶设备3000的当前状态。
存储3130可以配置为存储控制器3140执行各种处理所必要的数据。例如,存储3130可以实现为包括在控制器3140中的诸如只读存储器(ROM)、随机存取存储器(RAM)等的内部存储器,并且可以实现为与控制器3140分开的存储器。这种情况下,存储3130可以以嵌入自主驾驶设备3000中的存储器的形式实现,或者可以以可根据数据存储的使用率从自主驾驶设备3000可拆卸的存储器的形式实现。例如,用于驱动自主驾驶设备3000的数据存储在嵌入自主驾驶设备3000中的存储器中,用于自主驾驶设备3000的扩展功能的数据可以存储在可与自主驾驶设备3000分离的存储器中。嵌入自主驾驶设备3000中的存储器可以以非易失性存储器、易失性存储器、闪速存储器、硬盘驱动器(HDD)、固态驱动器(SDD)等的形式实现,可与自主驾驶设备3000分离的存储器可以以存储器卡(例如,微型SD卡、通用串行总线(USB)存储器)、可连接到USB端口的外部存储器(例如,USB存储器)等的形式实现。
通信接口3150可以包括各种通信电路,并且可以配置为促进自主驾驶设备3000和外部设备之间的通信。例如,通信接口3150可以向外部设备发送并从外部设备接收自主驾驶设备3000的驾驶信息。例如,通信接口3150可以配置为通过各种通信方法(诸如红外(IR)通信、无线保真(WI-FI)、蓝牙、紫蜂、信标、近场通信(NFC)、WAN、以太网、IEEE 1394、HDMI、USB、MHL、AES/EBU、光纤、同轴等)执行通信。在一些示例实施例中,通信接口3150可以配置为通过服务器通信地传送驾驶信息。例如,通信接口3150可以包括用于执行无线通信的收发器。
控制器3140可以包括RAM 3141、ROM 3142、中央处理单元(CPU)3143、硬件接口设备(HWIF)3144、多个知识产权(IP)3145和3146以及总线3147。RAM 3141、ROM 3142、CPU 143和硬件接口设备3144可以通过总线3147彼此连接,或者至少两个组件可以通过直接信号线直接连接。控制器3140可以实现为片上系统(SOC)。
RAM 3141可以是用于从存储3130读取与自主驾驶设备3000的驾驶相关的各种指令等的存储器。ROM 3142可以存储用于系统引导的指令集。响应于向自主驾驶设备3000输入开启命令并供电,CPU 3143可以根据存储在ROM 3142中的命令将存储在存储3130中的操作系统复制到RAM 3141中,并通过执行操作系统来引导系统。如果引导完成,则CPU 3143通过将存储在存储3130中的各种类型的应用程序复制到RAM 3141中并执行复制到RAM 3141中的应用程序来执行各种操作。控制器3140可以使用存储在存储3130中的模块来执行各种操作。
根据示例实施例,CPU 3143提供包括虚拟机监视器、主机操作系统和客户操作系统的虚拟化环境。例如,CPU 3143可以由处理器100、102或104之一实现。硬件接口设备3144可以支持客户操作系统和硬件输入/输出设备(例如,IP 3145和3146)之间的通信,客户操作系统可以使用硬件接口设备3144来控制硬件输入/输出设备。因此,客户操作系统可以与硬件输入/输出设备通信,而无需通过用于实现虚拟化的复杂软件层,可以维持硬件输入/输出设备的性能并且可以防止性能下降,可以保证或确保软件的兼容性和可移植性。
图14是示出根据示例实施例的虚拟化系统安装在车辆上的示例的图。
参照图14,虚拟化系统5010可以是包括在车辆5000中(例如,安装在车辆5000上)的高级驾驶员辅助系统(ADAS)、自主驾驶系统等。
虚拟化系统5010可以包括配置为接收包括立体图像、反射波(例如,反射电磁波)或来自安装在车辆5000中的相机的反射光的视频序列并确定与车辆5000相关联的各种事件的发生的各种电路和组件。各种事件可以包括对象检测、对象跟踪和场景分割。虚拟化系统5010可以基于一个或更多个事件的被确定的发生来生成包括通知消息的输出信号,该通知消息可以通过车辆5000的一个或更多个用户界面呈现给车辆5000的乘坐者(例如,用户)。虚拟化系统5010可以基于一个或更多个事件的被确定的发生来生成使车辆5000的车辆控制系统控制车辆5000的一个或更多个驱动元件以控制车辆5000的驾驶(例如,驾驶轨迹)的输出信号。
例如,虚拟化系统5010可以通过分析至少一个视频序列5300来检测包括固定图案的道路5200和根据时间移动的另一车辆5100。例如,通过经由分析另一车辆5100在至少一个视频序列5300中的坐标来分析另一车辆5100的位置,虚拟化系统5010可以确定基于检测到另一车辆5100的事件的发生。虚拟化系统5010还可以基于确定来生成输出信号,该输出信号当由车辆5000的控制系统处理时,使特定通知消息通过车辆5000的用户界面呈现给车辆5000的乘坐者和/或使车辆5000的驾驶被控制以使车辆5000沿着特定驾驶路径(例如,驾驶轨迹)被驾驶通过周围环境(例如,自主驾驶,驾驶车辆5000作为自主车辆等)。
在一些示例实施例中,车辆5000可以包括提供通信功能、数据处理功能和/或运输功能的任何交通工具,诸如例如但不限于汽车、公共汽车、卡车、火车、自行车、摩托车等。
即使车辆用不同类型的硬件实现,本发明构思的实施例也可以用在各种车辆上。虚拟化的这种使用可以降低为长期使用的车辆提供长期软件升级和维护的成本。即使发生性能下降,当应用或采用根据示例实施例的虚拟化系统时,也可以保证软件的兼容性和可移植性而不会出现性能下降,并且可以在客户操作系统上运行主机操作系统不支持的设备。
如本领域技术人员将理解的,本发明构思可以体现为系统、方法、计算机程序产品和/或体现在其上体现有计算机可读程序代码的一个或更多个计算机可读介质中的计算机程序产品。可以将计算机可读程序代码提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是可包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用的任何有形介质。例如,计算机可读介质可以是非暂时性计算机可读介质。
本发明构思的实施例可以应用于应用或采用了虚拟化环境的各种电子设备和系统。例如,本发明构思的实施例可以应用于诸如个人计算机(PC)、服务器计算机、数据中心、工作站、移动电话、智能电话、平板计算机、膝上型计算机、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式游戏机、音乐播放器、摄像机、视频播放器、导航设备、可穿戴设备、物联网(IoT)设备、万物互联(IoE)设备、电子书阅读器、虚拟现实(VR)设备、增强现实(AR)设备、机器人设备、无人机、汽车等。
前述内容是对示例实施例的说明,将不被解释为对其的限制。尽管已经描述了一些示例实施例,但是本领域技术人员将容易理解,在不实质上脱离示例实施例的情况下,可以在示例实施例中进行许多修改。因此,所有这样的修改旨在包括在如权利要求中限定的示例实施例的范围内。

Claims (20)

1.一种虚拟化系统,包括:
处理器,配置为为虚拟化环境提供功能;
主机操作系统(OS),配置为在虚拟化环境中运行;
至少一个客户操作系统,配置为在虚拟化环境的至少一个虚拟机上运行;
虚拟机监视器,配置为使用处理器的功能来实现虚拟化环境,并且配置为生成并控制虚拟化环境的所述至少一个虚拟机;
至少一个硬件输入/输出(I/O)设备,由主机操作系统和所述至少一个客户操作系统控制;以及
至少一个硬件接口设备,配置为支持所述至少一个客户操作系统和所述至少一个硬件输入/输出设备之间的通信。
2.根据权利要求1所述的虚拟化系统,其中所述至少一个硬件接口设备独立于所述至少一个客户操作系统和虚拟机监视器操作。
3.根据权利要求2所述的虚拟化系统,其中所述至少一个客户操作系统包括:
客户虚拟化驱动器,用于执行虚拟化环境的操作,以及
其中所述至少一个硬件输入/输出设备通过客户虚拟化驱动器和所述至少一个硬件接口设备来控制。
4.根据权利要求3所述的虚拟化系统,其中客户虚拟化驱动器直接向所述至少一个硬件接口设备提供中断而不被虚拟机监视器捕获以控制所述至少一个硬件输入/输出设备。
5.根据权利要求3所述的虚拟化系统,还包括:
共享存储器,由主机操作系统和所述至少一个客户操作系统共享,以及
其中所述至少一个客户操作系统配置为通过客户虚拟化驱动器和共享存储器与所述至少一个硬件输入/输出设备交换数据。
6.根据权利要求1所述的虚拟化系统,其中所述至少一个硬件接口设备包括:
至少一个硬件仿真器,包括在虚拟机监视器中。
7.根据权利要求6所述的虚拟化系统,其中所述至少一个客户操作系统包括:
客户虚拟化驱动器,用于执行虚拟化环境的操作,以及
其中所述至少一个硬件输入/输出设备通过客户虚拟化驱动器和所述至少一个硬件仿真器来控制。
8.根据权利要求7所述的虚拟化系统,其中客户虚拟化驱动器对所述至少一个硬件输入/输出设备的控制被虚拟机监视器捕获并被提供给所述至少一个硬件接口设备。
9.根据权利要求1所述的虚拟化系统,其中:
所述至少一个客户操作系统包括配置为在虚拟化环境的第一虚拟机上运行的第一客户操作系统,
所述至少一个硬件输入/输出设备包括第一硬件输入/输出设备,以及
所述至少一个硬件接口设备包括第一硬件接口设备,第一硬件接口设备配置为支持第一客户操作系统和第一硬件输入/输出设备之间的通信。
10.根据权利要求9所述的虚拟化系统,其中:
所述至少一个操作系统还包括第二客户操作系统,第二客户操作系统配置为在虚拟化环境的第二虚拟机上运行并配置为独立于第一客户操作系统操作,以及
所述至少一个硬件接口设备还包括第二硬件接口设备,第二硬件接口设备配置为支持第二客户操作系统和第一硬件输入/输出设备之间的通信。
11.根据权利要求9所述的虚拟化系统,其中:
所述至少一个硬件输入/输出设备还包括不同于第一硬件输入/输出设备的第二硬件输入/输出设备,以及
所述至少一个硬件接口设备还包括第二硬件接口设备,第二硬件接口设备配置为支持第一客户操作系统和第二硬件输入/输出设备之间的通信。
12.根据权利要求1所述的虚拟化系统,其中主机操作系统包括:
主机虚拟化驱动器,用于执行虚拟化环境的操作;以及
设备驱动器,配置为直接控制所述至少一个硬件输入/输出设备,以及
其中所述至少一个硬件输入/输出设备通过主机虚拟化驱动器和设备驱动器来控制,而不使用所述至少一个硬件接口设备。
13.根据权利要求1所述的虚拟化系统,还包括:
存储器设备,其中主机操作系统、所述至少一个客户操作系统和虚拟机监视器加载到该存储器设备中。
14.根据权利要求13所述的虚拟化系统,还包括:
存储设备,配置为存储主机操作系统、所述至少一个客户操作系统和虚拟机监视器。
15.根据权利要求14所述的虚拟化系统,其中,响应于虚拟化系统被引导,存储在存储设备中的主机操作系统、所述至少一个客户操作系统和虚拟机监视器加载到存储器设备中。
16.根据权利要求1所述的虚拟化系统,其中所述至少一个硬件输入/输出设备包括存储器设备、相机、图形处理单元(GPU)、神经处理单元(NPU)、外围组件互连高速(PCIe)设备和通用闪存(UFS)设备中的至少一个。
17.根据权利要求1所述的虚拟化系统,其中虚拟化系统配置为基于虚拟I/O设备(VIRTIO)规范操作。
18.一种操作虚拟化系统的方法,该方法包括:
通过使用处理器执行主机操作系统(OS)、至少一个客户操作系统和虚拟机监视器来生成虚拟化环境,处理器配置为为虚拟化环境提供功能,主机操作系统配置为在虚拟化环境上运行,所述至少一个客户操作系统配置为在虚拟化环境的至少一个虚拟机上运行,虚拟机监视器配置为使用处理器的功能来实现虚拟化环境,并且配置为生成并控制虚拟化环境的所述至少一个虚拟机;以及
当至少一个硬件输入/输出(I/O)设备将由所述至少一个客户操作系统控制时,使用至少一个硬件接口设备来控制所述至少一个硬件输入/输出设备,所述至少一个硬件输入/输出设备由主机操作系统和所述至少一个客户操作系统控制,所述至少一个硬件接口设备配置为支持所述至少一个客户操作系统和所述至少一个硬件输入/输出设备之间的通信。
19.根据权利要求18所述的方法,还包括:
当所述至少一个硬件输入/输出设备将由主机操作系统控制时,控制所述至少一个硬件输入/输出设备而不使用所述至少一个硬件接口设备。
20.一种虚拟化系统,包括:
处理器,配置为为虚拟化环境提供功能;
主机操作系统(OS),配置为在虚拟化环境的主机虚拟机上运行;
第一客户操作系统和第二客户操作系统,配置为分别在虚拟化环境的第一客户虚拟机和第二客户虚拟机上彼此独立地运行,并且配置为独立于主机操作系统运行,第一客户虚拟机和第二客户虚拟机彼此不同;
虚拟机监视器,配置为使用处理器的功能来实现虚拟化环境,并且配置为生成并控制虚拟化环境的主机虚拟机、第一客户虚拟机和第二客户虚拟机;
硬件输入/输出(I/O)设备,由主机操作系统、第一客户操作系统和第二客户操作系统控制;
第一硬件接口设备,配置为支持第一客户操作系统和硬件输入/输出设备之间的通信;以及
第二硬件接口设备,配置为支持第二客户操作系统和硬件输入/输出设备之间的通信,第二硬件接口设备不同于第一硬件接口设备,
其中第一客户操作系统包括:
第一客户虚拟化驱动器,用于执行虚拟化环境的操作,
其中硬件输入/输出设备通过第一客户虚拟化驱动器和第一硬件接口设备来控制,
其中第二客户操作系统包括:
第二客户虚拟化驱动器,用于执行虚拟化环境的操作,
其中硬件输入/输出设备通过第二客户虚拟化驱动器和第二硬件接口设备来控制,
其中主机操作系统包括:
主机虚拟化驱动器,用于执行虚拟化环境的操作;以及
设备驱动器,配置为直接控制硬件输入/输出设备,以及
其中硬件输入/输出设备通过主机虚拟化驱动器和设备驱动器来控制,而不使用第一硬件接口设备或第二硬件接口设备。
CN202211529120.1A 2021-12-09 2022-11-30 虚拟化系统和操作其的方法 Pending CN116414516A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2021-0175660 2021-12-09
KR20210175660 2021-12-09
KR1020220020540A KR20230087336A (ko) 2021-12-09 2022-02-17 가상화 시스템 및 그 구동 방법
KR10-2022-0020540 2022-02-17

Publications (1)

Publication Number Publication Date
CN116414516A true CN116414516A (zh) 2023-07-11

Family

ID=84332134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211529120.1A Pending CN116414516A (zh) 2021-12-09 2022-11-30 虚拟化系统和操作其的方法

Country Status (3)

Country Link
US (1) US20230185598A1 (zh)
EP (1) EP4195043A1 (zh)
CN (1) CN116414516A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2004280976A1 (en) * 2003-10-08 2005-04-21 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US9836421B1 (en) * 2015-11-12 2017-12-05 Amazon Technologies, Inc. Standardized interface for network using an input/output (I/O) adapter device

Also Published As

Publication number Publication date
EP4195043A1 (en) 2023-06-14
US20230185598A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
JP6559777B2 (ja) 自律走行車における処理ノードのデータフローを管理する方法、装置及びシステム
US8966477B2 (en) Combined virtual graphics device
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
KR101495862B1 (ko) 제로 클라이언트를 지원하는 가상화 서버 및 가상 머신 관리 방법
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US10133504B2 (en) Dynamic partitioning of processing hardware
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
JP6777050B2 (ja) 仮想化システム、仮想化プログラム、及び、記憶媒体
JP2021532495A (ja) 仮想マシン・メモリの安全なアクセス
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
KR20230087336A (ko) 가상화 시스템 및 그 구동 방법
EP3889771A1 (en) Hypervisor removal
KR102315102B1 (ko) 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체
EP4195043A1 (en) Virtualized system and method of operating the same
US10923082B2 (en) Maintaining visibility of virtual function in bus-alive, core-off state of graphics processing unit
EP4092528A1 (en) Virtualized system and method of preventing memory crash of same
EP4231160A1 (en) Method for configuring address translation relationship, and computer system
US10838823B2 (en) Systems and method to make application consistent virtual machine backup work in private network
EP4180936A1 (en) Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
EP4321998A1 (en) Performance optimized task duplication and migration
CN117312009A (zh) 核间通信方法及设备、计算机设备及计算机可读存储介质
CN114741194A (zh) I/o请求的处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication