CN107918555A - 基于物理主机的用于处理数据的方法和装置 - Google Patents
基于物理主机的用于处理数据的方法和装置 Download PDFInfo
- Publication number
- CN107918555A CN107918555A CN201711185326.6A CN201711185326A CN107918555A CN 107918555 A CN107918555 A CN 107918555A CN 201711185326 A CN201711185326 A CN 201711185326A CN 107918555 A CN107918555 A CN 107918555A
- Authority
- CN
- China
- Prior art keywords
- read
- write requests
- array
- host
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了基于物理主机的用于处理数据的方法和装置。该方法的一具体实施方式包括:获取虚拟机发出的读写请求;将读写请求发送至宿主机进行处理;响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。该实施方式提供了一种信号屏蔽机制,保证了数据的一致性,从而提高了物理主机的运行效率。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及虚拟化技术领域,尤其涉及基于物理主机的用于处理数据的方法和装置。
背景技术
随着计算机技术的发展,利用计算机技术和互联网技术提供的服务也越来越丰富。利用虚拟化技术,可以在物理主机(电子设备)上虚拟出逻辑上的计算机,即虚拟机。
目前,在对虚拟机发出的读写请求的处理中,没有针对用于终止当前进程的预设信号的屏蔽机制。
发明内容
本申请实施例提出了基于物理主机的用于处理数据的方法和装置。
第一方面,本申请实施例提供了一种基于物理主机的用于处理数据的方法,该方法包括:获取虚拟机发出的读写请求;将读写请求发送至宿主机进行处理;响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,获取虚拟机发出的读写请求,包括:将读写请求的物理地址信息存入第三数组;将读写请求在第三数组中的起始位置存入第四数组。
在本实施例中,将读写请求发送至宿主机进行处理,包括:每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与第四数组,确定待发送读写请求;将待发送读写请求发送至宿主机进行处理,并更新第五数组。
在本实施例中,通知虚拟机读写请求的处理结果,包括:每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与第一数组,确定待通知处理结果;通知虚拟机待通知处理结果。
在本实施例中,方法还包括:响应于检测到发生了预定义的异常退出事件,根据第二数组确定已获取的读写请求中未处理完成的读写请求;将未处理完成的读写请求发送至宿主机进行处理。
第二方面,本申请实施例提供了一种基于物理主机的用于处理数据的装置,该装置包括:获取单元,用于获取虚拟机发出的读写请求;第一发送单元,用于将读写请求发送至宿主机进行处理;启动单元,用于响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;结束单元,用于响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,获取单元,包括:第一存储子单元,用于将读写请求的物理地址信息存入第三数组;第二存储子单元,用于将读写请求在第三数组中的起始位置存入第四数组。
在本实施例中,第一发送单元,包括:确定子单元,用于每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与第四数组,确定待发送读写请求;发送子单元,用于将待发送读写请求发送至宿主机进行处理,并更新第五数组。
在本实施例中,方法还包括用于通知虚拟机读写请求的处理结果的通知单元,通知单元,进一步配置用于:每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与第一数组,确定待通知处理结果;通知虚拟机待通知处理结果。
在本实施例中,装置还包括:确定单元,用于响应于检测到发生了预定义的异常退出事件,根据第二数组确定已获取的读写请求中未处理完成的读写请求;第二发送单元,用于将未处理完成的读写请求发送至宿主机进行处理。
第三方面,本申请实施例提供了一种设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得上述一个或多个处理器实现如第一方面上述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面上述的方法。
本申请实施例提供的基于物理主机的用于处理数据的方法和装置,通过获取虚拟机发出的读写请求,并将读写请求发送至宿主机进行处理,而后响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽,最后响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果,从而提供了一种信号屏蔽机制,保证了数据的一致性,提高了物理主机的运行效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的物理主机的示意性架构图;
图2是根据本申请的基于物理主机的用于处理数据的方法的一个实施例的流程图;
图3是根据本申请的基于物理主机的用于处理数据的方法的应用场景的一个示意图;
图4是根据本申请的基于物理主机的用于处理数据的方法的又一个实施例的流程图;
图5是根据本申请的基于物理主机的用于处理数据的装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的基于物理主机的用于处理数据的方法或基于物理主机的用于处理数据的装置的实施例的物理主机的示意性架构图。
如图1所示,物理主机110可以包括虚拟机111和宿主机112。物理主机110可以是服务器、终端计算机等,本申请对此不做限定,物理主机可以110可以采用本领域已开发的各种虚拟化架构,例如,Xen虚拟化架构,Xen是一个开放源代码虚拟机监视器,或者采用KVM(Kernel-based Virtual Machine,基于内核的虚拟机)虚拟化架构,本申请对此不做限定。
物理主机110包括硬件系统和软件系统,物理主机110的硬件系统可以包括中央处理器(CPU,Central Processing Unit)、内存、硬盘、输入输出单元等。物理主机110的软件系统可以包括虚拟机111的程序、宿主机112的程序以及用于协调虚拟机111与宿主机112的中间层。
需要说明的是,本申请实施例所提供的基于物理主机的用于处理数据的方法可以由物理主机110的中间层执行,相应地,基于物理主机的用于处理数据的装置可以设置于物理主机110的中间层内。中间层可以获取虚拟机发出的读写请求,并将读写请求发送至宿主机进行处理,而后响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽,最后响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
应该理解,图1中的虚拟机的数目仅仅是示意性的。根据实现需要,可以具有任意数目的虚拟机。
继续参考图2,示出了根据本申请的基于物理主机的用于处理数据的方法的一个实施例的流程200。该基于物理主机的用于处理数据的方法,包括以下步骤:
步骤201,获取虚拟机发出的读写请求。
在本实施例中,基于物理主机的用于处理数据的方法运行于其上的电子设备(例如图1所示的物理主机)的中间层可以首先获取虚拟机发出的读写请求。读写请求可以是I/O(输入/输出)请求。获取虚拟机发出的读写请求的方式可以基于虚拟机程序与宿主机程序进行通讯的协议确定,协议包括virtio、vhost等。
virtio是对半虚拟化hypervisor中的一组通用模拟设备的抽象。允许hypervisor导出一组通用的模拟设备,并通过一个通用的应用编程接口让它们变得可用。hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。vhost对virtio进行了优化,在内核中新增了一个模块,允许设备仿真代码直接调用到内核子系统,而不是从用户空间执行系统调用。
作为示例,在使用virtio协议时,可以通过virtqueue(virtio队列)来实现其I/O机制。中间层可以包括前端程序和后端程序,虚拟机中的前端程序可接收读写请求,并将读写请求插入virtqueue,以此,上述电子设备的中间层通过virtqueue获取到了读写请求。virtqueue可以包括多个队列,每个队列可以通过环形缓冲区(Ring Buffer)实现,RingBuffer可以是拥有指向下一个可用元素的序号的数组。
步骤202,将读写请求发送至宿主机进行处理。
在本实施例中,上述电子设备的中间层可以将步骤201中获取的读写请求发送至宿主机进行处理。可以通过轮询或通知等机制确定待发送至宿主机进行处理的读写请求,而后基于虚拟机程序与宿主机程序进行通讯的协议将其发送至宿主机进行处理。
作为示例,在使用virtio协议时,后端程序可以通过virtqueue收到前端程序发送的读写请求,然后发送到对应的硬件完成处理。具体的,可以通过hypervisor唤醒qemu,将请求交给qemu进程处理。qemu是一套以革奴通用公共许可证(GNU General PublicLicense,GPL)许可证分发源码的模拟处理器,通常一个qemu进程对应一个虚拟机,一个qemu进程包括一个或多个qemu线程,可以为一个或多个虚拟磁盘提供服务,一个qemu线程负责处理访问一个虚拟磁盘的读/写指令。
步骤203,响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽。
在本实施例中,上述电子设备的中间层可以响应于宿主机处理完成步骤202中发送的读写请求,启动针对用于终止当前进程的预设信号的屏蔽。宿主机处理完成读写请求可以是指qemu进程处理完成读/写指令,但是中间层还未更新相关记录,以及通知虚拟机读写请求的处理结果。
在本实施例中,信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件),信号是硬件中断的软件模拟(软中断)。针对预设信号的屏蔽,可以是针对预设信号的忽略、阻塞等,目的是使预设信号无法生效。在Linux系统中,预设信号可以包括SIGTERM,SIGINT,SIGINT为程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。SIGTERM为程序结束(terminate)信号,通常用来要求程序自己正常退出。
作为示例,在Linux系统中,可以通过sigprocmask函数实现对信号的屏蔽,sigprocmask函数是signal.h中的函数,提供屏蔽和解除屏蔽信号的功能,signal.h是C标准函数库中的信号处理部分,定义了程序执行时如何处理不同的信号。信号用作进程间通信,报告异常行为(如除零)、用户的一些按键组合(如同时按下Ctrl键与C键,产生信号SIGINT)。
步骤204,响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,上述电子设备的中间层可以响应于以下步骤执行完成,结束步骤203中启动的针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,读写请求信息可以是读写请求的序号或其他可标识读写请求的信息,作为示例,在使用virtio协议时,可以将与读写请求相关的物理地址等信息存入队列时产生的序号作为读写请求信息。可以根据实际需要确定第一数组的具体形式,例如,可以是Ring Buffer的形式。已获取的读写请求可以是指后端已获取的读写请求,第二数组中可以包括已获取的读写请求的信息,以及用于表征其完成情况的字符,例如,完成可以用“0”标识,未完成可以用“1”标识。第一数组与第二数组可以保存在hypervisor中。
在本实施例中,通知虚拟机读写请求的处理结果可以通过向虚拟机发送中断来实现,用于向虚拟机发送中断的参数可以在虚拟机初始化时设置。可以通过轮询或通知机制确定待通知处理结果,而后再向虚拟机进行通知,通过轮询机制确定待通知处理结果,可以是每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与第一数组,确定待通知处理结果。
在本实施例的一些可选实现方式中,方法还包括:响应于检测到发生了预定义的异常退出事件,根据第二数组确定已获取的读写请求中未处理完成的读写请求;将未处理完成的读写请求发送至宿主机进行处理。在本实现方式中,预定义的异常退出事件可以包括虚拟机后端程序的异常退出。当后端重新连上虚拟机时,可以由hypervisor发送第二数组给宿主机进行处理。
继续参见图3,图3是根据本实施例的基于物理主机的用于处理数据的方法的应用场景的一个示意图。在图3的应用场景中,中间层的后端程序在执行步骤301,更新记录已处理读写请求信息的第一数组;步骤302,更新记录已获取的读写请求的完成信息的第二数组;步骤303,通知虚拟机读写请求的处理结果时,针对预设信号进行了屏蔽。
本申请的上述实施例提供的方法首先获取虚拟机发出的读写请求,并将读写请求发送至宿主机进行处理,而后响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽,最后响应于以下步骤执行完成,结束针对预设信号的屏蔽:步骤更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。与不进行信号屏蔽的技术方案相比,本申请的上述实施例提供的方法避免了在后端程序异常退出的情况下,由于数据不一致可能导致的虚拟机运行异常,从而提高了物理主机的运行效率。
进一步参考图4,其示出了基于物理主机的用于处理数据的方法的又一个实施例的流程400。该基于物理主机的用于处理数据的方法的流程400,包括以下步骤:
步骤401,将读写请求的物理地址信息存入第三数组。
在本实施例中,基于物理主机的用于处理数据的方法运行于其上的电子设备(例如图1所示的物理主机)的中间层可以首先将读写请求的物理地址信息存入第三数组。物理地址信息可以包括:物理起始地址,长度,偏移量等。作为示例,在使用virtio协议时,第三数组可以是virtqueue中的一个队列,第三数组可以是Ring Buffer的形式的数组。一个读写请求可能需要占用多个元素,元素之间可以靠下一记录(Next域)相连,构成一个请求链。
步骤402,将读写请求在第三数组中的起始位置存入第四数组。
在本实施例中,上述电子设备的中间层可以将步骤401中存入时读写请求在第三数组中的起始位置存入第四数组。读写请求在第三数组中的起始位置可以作为该请求的读写请求信息,读写请求可能占用多个元素时,第四数组中存入的是请求链对应于第三数组中的起始位置,第四数组也可以是Ring Buffer的形式的数组。
步骤403,每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与第四数组,确定待发送读写请求。
在本实施例中,上述电子设备的中间层可以每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与步骤402中的第四数组,确定待发送读写请求。后端程序可能一次发送一个或多个待处理读写请求至宿主机。后端程序可以维护已发送至宿主机的待处理读写请求信息的第五数组,通过比较第四数组与第五数组可以确定第四数组中哪些读写请求是虚拟机新提交的还未发送至宿主机处理。
步骤404,将待发送读写请求发送至宿主机进行处理,并更新第五数组。
在本实施例中,上述电子设备的中间层可以将步骤403中确定的待发送读写请求发送至宿主机进行处理,并更新第五数组。更新第五数组可以是将发送的待发送读写请求的信息添加至第五数组。
步骤405,响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽。
在本实施例中,上述电子设备的中间层可以响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽。
步骤406,响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,上述电子设备的中间层可以响应于以下步骤执行完成,结束步骤405中启动的针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,步骤405、步骤406的操作与步骤203、步骤204的操作基本相同,在此不再赘述。
从图4中可以看出,与图2对应的实施例相比,本实施例中的基于物理主机的用于处理数据的方法的流程400中进一步公开了如何通过数组获取虚拟机发出的读写请求,以及如何通过数组将所述读写请求发送至宿主机进行处理,由此,本实施例描述的方案中进一步提高了虚拟机与宿主机间信息传递的效率。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种基于物理主机的用于处理数据的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的基于物理主机的用于处理数据的装置500包括:获取单元501、第一发送单元502、启动单元503和结束单元504。其中,获取单元501,用于获取虚拟机发出的读写请求;第一发送单元502,用于将读写请求发送至宿主机进行处理;启动单元503,用于响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;结束单元504,用于响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
在本实施例中,基于物理主机的用于处理数据的装置500的获取单元501、第一发送单元502、启动单元503和结束单元504的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203和步骤204。
在本实施例中,获取单元501,包括:第一存储子单元(图中未示出),用于将读写请求的物理地址信息存入第三数组;第二存储子单元(图中未示出),用于将读写请求在第三数组中的起始位置存入第四数组。
在本实施例中,第一发送单元502,包括:确定子单元(图中未示出),用于每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与第四数组,确定待发送读写请求;发送子单元(图中未示出),用于将待发送读写请求发送至宿主机进行处理,并更新第五数组。
在本实施例中,方法还包括用于通知虚拟机读写请求的处理结果的通知单元(图中未示出),通知单元(图中未示出),进一步配置用于:每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与第一数组,确定待通知处理结果;通知虚拟机待通知处理结果。
在本实施例中,装置还包括:确定单元(图中未示出),用于响应于检测到发生了预定义的异常退出事件,根据第二数组确定已获取的读写请求中未处理完成的读写请求;第二发送单元(图中未示出),用于将未处理完成的读写请求发送至宿主机进行处理。
本申请的上述实施例提供的装置,通过获取虚拟机发出的读写请求;将读写请求发送至宿主机进行处理;响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果,从而提供了一种信号屏蔽机制,保证了数据的一致性,提高了物理主机的运行效率。
下面参考图6,其示出了适于用来实现本申请实施例的电子设备的计算机系统600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、第一发送单元、启动单元和结束单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“用于获取虚拟机发出的读写请求的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取虚拟机发出的读写请求;将读写请求发送至宿主机进行处理;响应于宿主机处理完成读写请求,启动针对用于终止当前进程的预设信号的屏蔽;响应于以下步骤执行完成,结束针对预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知虚拟机读写请求的处理结果。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种基于物理主机的用于处理数据的方法,所述物理主机包括宿主机和至少一个虚拟机,所述方法包括:
获取虚拟机发出的读写请求;
将所述读写请求发送至宿主机进行处理;
响应于所述宿主机处理完成所述读写请求,启动针对用于终止当前进程的预设信号的屏蔽;
响应于以下步骤执行完成,结束针对所述预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知所述虚拟机所述读写请求的处理结果。
2.根据权利要求1所述的方法,其中,所述获取虚拟机发出的读写请求,包括:
将所述读写请求的物理地址信息存入第三数组;
将所述读写请求在所述第三数组中的起始位置存入第四数组。
3.根据权利要求2所述的方法,其中,所述将所述读写请求发送至宿主机进行处理,包括:
每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与所述第四数组,确定待发送读写请求;
将所述待发送读写请求发送至宿主机进行处理,并更新所述第五数组。
4.根据权利要求1所述的方法,其中,所述通知所述虚拟机所述读写请求的处理结果,包括:
每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与所述第一数组,确定待通知处理结果;
通知所述虚拟机所述待通知处理结果。
5.根据权利要求1-4中任一项所述的方法,其中,所述方法还包括:
响应于检测到发生了预定义的异常退出事件,根据所述第二数组确定已获取的读写请求中未处理完成的读写请求;
将所述未处理完成的读写请求发送至宿主机进行处理。
6.一种基于物理主机的用于处理数据的装置,所述物理主机包括宿主机和至少一个虚拟机,所述装置包括:
获取单元,用于获取虚拟机发出的读写请求;
第一发送单元,用于将所述读写请求发送至宿主机进行处理;
启动单元,用于响应于所述宿主机处理完成所述读写请求,启动针对用于终止当前进程的预设信号的屏蔽;
结束单元,用于响应于以下步骤执行完成,结束针对所述预设信号的屏蔽:更新记录已处理读写请求信息的第一数组,更新记录已获取的读写请求的完成信息的第二数组,通知所述虚拟机所述读写请求的处理结果。
7.根据权利要求6所述的装置,其中,所述获取单元,包括:
第一存储子单元,用于将所述读写请求的物理地址信息存入第三数组;
第二存储子单元,用于将所述读写请求在所述第三数组中的起始位置存入第四数组。
8.根据权利要求7所述的装置,其中,所述第一发送单元,包括:
确定子单元,用于每隔预定时间间隔,根据记录已发送至宿主机的待处理读写请求信息的第五数组与所述第四数组,确定待发送读写请求;
发送子单元,用于将所述待发送读写请求发送至宿主机进行处理,并更新所述第五数组。
9.根据权利要求6所述的装置,其中,所述方法还包括用于通知所述虚拟机所述读写请求的处理结果的通知单元,所述通知单元,进一步配置用于:
每隔预定时间间隔,根据记录已通知虚拟机处理结果的读写请求信息的第六数组与所述第一数组,确定待通知处理结果;
通知所述虚拟机所述待通知处理结果。
10.根据权利要求6-9中任一项所述的装置,其中,所述装置还包括:
确定单元,用于响应于检测到发生了预定义的异常退出事件,根据所述第二数组确定已获取的读写请求中未处理完成的读写请求;
第二发送单元,用于将所述未处理完成的读写请求发送至宿主机进行处理。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711185326.6A CN107918555B (zh) | 2017-11-23 | 2017-11-23 | 基于物理主机的用于处理数据的方法和装置 |
US16/133,961 US10564889B2 (en) | 2017-11-23 | 2018-09-18 | Method and apparatus for processing data based on physical host |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711185326.6A CN107918555B (zh) | 2017-11-23 | 2017-11-23 | 基于物理主机的用于处理数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107918555A true CN107918555A (zh) | 2018-04-17 |
CN107918555B CN107918555B (zh) | 2021-07-23 |
Family
ID=61896801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711185326.6A Active CN107918555B (zh) | 2017-11-23 | 2017-11-23 | 基于物理主机的用于处理数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10564889B2 (zh) |
CN (1) | CN107918555B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845863A (zh) * | 2018-06-12 | 2018-11-20 | 北京百度网讯科技有限公司 | 用于虚拟机与宿主机的通信方法、装置和系统 |
CN114089920A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
CN116627857A (zh) * | 2023-05-25 | 2023-08-22 | 合芯科技有限公司 | 一种处理器核外缓存模型及模拟方法 |
CN117573294A (zh) * | 2024-01-16 | 2024-02-20 | 麒麟软件有限公司 | 基于virtio的虚拟机CPU stall检测方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190707B (zh) * | 2019-08-02 | 2023-04-28 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271557A1 (en) * | 2005-08-30 | 2007-11-22 | Geisinger Nile J | Computing platform having transparent access to resources of a host platform |
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
US8443363B1 (en) * | 2008-05-30 | 2013-05-14 | Symantec Corporation | Coordinated virtualization activities |
CN103473135A (zh) * | 2013-09-23 | 2013-12-25 | 中国科学技术大学苏州研究院 | 虚拟化环境下自旋锁lhp现象的处理方法 |
CN103593185A (zh) * | 2013-11-04 | 2014-02-19 | 浙江大学 | 基于单Linux内核的多Android系统共享输入显示设备的方法 |
CN103870314A (zh) * | 2014-03-06 | 2014-06-18 | 中国科学院信息工程研究所 | 一种单节点同时运行不同类型虚拟机的方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0619747B2 (ja) * | 1984-01-18 | 1994-03-16 | 株式会社日立製作所 | I/o命令実行方法、i/o割込処理方法およびそれらを用いた計算機システム |
US4975836A (en) * | 1984-12-19 | 1990-12-04 | Hitachi, Ltd. | Virtual computer system |
US7177967B2 (en) * | 2003-09-30 | 2007-02-13 | Intel Corporation | Chipset support for managing hardware interrupts in a virtual machine system |
-
2017
- 2017-11-23 CN CN201711185326.6A patent/CN107918555B/zh active Active
-
2018
- 2018-09-18 US US16/133,961 patent/US10564889B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271557A1 (en) * | 2005-08-30 | 2007-11-22 | Geisinger Nile J | Computing platform having transparent access to resources of a host platform |
US8443363B1 (en) * | 2008-05-30 | 2013-05-14 | Symantec Corporation | Coordinated virtualization activities |
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
CN103473135A (zh) * | 2013-09-23 | 2013-12-25 | 中国科学技术大学苏州研究院 | 虚拟化环境下自旋锁lhp现象的处理方法 |
CN103593185A (zh) * | 2013-11-04 | 2014-02-19 | 浙江大学 | 基于单Linux内核的多Android系统共享输入显示设备的方法 |
CN103870314A (zh) * | 2014-03-06 | 2014-06-18 | 中国科学院信息工程研究所 | 一种单节点同时运行不同类型虚拟机的方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845863A (zh) * | 2018-06-12 | 2018-11-20 | 北京百度网讯科技有限公司 | 用于虚拟机与宿主机的通信方法、装置和系统 |
CN108845863B (zh) * | 2018-06-12 | 2022-08-26 | 北京百度网讯科技有限公司 | 用于虚拟机与宿主机的通信方法、装置和系统 |
CN114089920A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
CN116627857A (zh) * | 2023-05-25 | 2023-08-22 | 合芯科技有限公司 | 一种处理器核外缓存模型及模拟方法 |
CN116627857B (zh) * | 2023-05-25 | 2023-11-24 | 合芯科技有限公司 | 一种处理器核外缓存模型及模拟方法 |
CN117573294A (zh) * | 2024-01-16 | 2024-02-20 | 麒麟软件有限公司 | 基于virtio的虚拟机CPU stall检测方法 |
CN117573294B (zh) * | 2024-01-16 | 2024-04-09 | 麒麟软件有限公司 | 基于virtio的虚拟机CPU stall检测方法 |
Also Published As
Publication number | Publication date |
---|---|
US10564889B2 (en) | 2020-02-18 |
CN107918555B (zh) | 2021-07-23 |
US20190155539A1 (en) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918555A (zh) | 基于物理主机的用于处理数据的方法和装置 | |
CN109597677A (zh) | 用于处理信息的方法和装置 | |
CN109889875A (zh) | 通信方法、装置、终端设备和计算机可读介质 | |
US11303729B2 (en) | Virtual workspace experience visualization and optimization | |
CN110018765A (zh) | 页面显示方法、装置、终端及存储介质 | |
JP6893531B2 (ja) | 要求処理方法及び装置 | |
WO2019148721A1 (zh) | 电子装置、互联网服务系统风险预警方法及存储介质 | |
US10552280B2 (en) | In-band monitor in system management mode context for improved cloud platform availability | |
CN110516447A (zh) | 一种识别终端模拟器的方法与设备 | |
US20180203726A1 (en) | Virtual machine migration method and apparatus | |
US8443292B2 (en) | Scripting application with privacy mode coordination | |
CN111338672A (zh) | 优化应用程序更新的方法、电子设备和计算机存储介质 | |
CN105577828B (zh) | 一种远程重定向方法和装置 | |
CN111367799B (zh) | 定位源代码崩溃位置的方法、装置、介质及电子设备 | |
JP7268259B1 (ja) | ブロックチェーン乱数取得方法、装置、機器および媒体 | |
CN112631661A (zh) | 程序安全管控方法、装置、设备及存储介质 | |
CN110347601B (zh) | 脚本进程的中断处理方法和装置 | |
CN108062224A (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
US20240176456A1 (en) | Interaction method and apparatus, and storage medium | |
US11055602B2 (en) | Deep learning assignment processing method and apparatus, device and storage medium | |
CN111273967A (zh) | 适用于Android系统的远程钩子设置方法、装置及电子设备 | |
US20230131198A1 (en) | Featureless machine enhancement discovery and verification | |
CN106802847B (zh) | 用于模拟慢速存储盘的方法和装置 | |
US20180205617A1 (en) | System and method for graphically building a virtual network of computer components | |
CN111443983B (zh) | 应用程序的虚拟化方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |