输入设备实现方法及其实现装置与流程

文档序号:11779700阅读:373来源:国知局
输入设备实现方法及其实现装置与流程

本发明涉及虚拟机技术领域,特别是涉及一种输入设备实现方法及其实现装置。



背景技术:

虚拟机是指通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的计算机系统。在虚拟机应用环境中,多个不同的操作系统基于模拟硬件,共享物理硬件设备,例如cpu,内存和输入输出设备等。

一般的,可以将物理存在的计算机称为“主机”(host),在主机上运行的操作系统可以称为主操作系统(hostos),其它的操作系统则可以被称为客户操作系统(guestos)。

虚拟机可以作为主操作系统内的其中一个应用程序运行,提供模拟硬件设备供客户操作系统使用。例如现有技术中由google公司提供的“goldfish”虚拟硬件平台,其可以支持在qemu虚拟机支持下虚拟安卓操作系统。

为在虚拟机中实现输入设备,现有技术中通常在虚拟机中实现一个能够支持传感器设备运行的后端程序。该后端程序可以为客户操作系统提供需要配置的输入设备相关数据,例如输入设备的配置信息、属性以及输入设备数据等。客户操作系统中由对应的输入设备驱动程序以及输入设备服务程序,在后端程序提供的虚拟输入设备的基础上实现对于输入设备的操作。

申请人在研究现有技术的过程中发现:在现有输入设备实现过程中,后端程序提供的虚拟输入设备的输入设备相关数据,会通过客户操作系统的内核中的输入设备驱动程序以及输入设备通用层进行处理。但由于输入数据已经由主操作系统进行过处理,客户操作系统中的输入设备驱动程序以及输入设备通用层对于其中的一些数据并不需要进行处理即可直接应用至服务层。因此,客户操作系统中的输入设备驱动程序以及输入设备通用层存在着对于输入设备数据的重复处理,降低了数据处理的效率。



技术实现要素:

本发明实施例主要解决相关技术中输入设备实现时,存在对输入设备数据重复处理的问题。

为解决上述技术问题,本发明实施例采用的一个技术方案是:提供一种输入设备实现方法,应用在虚拟机系统中,所述虚拟机系统包括主操作系统以及若干个客户操作系统,所述主操作系统包括用于与物理输入设备通信的物理输入设备驱动单元;所述客户操作系统包括用于与虚拟输入设备通信的客户输入设备驱动单元以及用于提供输入设备应用的输入设备服务单元。其中,所述方法包括:通过所述物理输入设备驱动单元获取物理输入设备的设备数据,所述设备数据至少包括输入事件;将所述输入事件通过专用传输通道传输至所述输入设备服务单元;所述专用传输通道不经过所述客户输入设备驱动单元。

为解决上述技术问题,本发明实施例采用的另一个技术方案是:提供一种输入设备实现装置,应用在虚拟机系统中,所述虚拟机系统包括主操作系统以及若干个客户操作系统,所述主操作系统包括用于与物理输入设备通信的物理输入设备驱动单元;所述客户操作系统包括用于与虚拟输入设备通信的客户输入设备驱动单元以及用于提供输入设备应用的输入设备服务单元。其中该装置包括:输入设备后端支持单元,用于通过所述物理输入设备驱动单元获取物理输入设备的设备数据,所述设备数据至少包括输入事件;专用传输通道,用于将所述输入事件传输至所述输入设备服务单元;所述专用传输通道不经过所述客户输入设备驱动单元。

本发明实施例提供的输入设备实现方法及其实现装置,通过特定的专用传输通道将输入事件直接传输至客户操作系统的输入设备服务单元,不需要经过客户输入设备驱动单元,从而避免客户操作系统中的客户输入设备驱动单元对输入事件的重复处理,有效的提高了在输入设备实现过程中的数据处理效率。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明实施例提供的虚拟机系统的示意图;

图2是本发明实施例提供的输入设备实现装置在虚拟机系统上实现的示意图;

图3是本发明实施例提供的专用传输通道的输入事件传输示意图;

图4是本发明实施例提供的虚拟机程序与客户操作系统之间的数据交互示意图;

图5是本发明实施例提供的输入设备实现方法的方法流程图;

图6是本发明实施例提供的专用传输通道启动方法的方法流程图;

图7是本发明实施例提供的电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

输入设备驱动(input-devicedriver)是指用于输入设备的驱动程序或者对应的功能模块。其能够作为输入设备硬件和上层操作系统之间的连接桥梁,实现操作系统中使用的高级编程语言以及输入设备使用的硬件设备电子信号之间相互翻译。

因此,在具有多个不同的操作系统的虚拟机系统中,主操作系统具有与物理输入设备对应的输入设备驱动。各个客户操作系统内也具有与虚拟输入设备对应的输入设备驱动用以实现输入设备和操作系统之间的通信连接。

图1为应用本发明实施例提供的输入设备实现方法的虚拟机系统。如图1所示,该虚拟机系统中包括:物理硬件设备100、主操作系统200、若干个客户操作系统300以及虚拟机程序400。

所述物理硬件设备100为主机操作系统200和客户操作系统300共享的硬件设备。其可以包括任何合适的,一种或者多种组成完整计算机系统的设备组件,包括处理器101、存储介质102、输入/输出设备103、传感器设备104以及通信模组105。

其中,处理器101可以是任何合适类型的,具有一定逻辑运算能力的处理器,例如中央处理器、图形处理器等。处理器101还可以包括用于多线程或并行处理的多个核心。

存储介质102可以包括内存模块,例如rom、ram、闪存模块,以及大容量存储器,例如光盘和硬盘。存储介质102中还可以存储有计算机程序,当处理器101执行这些计算机程序时,可以实现各种方法步骤或流程。

输入/输出设备103可以是任何合适类型的,提供一种或者多种用户交互方式的外围设备,例如接收用户动作操作指令的鼠标、键盘或者触摸输入屏,用于采集图像信息的体感摄像机、用于采集声音信息的麦克风或者向用户展示图像信息的显示屏(lcd显示屏、led显示屏等)或者用于输出音频的扬声器。

所述输入/输出设备103可以选择使用有线或者无线的外围设备连接方式,例如usb线缆或者蓝牙连接。建立连接后,所述输入/输出设备具有的设备属性以及配置信息等设备相关信息将传输到操作系统中,供操作系统配置或者正确的使用该输入/输出设备。所述输入设备103还可以接收用户的操作指令等,作为输入事件提供至所述操作系统中,实现用户与操作系统之间的交互。

传感器设备104可以是任何合适的,能够感知被检测信息并将被检测信息转换为电信号或者其它合适形式的输出信息的检测装置。所述传感器设备可以用于各种不同类型的被检测信息,具有相应的一种或者多种感知功能,例如对温度,光照强度、气压、加速度、旋转角度、磁场状态、湿度、声音等信息的检测。该传感器设备104可以包括一个或者多个分立的传感器,分别用于检测不同的信息,以满足使用的要求。

通信模组105可以包括某些通过有线或者无线通信网络建立连接的网络接口设备。例如,网线接口、总线接口、usb接口、wifi模组或者蓝牙通信模组等。

在实际应用过程中,所述物理硬件设备100还可以添加或者减省一个或者多个设备,用以满足不同的实际应用情况需求,例如增加数据库或者服务器设备、减省一个或者多个传感器。

所述主操作系统200和客户操作系统300均可以是任何合适类型的操作系统,用以接收用户指令并据此输出对应的处理结果向用户展示。主操作系统200使用所述物理硬件设备100的硬件设备。客户操作系统300则使用由虚拟机程序400提供的模拟硬件设备。

在客户操作系统300运行时,虚拟机程序400在物理硬件设备的基础上,通过一些后端程序,模拟硬件设备供其使用。所述虚拟机程序400作为主操作系统200中的其中一个应用程序运行。亦即,所述虚拟机可以基于所述物理硬件设备或者其它虚拟机提供的模拟硬件设备的基础,提供模拟硬件设备供客户操作系统使用。

不同的操作系统之间存在有内存隔离,主操作系统200也不能够访问客户操作系统300的内存空间。这样的,在存在2个以上的客户操作系统时,当其中一个客户操作系统因为异常重新启动时,主操作系统和其它客户操作系统还可以正常运行,相互隔离。当然,由于虚拟机程序是作为主操作系统中的应用程序运行的。因此,在主操作系统因为异常重新启动时,所有的客户操作系统都需要随之重新启动。

其中,如图1所示,所述主操作系统200包括物理输入设备驱动单元210,用以建立主操作系统200与物理输入设备100之间的连接,提供如接口端口等服务,在主操作系统200中实现对于输入设备的控制。

相对应地,所述客户操作系统300也包括客户输入设备驱动单元310。所述客户输入设备驱动单元310则与所述虚拟机程序400通信连接,从而在虚拟机程序400模拟的虚拟输入设备之间建立连接,实现客户操作系统对输入设备的控制。

所述客户操作系统300在所述客户输入设备驱动单元310的上层还设置有输入设备服务单元320。所述输入设备服务单元320通过经由所述客户输入设备驱动单元310处理后的设备数据,为客户操作系统提供一种或者多种的输入设备相关服务。

在虚拟机系统的启动过程中,作为客户操作系统的基础,主操作系统首先启动,启动后的主操作系统占用物理硬件设备100中的输入/输出设备103,通过所述物理输入设备驱动单元210,可以获取输入设备的设备属性、配置信息以及输入事件等相关的消息。

在主操作系统启动完毕后,在暂时没有任务需要主操作系统执行时(可以根据输入事件进行判断),主操作系统200可以进入休眠模式并释放占用的输入设备。

主操作系统200进入休眠模式后,其中一个客户操作系统300启动。在虚拟机系统中,每个客户操作系统都具有自己预定或者配置的输入设备。客户操作系统启动时也通过客户操作系统300内核中的客户输入设备驱动单元310,读取对应的输入设备的设备属性以及配置信息等,完成客户操作系统的输入设备的配置。

而所述输入设备的输入事件可以通过本发明实施例提供的方法进行数据处理,提供给客户操作系统以获得更好的数据处理效率。在具有多个客户操作系统的情况下,所述客户操作系统还可以自动进入休眠模式,并启动其它客户操作系统。

相对应地,在虚拟机系统运行过程中,操作系统既可以位于前台运行也可以处于休眠状态,存在于后台。操作系统可以根据预定的一些指令,在前台与后台两种不同的状态之间切换,例如,超过预定时间不操作时,切换进入后台,或者接收到操作系统切换指令后,从后台切换进入前台运行。

图2为本发明实施例提供的输入设备实现装置的结构示意图。所述输入设备实现装置可以在图1所示的虚拟机系统中应用。如图2所示,所述输入设备实现装置包括:输入设备后端支持单元410以及专用传输通道500。

其中,所述输入设备后端支持单元410用于通过所述物理输入设备驱动单元获取物理输入设备的设备数据,所述设备数据至少包括输入事件。所述专用传输通道500用于将其中的输入事件传输至所述输入设备服务单元。

在本实施例中,如图2所示,所述输入设备后端支持单元410可以为所述虚拟机程序400中的其中一个功能模块。该输入设备后端支持单元410可以获取来自主操作系统的输入设备的设备数据(如设备属性信息、配置信息或者输入事件),并据此为客户操作系统提供虚拟的输入设备,在客户操作系统中实现输入设备服务。

所述专用传输通道500是一个连接虚拟机程序400和客户操作系统300的通信通道,其可以是任何合适形式或者类型的,运行在虚拟机系统中的,具有数据传输功能的程序、硬件单元或者功能模块。该专用传输通道500提供了除客户输入设备驱动单元310外,客户操作系统300与虚拟机程序400连接的另一条通信通道。

通过该专用传输通道500,可以直接将输入事件传输至输入设备服务单元320,而不需要通过客户输入设备驱动单元310。这样的,专用传输通道500可以避免客户输入设备驱动单元310对于输入设备的输入事件进行重复处理,可以有效的提高对输入事件的处理效率。

在实际应用过程中,所述设备数据通常可以包括两种类型,一种是由设备直接采集获得的,具有明显的时间性质的输入数据。在本实施例中,使用“输入事件”表示输入设备采集获得的输入数据。另一种是不具有时序性质,由输入设备自身性质所决定的数据,例如,设备属性或者设备的配置信息等。

如图4所示,为实现输入设备的配置或者设置,所述输入设备后端支持单元410还可以将物理输入设备的设备属性或者配置信息等与输入设备相关的,用于配置输入设备的信息发送至所述客户输入设备驱动单元310中,然后由所述客户输入设备驱动单元310实现客户操作系统300预设的虚拟输入设备。

所述输入设备后端支持单元410是虚拟机程序中,用以支持客户操作系统的输入设备驱动运行的后端程序。其可以基于物理输入设备的基础,提供虚拟设备的虚拟寄存器、地址空间以及虚拟中断的服务。

图3为本发明实施例提供的专用传输通道500进行输入事件传输的示意图。如图3所示,在本实施例中,所述专用传输通道500可以由属于虚拟机程序400中的传输通道后端支持单元420以及在所述客户操作系统中的输入事件驱动单元330组成。

其中,所述传输通道后端支持单元420用于获取所述设备数据中的输入事件;并且将所述输入事件发送至所述客户操作系统。所述输入事件驱动单元330则用于接收所述输入事件。在接收所述输入事件后,所述输入设备服务单元320可以读取其中的一个或者多个输入事件,用以提供相应的输入服务。亦即所述传输通道后端支持单元420作为数据的发送端,所述输入事件驱动单元330为相配合的接收端,专用于接收其发送的输入事件。

具体的,如图3所示,由于所述输入事件属于具有时间特性的数据。因此,在发送和接收过程中,可以按照时间顺序,依次发送和接收输入事件1、输入事件2、输入事件3等,以保证输入事件可被准确的读取。

由此,为在客户操作系统中实现输入设备,所述客户操作系统的输入设备服务单元320可以检索与预设的输入设备对应的设备文件节点,逐个从客户输入设备驱动单元310中读取所需要的虚拟输入设备的属性和配置信息,并且读取所述输入事件驱动单元330接收的对应设备节点的输入事件,或者侦测是否有新的输入事件被输入事件驱动单元330接收,然后对特定虚拟输入设备的输入事件进行相应的处理。

在本实施例中,基于所述虚拟输入设备的直接数据来源为主操作系统对应的物理输入设备的假设。在另一些实施例中,所述虚拟输入设备的直接数据来源也可以为其它客户操作系统对应的虚拟输入设备。在实际虚拟机操作过程中,可以通过设置额外的标识符或者标注,对所述虚拟输入设备的直接数据来源进行区分。

图4为本发明实施例提供的客户操作系统配置虚拟输入设备的完整过程的示意图。虚拟机程序400中的输入设备后端支持单元410根据主操作系统200内核中对应的输入设备文件,获取物理输入设备的属性、配置信息以及输入设备采集获得的输入数据(即输入事件)。

其中,属性和配置信息传输至客户操作系统300的客户输入设备驱动单元310,经过客户输入设备驱动单元310处理后,在由输入设备服务单元320接收。所述输入事件则可以通过所述专用传输通道500传输至所述输入设备服务单元320。

所述输入设备服务单元320根据接收获得数据,在客户操作系统中提供一个或者多个服务,以实现虚拟输入设备。

基于上述实施例提供的输入设备实现装置,本发明实施例还进一步提供了一种应用在虚拟机系统上的输入设备实现方法。图5为本发明实施例提供的输入设备实现方法的方法流程图。

如图5所示,该方法可以包括如下步骤:

100、通过所述物理输入设备驱动单元获取物理输入设备的设备数据,所述设备数据至少包括输入事件。

200、将所述输入事件通过专用传输通道传输至所述输入设备服务单元;所述专用传输通道不经过所述客户输入设备驱动单元并支持所述虚拟输入设备与所述输入设备服务单元之间进行通信传输。

通过专用传输通道,可以将物理输入设备的输入事件独立的传输至客户操作系统的输入设备服务单元,从而避免客户输入设备驱动单元的对输入事件的多余处理,提高了数据的处理效率。

在实际使用过程中,每个客户操作系统都具有自己预定的输入设备,其可以由预设的配置文件所决定。为在客户操作系统中实现这些输入设备,除了对于输入事件的传递外,会由所述客户输入设备驱动单元读取由虚拟机程序提供的设备属性以及配置信息(步骤300)。在客户输入设备驱动单元进行处理后,再通过所述输入设备服务单元读取与所述预设的虚拟输入设备对应的设备属性或者配置信息(步骤400)。

在一些实施例中,所述输入事件的传输可以采用由虚拟机发送,客户操作系统接收的方式完成。在发送过程中,由于输入设备的输入事件具有特定的时间特性,因此可以根据输入事件的时间次序,依次发送所述输入事件。

如上虚拟机系统中所揭露的,在虚拟机系统中,操作系统可以运行在前台或者处于后台中休眠。图6为所述客户操作系统启用所述专用传输通道的方法。如图6所示,接收系统切换请求(步骤10)后,判断客户操作系统是否仍处于前台运行(步骤20)。若所述客户操作系统由前台切换到后台休眠时,可以停止从虚拟机程序中获取来自主操作系统的输入设备的输入数据(步骤30)。若所述客户操作系统由后台休眠模式切换到前台时,客户操作系统则开始从虚拟机程序中获取来自主操作系统的输入设备的输入数据(步骤40)。

应当说明的是,上述实施例中提供的输入设备实现方法和输入设备实现装置均是基于相同的发明构思。因此,传感器实现方法中各个具体实施例的步骤均可以由对应的功能模块所执行,功能模块中具体的功能也可以在所述输入设备实现方法中具有对应的方法步骤,在此不再赘述。

图7为本发明实施例提供的电子设备的硬件结构示意图。该硬件设备可以在虚拟机系统中应用,用以执行上述输入设备实现方法。如图7所示,该设备70包括:一个或多个处理器710以及存储器720,图7中以一个处理器710为例。

其中,处理器710、存储器720可以通过总线或者其他方式连接,图7中以通过总线连接为例。

存储器720作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的输入设备实现方法对应的程序指令/模块(例如,图2所示的输入设备后端支持单元410以及专用传输通道500)。处理器710通过运行存储在存储器720中的非易失性软件程序、指令以及模块,从而执行的输入设备实现装置的各种功能应用以及数据处理,即实现上述方法实施例的输入设备实现方法。

存储器720可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据输入设备实现装置的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器720可选包括相对于处理器710远程设置的存储器,这些远程存储器可以通过网络连接至传感器实现装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器720中,当被所述一个或者多个处理器710执行时,执行上述任意方法实施例中的输入设备实现方法。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

本发明实施例提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时时,使所述计算机执行上述任意方法实施例中的输入设备实现方法,例如,执行以上描述的图5中的方法步骤100和200,实现图2中相应功能模块的功能。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1