CN111459623A - 应用程序恢复运行的方法、装置及计算机 - Google Patents

应用程序恢复运行的方法、装置及计算机 Download PDF

Info

Publication number
CN111459623A
CN111459623A CN201910049860.7A CN201910049860A CN111459623A CN 111459623 A CN111459623 A CN 111459623A CN 201910049860 A CN201910049860 A CN 201910049860A CN 111459623 A CN111459623 A CN 111459623A
Authority
CN
China
Prior art keywords
context
virtual machine
application
application program
operating system
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
Application number
CN201910049860.7A
Other languages
English (en)
Other versions
CN111459623B (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910049860.7A priority Critical patent/CN111459623B/zh
Priority to PCT/CN2019/128560 priority patent/WO2020147544A1/zh
Priority to EP19910376.3A priority patent/EP3846028A4/en
Publication of CN111459623A publication Critical patent/CN111459623A/zh
Priority to US17/369,546 priority patent/US20210334125A1/en
Application granted granted Critical
Publication of CN111459623B publication Critical patent/CN111459623B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • 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/445Program loading or initiating
    • 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/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/45575Starting, stopping, suspending or resuming 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种应用程序恢复运行的方法、装置及计算机,涉及虚拟化技术。该方法可以在应用程序被中止运行之后,通过该虚拟机监视器存储该应用程序的上下文,从而可以在检测到该应用程序的恢复请求时,直接通过该虚拟机监视器恢复该应用程序的上下文,即恢复该应用程序的运行。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而加快了应用程序恢复运行的速度。

Description

应用程序恢复运行的方法、装置及计算机
技术领域
本申请涉及计算机技术领域,特别涉及一种应用程序恢复运行的方法、装置及计算机。
背景技术
虚拟化技术是一种将计算机(或称物理主机)的处理器和存储器等硬件资源抽象为多份虚拟资源供多个虚拟机使用,从而有效提高物理主机资源利用率的技术。采用虚拟化架构的物理主机的主要包括:由硬件资源组成的硬件层,运行于该硬件层上的主机操作系统(host operating system,host OS),运行于该host OS中的虚拟机监视器(virtualmachine monitor,VMM),以及运行于该VMM上的多个虚拟CPU(virtual CPU,VCPU)。其中,一个或多个VCPU上运行有一个虚拟机(virtual machine,VM),每个VM可以包括一个客户机操作系统(guest operating system,guest OS)以及运行于该guest OS上的应用程序(application,APP)。
相关技术中,当APP触发系统调用或异常,或者收到中断时,物理主机如果需要从guest OS中陷出到VMM进行处理,则由guest OS存储APP的上下文并由guest OS陷出到VMM。然后VMM存储guest OS的上下文并进行相关处理。当物理主机需要恢复运行该APP时,可以通过VMM恢复guest OS的上下文并由VMM陷入guest OS。之后,可以通过guest OS恢复APP的上下文并继续运行APP。其中,陷出是指物理主机的系统控制权由guest OS切换至VMM,陷入是指物理主机的系统控制权由VMM切换至guest OS。可以看出,当从物理主机发生陷出和陷入时,恢复APP的运行需要涉及上下文保存和恢复等较多的操作,导致APP的恢复速度慢。
发明内容
本申请提供了一种应用程序恢复运行的方法、装置及计算机,用以加快应用程序恢复运行的速度。
一方面,本申请提供了一种应用程序恢复运行的方法,该方法可以应用于采用虚拟化架构的计算机(或称为物理主机)。该计算机可以包括:虚拟机监视器,运行于该虚拟机监视器上的客户机操作系统,以及运行于该客户机操作系统上的应用程序。该方法可以包括:中止运行应用程序并由该客户机操作系统陷出至虚拟机监视器,然后该虚拟机监视器存储该应用程序的恢复信息,该恢复信息可以包括该应用程序的上下文或该上下文的存储地址。之后该虚拟机监视器基于该恢复信息恢复该应用程序的上下文,并陷入到该客户机操作系统,从而该应用程序可以恢复运行,即应用程序可以恢复至上一次中止时的状态继续运行。
可见,由于该恢复运行应用程序的过程中可以直接由虚拟机监视器恢复应用程序的上下文,而无需先恢复客户机操作系统的上下文再通过客户机操作系统恢复应用程序的上下文,从而有效加快了应用程序的恢复运行。
在一些实现方式中,响应于陷出请求,中止运行应用程序,即当检测到陷出请求时中止运行该应用程序。该陷出请求可以由以下任一种事件触发:该应用程序触发的系统调用;该应用程序触发的异常;以及该物理主机的硬件层上报的中断。也可以这样理解:系统调用、异常或中断本身即是陷出请求或陷出请求的一部分。
在一些实现方式中,响应于应用程序的恢复请求,恢复应用程序的运行,即当检测到该应用程序的恢复请求时,触发执行恢复应用上下文的操作。该恢复请求可以由虚拟机监视器中其他进程发送的需要由该应用程序处理的信号触发,或者也可以在该虚拟机监视器处理完前述陷出请求指示的操作后自动触发,又或者,还可以由虚拟机监视器中的虚拟机调度器根据调度算法检测到需要调度该应用程序所属虚拟机时触发,又或者人工配置或发送指令触发。
需要说明的是,“虚拟机监视器”在一些虚拟化架构中可以理解为VMM,在另一些虚拟化架构中也可以理解为hypervisor。
在一些实现方式中,在由该客户机操作系统陷出至虚拟机监视器之前,该方法还可以包括:客户机操作系统获取该应用程序的恢复信息,并将该应用程序的恢复信息传递至该虚拟机监视器。其中,在向虚拟机监视器传递恢复信息时,可以采用共享寄存器的方式传递或者调用接口的方式传递。上述两种方式传递恢复信息的效率较高,可以确保应用程序恢复运行的效率。
在一些实现方式中,在虚拟机监视器存储该应用程序的恢复信息之前,该方法还可以包括:客户机操作系统将该客户机操作系统的上下文的存储地址传递至该虚拟机监视器;相应的,虚拟机监视器存储该应用程序的恢复信息的过程可以包括:虚拟机监视器基于该客户机操作系统的上下文的存储地址,以及该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系,确定该应用程序的上下文的存储地址;虚拟机监视器存储该应用程序的上下文的存储地址,或者根据该应用程序的上下文的存储地址,存储该应用程序的上下文。
其中,该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系可以满足:应用程序的上下文的存储地址=客户机操作系统的上下文的存储地址-客户机操作系统的上下文所占的存储容量。或者,该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系也可以满足:应用程序的上下文的存储地址=客户机操作系统的上下文的存储地址+客户机操作系统的上下文所占的存储容量。
通过客户机操作系统将该客户机操作系统的上下文的存储地址传递至该虚拟机监视器,并由虚拟机监视器通过该存储地址存储该应用程序的恢复信息,提高了虚拟机监视器存储应用程序的恢复信息的灵活性。
在一些实现方式中,该恢复信息为该应用程序的上下文时,该虚拟机监视器将该应用程序的上下文存储至以下至少一种存储位置:该应用程序所属虚拟机的控制结构体;该应用程序所属虚拟处理器对应进程的管理结构体;以及物理主机的内存中除该控制结构体和管理结构体之外的存储位置。当然,虚拟机监视器也可以将该应用程序的上下文存储至物理主机的硬盘等其他任意存储位置。通过虚拟机监视器存储应用程序的上下文,可以便于在需要恢复运行应用程序时,虚拟机监视器能够直接恢复该应用程序的上下文。其中,该控制结构体可以为虚拟机管理结构体(VM control structures,VMCS)。该管理结构体可以为任务结构体(task_struct)。
在一些实现方式中,当该应用程序的上下文存储在该管理结构体中时,该方法还可以包括:当检测到针对该应用程序的调试指令时,主机操作系统中安装的调试工具,基于该应用程序的上下文在该管理结构体中的存储地址,对该应用程序进行调试。由于该应用程序所属虚拟处理器对应进程的管理结构体中存储有应用程序的上下文,因此当虚拟机监视器检测到针对该应用程序的调试指令时,可以基于该应用程序的上下文在该管理结构体中的存储地址,直接通过该调试工具对该应用程序进行调试。该调试过程无需再对该调试工具进行适配,有效提高了对应用程序的调试效率。
在一些实现方式中,虚拟机监视器恢复该应用程序的上下文的过程可以包括:虚拟机监视器将该应用程序的上下文存储至对应的寄存器。将应用程序的上下文存储至对应的寄存器,即可使该应用程序从上一次中止时的状态继续开始运行。
在一些实现方式中,该陷出请求可以由以下任一种请求触发:该应用程序触发的系统调用;该应用程序触发的异常;以及该物理主机的硬件层上报的中断。也可以这样理解:系统调用、异常或中断本身即是陷出请求或陷出请求的一部分。
另一方面,本申请提供了一种计算机,该计算机(或称物理主机)可以包括:硬件层,运行于该硬件层上的虚拟机监视器,运行于该虚拟机监视器上的客户机操作系统,以及运行于该客户机操作系统上的应用程序。该计算机中的各组件可以用于实现上述方面所提供的应用程序恢复运行的方法。这些组件可以是硬件,软件,或者,是硬件和软件的组合。
又一方面,本申请提供了一种恢复应用程序运行的装置,该装置包括多个模块,且该多个模块用于实现上述方面所提供应用程序恢复运行的方法。该装置可以部署在计算机上,有该计算机运行以实现前述方法。该计算机(或称物理主机)包括:虚拟机监视器,运行于该虚拟机监视器上的客户机操作系统,以及运行于该客户机操作系统上的应用程序。该装置的各个模块可以分散部署在客户机操作系统和虚拟机监视器内部。
再一方面,本申请提供了一种计算机可读存储介质或一种计算机程序(产品),该计算机可读存储介质或该计算机程序中存储有指令,当处理器读取该计算机可读存储介质或该计算机程序中存储的指令行时,使得处理器执行如上述方面所提供的应用程序恢复运行的方法。
再一方面,本申请提供了一种应用程序恢复运行的装置,该装置可以包括:存储器,处理器及存储在该存储器上并可在该处理器上运行的计算机程序,该处理器执行该计算机程序时实现如上述方面所提供的应用程序恢复运行的方法。
综上所述,本发明实施例提供了一种应用程序恢复运行的方法、装置及计算机,该方案可以在中止应用程序的运行之后,通过虚拟机监视器存储该应用程序的上下文或该上下文的存储地址,从而可以在需要恢复应用程序的运行时直接通过该虚拟机监视器恢复该应用程序的上下文。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而有效加快了应用程序的恢复运行。
附图说明
图1是本发明实施例提供的一种采用虚拟化技术的物理主机的架构图;
图2是本发明实施例提供的另一种采用虚拟化技术的物理主机的架构图;
图3是本发明实施例提供的一种应用程序恢复运行的方法的流程图;
图4是本发明实施例提供的一种应用程序恢复运行的方法的执行流程图;
图5是本发明实施例提供的又一种采用虚拟化技术的物理主机的架构图;
图6是本发明实施例提供的另一种应用程序恢复运行的方法的流程图;
图7是本发明实施例提供的另一种应用程序恢复运行的执行流程图;
图8是本发明实施例提供的又一种应用程序恢复运行的方法的流程图;
图9是本发明实施例提供的又一种应用程序恢复运行的执行流程图;
图10是本发明实施例提供的再一种应用程序恢复运行的方法的流程图;
图11是本发明实施例提供的再一种应用程序恢复运行的执行流程图;
图12是本发明实施例提供的一种应用程序恢复运行的装置的结构示意图;
图13是本发明实施例提供的另一种应用程序恢复运行的装置的结构示意图;
图14是本发明实施例提供的又一种应用程序恢复运行的装置的结构示意图。
具体实施方式
下面结合附图详细介绍本申请实施例提供的应用程序恢复运行的方法。
图1是本发明实施例提供的一种采用虚拟化技术的物理主机的架构图。如图1所示,该物理主机也可以称为计算机。参考图1,物理主机可以包括:硬件层10,运行于该硬件层10上的主机操作系统(host OS)20,运行于该host OS 20中的VMM 30,以及运行于该VMM30上的多个VCPU 40。例如图1中示出了两个VCPU:VCPUa和VCPUb。其中,每个VCPU 40上运行有一个VM 41,每个VM 41包括一个客户机操作系统(guest OS)42以及运行于该guest OS42上的至少一个APP 43。例如,图1所示的架构中,每个VM 41中包括一个APP 43。
其中,该硬件层10可以包括一个或多个物理处理器(物理CPU)、物理存储设备(例如内存和硬盘)、网络接口以及外设等硬件设备。host OS 20可以为Linux操作系统。VMM 30也称为hypervisor,是一种运行在硬件层10和各VCPU 40之间的软件中间件,用于将硬件层的10的硬件资源协调提供给各个VCPU 40,以供该客户机操作系统42和应用程序43运行。例如,VMM 30可以将物理CPU的处理资源协调提供给各个VCPU 40。
参考图1,该VMM 30可以运行在host OS 20中。或者,该VMM 30也可以独立于该host OS 20部署,即该VMM 30可以直接运行在硬件层10上。又或者,如图2所示,该物理主机中也可以无需部署该host OS 20。本发明实施例对该物理主机的架构不做限定。
该guest OS 42可以为库操作系统(library OS,LibOS),该LibOS也称为unikernel,是一种轻量级的虚拟化技术,其采用了OS外核架构,把OS的功能抽象成库,提供了库文件、联合文件系统、普通文件系统以及执行各种操作、与其他模块进行交互的功能。
通常,物理主机在某个VM 40的guest OS 42中运行APP 43的过程中,当该APP 43触发系统调用、出现异常或硬件层10上报中断时,物理主机如果需要由guest OS 42陷出到VMM 30进行处理,则可以通过该VM 40中的guest OS 42存储APP 43的上下文,并由guestOS 42陷出到VMM 30。之后可以通过VMM 30存储guest OS 42的上下文并进行相关处理。当需要恢复运行该APP 43时,可以通过VMM 30恢复guest OS 42的上下文并由VMM 30陷入guest OS 42。最后,可以通过guest OS 42恢复APP 43的上下文并继续运行APP 43。
但是,由于APP 43的上下文保存在guest OS 42,因此相关技术中的方法在恢复运行APP的过程中,需要先通过VMM 30恢复guest OS 42的上下文,然后再通过guest OS 42恢复APP 43的上下文,该恢复运行APP 43的效率较低。
本发明实施例提供了一种应用程序恢复运行的方法,该方法可以应用于图1或图2所示的物理主机中,该方法可以解决相关技术中的物理主机恢复运行APP时效率较低的问题。参考图3,该方法可以包括:
步骤101、响应于陷出请求,客户机操作系统中止运行应用程序。
该陷出请求可以由以下任一种事件触发:应用程序触发的系统调用、应用程序触发的异常,以及物理主机的硬件层上报的中断。也可以这样理解:系统调用、异常或中断本身即是陷出请求或陷出请求的一部分。其中,系统调用可以是应用程序主动向客户机操作系统发出的服务请求。异常可以是应用程序当前指令执行失败(由于非法指令或者内存缺页等原因导致)而向客户机操作系统发送的处理请求。中断可以是由硬件层的外设发送至客户机操作系统的输入/输出(input/output,I/O)中断,或者由物理CPU发送至客户机操作系统的处理器间中断(inter-processor interrupt,IPI)。也即是,当物理主机在应用程序运行在客户机操作系统的过程中,当检测到应用程序发送的系统调用或异常,或者检测到硬件层发送的中断请求时,即可中止运行应用程序。此时,物理主机的系统控制权由应用程序切换至客户机操作系统,即由应用程序陷出至客户机操作系统。
示例的,参考图4,以VMM 30上运行的VCPUa为例,假设该VCPUa上运行的VM 41中的APP 43在运行过程中向guest OS 42发送了系统调用,则物理主机通过该guest OS 42中止该APP 43的运行。
步骤102、客户机操作系统获取该应用程序的恢复信息。
通过客户机操作系统中止运行该应用程序后,物理主机可以通过该客户机操作系统获取该应用程序的恢复信息。该恢复信息可以包括应用程序的上下文(context)或该上下文的存储地址,该存储地址可以为该上下文在内存中的存储地址。其中,应用程序的上下文可以包括恢复运行该应用程序所需的信息,例如可以包括该应用程序中止运行时,寄存器中所记录的该应用程序的相关数据。其中,恢复运行应用程序可以是指使得该应用程序恢复运行至上一次中止时的状态。
示例的,如图4所示,可以通过guest OS 42获取APP 43的上下文在内存中的存储地址。
需要说明的是,在本发明实施例中,物理主机通过客户机操作系统获取该应用程序的恢复信息后,还可以先判断触发该陷出请求的系统调用、异常或中断是否可以由客户机操作系统进行处理。若可以由客户机操作系统进行处理,则可以通过该客户机操作系统进行相关处理后,直接恢复应用程序的上下文并恢复运行该应用程序。若无法通过该客户机操作系统进行处理,则物理主机可以继续执行下述步骤103。
在一些实现方式中,在上述步骤102之后,物理主机还可以通过该客户机操作系统存储该应用程序的恢复信息,例如存储在内存中,以便通过客户机操作系统进行相关处理后,能够通过客户机操作系统直接恢复应用程序的上下文。当然,若无法通过该客户机操作系统进行处理,则也可以无需通过该客户机操作系统存储该恢复信息,而是可以直接通过该客户机操作系统将获取到的恢复信息传递至虚拟机监视器。
步骤103、客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器。
在本发明实施例中,客户机操作系统向虚拟机监视器传递恢复信息时,可以采用寄存器传递的方式或者调用接口传递的方式。其中,寄存器传递的方式可以是指:客户机操作系统将应用程序的恢复信息写入至某个虚拟机监视器能够访问的寄存器,并将该寄存器的地址发送至虚拟机监视器,然后由该虚拟机监视器根据接收到的地址指示的寄存器中读取应用程序的恢复信息。调用接口传递可以是指:客户机操作系统直接调用虚拟机监视器的接口传递该应用程序的恢复信息。
步骤104、由该客户机操作系统陷出至虚拟机监视器。
通过该客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器后,即可由该客户机操作系统陷出至虚拟机监视器,即物理主机的系统控制权由该客户机操作系统切换至虚拟机监视器。
示例的,参考图4,可以通过该guest OS 42调用VMM 30的接口将APP 43的上下文的地址传递至VMM 30,并由该guest OS 42陷出至该VMM 30。
步骤105、虚拟机监视器存储该应用程序的恢复信息。
当该恢复信息为该应用程序的上下文时,物理主机可以通过该虚拟机监视器将该应用程序的上下文存储至以下至少一种存储位置:该应用程序所属VM的控制结构体、该应用程序所属虚拟处理器(VCPU)对应进程的管理结构体以及该物理主机的内存中除该控制结构体和管理结构体之外的存储位置。
在本发明实施例中,物理主机中每个VM都对应有一个控制结构体,该控制结构体可以为虚拟机控制结构体(VM control structures,VMCS)。每个VCPU对应的进程都对应有一个用于对该进程进行管理的管理结构体,该管理结构体也可以称为进程控制块(processing control block,PCB)。例如该管理结构体可以为任务结构体(task_struct)。
在一些实现方式中,物理主机可以通过该虚拟机监视器将该应用程序的上下文存储至虚拟机的控制结构体、进程的管理结构体和物理主机的内存中任一存储位置。或者,也可以通过该虚拟机监视器将该应用程序的上下文同时存储在上述存储位置中的多个存储位置。例如,通过该VMM 30将该APP 43的上下文存储至APP 43所属VM的VMCS,并将该APP 43的上下文存储至该APP 43所属VCPU对应进程的task_struct。
当该恢复信息为应用程序的上下文的存储地址时,一方面,可以通过该虚拟机监视器直接存储该应用程序的上下文的存储地址,例如可以将该存储地址存储在内存中。另一方面,可以通过该虚拟机监视器根据该应用程序的上下文的存储地址,从该存储地址指示的存储位置获取该应用程序的上下文,并存储该获取到的应用程序的上下文。例如,可以通过该虚拟机监视器将获取到的应用程序的上下文存储至以下至少一种存储位置:该应用程序所属VM的控制结构体、该应用程序所属VCPU对应进程的管理结构体以及该物理主机的内存中除该控制结构体和管理结构体之外的存储位置。
在一些实现方式中,上述步骤103也可以通过下述步骤103a替换:
步骤103a、客户机操作系统将该客户机操作系统的上下文的存储地址传递至该虚拟机监视器。
在本发明实施例中,在中止运行应用程序之后,由客户机操作系统陷出至虚拟机监视器之前,客户机操作系统还可以将该客户机操作系统自身的上下文的存储地址传递至该虚拟机监视器。其中,该客户机操作系统的上下文的存储地址也可以是指在内存中的存储地址。传递该客户机操作系统的上下文的存储地址的方式可以参考上述传递应用程序的恢复信息的方式,此处不再赘述。
相应的,上述步骤105可以包括:
步骤1051、虚拟机监视器基于该客户机操作系统的上下文的存储地址,以及该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系,确定该应用程序的上下文的存储地址。
由于该客户机操作系统的上下文和应用程序的上下文一般采用压栈的方式存储,且一般先存储应用程序的上下文,然后存储客户机操作系统的上下文。因此,可以根据用于存储该客户机操作系统的上下文和应用程序的上下文的堆栈的增长方式,确定客户机操作系统的存储地址与该应用程序的上下文的存储地址之间的关系。其中,堆栈的增长方式是指堆栈的地址的增长方式,该增长方式一般包括向上增长和向下增长。向上增长是指堆栈的地址从栈底到栈顶逐渐增大,即栈顶为高地址;向下增长是指堆栈的地址从栈顶到栈底逐渐增大,即栈底为高地址。
当该堆栈的增长方式为向上增长时,该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系可以满足:应用程序的上下文的存储地址=客户机操作系统的上下文的存储地址-该客户机操作系统的上下文所占的存储容量(也可以称为长度)。也即是,可以将该客户机操作系统的上下文的存储地址与该客户机操作系统的上下文的长度的差值确定为该应用程序的上下文的存储地址。
当该堆栈的增长方式为向下增长时,该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系可以满足:应用程序的上下文的存储地址=客户机操作系统的上下文的存储地址+该客户机操作系统的上下文所占的存储容量(也可以称为长度)。也即是,可以将该客户机操作系统的上下文的存储地址与该客户机操作系统的上下文的长度之和确定为该应用程序的上下文的存储地址。
其中,若客户机操作系统的上下文的长度为固定值,则物理主机可以通过虚拟机监视器直接获取到客户机操作系统的上下文的长度。若客户机操作系统的上下文的长度不为固定值,则在通过该客户机操作系统向虚拟机监视器传递该客户机操作系统的上下文的存储地址时,可以同步传输该客户机操作系统的上下文的长度。
步骤1052、虚拟机监视器存储该应用程序的上下文的存储地址,或者根据该应用程序的上下文的存储地址,存储该应用程序的上下文。
该虚拟机监视器确定该应用程序的上下文的存储地址后,可以通过该虚拟机监视器直接存储该应用程序的上下文的存储地址。或者,也可以通过该虚拟机监视器根据该应用程序的上下文的存储地址,从该存储地址指示的存储位置获取该应用程序的上下文,并存储获取到的该应用程序的上下文。通过该虚拟机监视器存储该应用程序的上下文或者上下文的存储地址的方式可以参考上文描述,此处不再赘述。
需要说明的是,在上述步骤105中,若通过该虚拟机监视器存储的恢复信息为该应用程序的上下文,则由于该虚拟机监视器的架构和该客户机操作系统的架构可能不同。例如,该虚拟机监视器可以是64位架构,而该客户机操作系统可能是32位架构,则通过该虚拟机监视器存储该应用程序的上下文时,还需要对该应用程序的上下文的数据格式进行转换(例如可以对该应用程序的上下文进行补零操作),以使得该转换后的应用程序的上下文可以满足该虚拟机监视器的架构要求。
还需要说明的是,通过该虚拟机监视器存储恢复信息时,除了可以存储至上文所述的控制结构体、管理结构体和内存中的其他存储位置之外,还可以存储至物理主机中的硬盘等其他任意存储位置,本发明实施例对此不做限定。
步骤106、响应于该应用程序的恢复请求时,虚拟机监视器恢复该应用程序的上下文,并由虚拟机监视器陷入到该客户机操作系统。
在本发明实施例中,该恢复请求可以由虚拟机监视器中其他进程发送的需要由该应用程序处理的信号触发,或者也可以在通过该虚拟机监视器处理完成该陷出请求指示的操作后自动触发,又或者,还可以是虚拟机监视器中的虚拟机调度器根据调度算法检测到需要调度该应用程序所属虚拟机时触发的。通过该虚拟机监视器恢复该应用程序的上下文可以是指:通过该虚拟机监视器将该应用程序的上下文从原存储位置存储至(即拷贝至)该应用程序对应的寄存器,以便恢复运行该应用程序。其中,应用程序对应的寄存器可以是指物理主机运行该应用程序时所用的寄存器。通过该虚拟机监视器恢复该应用程序的上下文,并由虚拟机监视器陷入到该客户机操作系统后,该应用程序即可恢复运行,即应用程序可以恢复至上一次中止时的状态并继续运行。
由于该恢复运行应用程序的过程中,可以通过虚拟机监视器直接恢复应用程序的上下文,而无需先由虚拟机监视器恢复客户机操作系统的上下文,再由客户机操作系统恢复应用程序的上下文,减少了客户机操作系统的一次切换和跳转,有效提升了恢复运行应用程序的效率。由于该物理主机中的各个应用程序均运行在VCPU上,因此提高恢复运行应用程序的效率也即是提高了各VCPU之间的切换效率。
示例的,可以通过VMM 30将APP 43的上下文,从该APP 43所属VCPU对应进程的task_struct拷贝至该APP 43对应的寄存器,从而使得该APP 43可以恢复运行。
需要说明的是,由于该虚拟机监视器的架构和该客户机操作系统的架构可能不同。若通过该虚拟机监视器存储应用程序的上下文时,还对该应用程序的上下文的数据格式进行了转换,则在恢复该应用程序的上下文时,还需要再次对该应用程序的上下文的数据格式进行转换(例如可以对该应用程序的上下文进行去零操作),以恢复该应用程序的上下文的数据格式,使得恢复后的应用程序的上下文可以满足该客户机操作系统的架构要求。
在一些实现方式中,若该物理主机的架构中还包括主机操作系统20,则该物理主机的主机操作系统20中还可以安装有调试工具,例如,GNU(“GNU is Not Unix”的递归缩写)调试器(GNU debugger,GDB)和性能分析工具(performance,Perf)等。该调试工具可以对VMM 30中的进程,以及VM 40中的APP 43进行调试。但是,由于相关技术VM 40中的APP 43的上下文保存在guest OS 42中,当需要通过VMM 30中安装的调试工具对APP 43进行调试时,该调试工具无法直接获知该应用程序的上下文的存储地址,因此需要先对该调试工具进行适配才能对APP 43进行调试,导致应用程序的调试效率较低。
在本发明实施例中,若在上述步骤105中,虚拟机监视器将该应用程序的上下文存储在该管理结构体中,则该方法还可以包括:
步骤107、当检测到针对该应用程序的调试指令时,通过主机操作系统中安装的调试工具,基于该应用程序的上下文在该应用程序所属VCPU对应进程的管理结构体中的存储地址,对该应用程序进行调试。
由于该应用程序所属VCPU对应进程的管理结构体中存储有应用程序的上下文,因此当通过虚拟机监视器检测到针对该应用程序的调试指令时,可以基于该应用程序的上下文在该管理结构体中的存储地址,直接通过该调试工具对该应用程序进行调试。该调试过程无需再对该调试工具进行适配,有效提高了对应用程序的调试效率。
在本发明实施例中,每个VCPU 40可以对应一个物理CPU,不同VCPU 40对应的物理CPU可以相同也可以不同,因此每个物理CPU可以对应一个或多个VCPU 40。VMM 30可以将每个物理CPU的处理资源协调提供给该物理CPU对应的一个或多个VCPU 40。其中,每个物理CPU可以为一个物理核。每个VCPU可以与VMM 30中的一个线程对应,例如图5所示,VCPUa与线程a对应,VCPUb与线程b对应。VMM 30可以通过线程调度策略在物理CPU中调度不同线程,进而使得同一物理CPU对应的多个VCPU 40可以切换运行。以VCPUa切换至VCPUb为例,该VCPU的切换过程所需的时间可以包括:保存VCPUa中运行的应用程序的上下文的时间、恢复VCPUb中应用程序的上下文的时间以及由线程a切换至线程b所需的时间。
相关技术中为了提高VCPU 40的切换效率,参考图5,可以将同一物理CPU对应的多个VCPU 40作为一个VCPU队列进行管理,并将该一个VCPU队列与VMM 30中一个代理线程绑定。当需要在该VCPU队列中的各VCPU之间进行VCPU切换时,不再需进行线程切换,因而有效提高了VCPU的切换效率。其VCPU的切换用时一般为5微秒(us)左右。而在采用本发明实施例提供的方法后,由于在进行VCPU的切换时,可以有效提高恢复VCPU中应用程序的上下文的时间,从而可以进一步提高VCPU的切换效率。例如,VCPU的切换用时可以从5us缩短至1us以下。
在一些实现方式中,在本发明实施例中,该物理主机可以为基站或者服务器等。该物理主机中运行的虚拟机中的应用程序可以为移动通信业务应用程序。例如该物理主机中运行的虚拟机中的应用程序可以包括第四代移动通信技术(the 4th generation mobilecommunication technology,4G)应用程序和第五代移动通信技术5G应用程序。当该4G应用程序所属VM所运行的VCPU,与5G应用程序所属VM所运行的VCPU对应同一个物理CPU时,需要实现4G应用程序和5G应用程序的快速切换。本发明实施例提供的应用程序恢复运行的方法可以满足该4G应用程序和5G应用程序的快速切换的需求。
需要说明的是,本发明实施例提供的应用程序恢复运行的方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。例如,步骤102可以根据情况删除,步骤103可以由步骤103a替代。或者,步骤107可以根据情况进行删除。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
综上所述,本发明实施例提供了一种应用程序恢复运行的方法,该方法可以在中止应用程序的运行之后,通过虚拟机监视器存储该应用程序的上下文或该上下文的存储地址,从而可以在需要恢复应用程序的运行时直接通过该虚拟机监视器恢复该应用程序的上下文。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而有效提高了应用程序恢复运行的效率。
图6是本发明实施例提供的另一种应用程序恢复运行的方法流程图,以该陷出请求由中断触发为例,对该应用程序恢复运行的方法进行介绍。参考图6,该方法可以包括:
步骤201、当检测到硬件层上报的中断时,客户机操作系统中止运行该应用程序。
示例的,参考图7,假设当通过该VCPUa运行APP 43的过程中,收到了硬件层10上报的中断,则可以通过该VCPUa中止该APP 43的运行,并由APP 43陷出至guest OS 42。
步骤202、客户机操作系统获取该应用程序的恢复信息。
该步骤202的实现过程可以参考上述步骤102,此处不再赘述。
步骤203、客户机操作系统判断该中断是否由该客户机操作系统处理。
在本发明实施例中,该客户机操作系统中可以存储有中断分发列表,该中断分发列表中可以记录有每个中断对应的VCPU。客户机操作系统可以根据该中断分发列表确定当前检测到的中断对应的VCPU,并判断该中断对应的VCPU是否为支撑该客户机操作系统运行的VCPU(即该客户机操作系统所属的VCPU)。
若该中断对应的VCPU为该客户机操作系统所属的VCPU,则可以确定该中断是由该客户机操作系统处理,因此可以执行步骤204。若该中断对应的VCPU不为该客户机操作系统所属的VCPU,则可以确定该中断不由该客户机操作系统处理,因此可以继续执行下述步骤205。
步骤204、客户机操作系统对该中断进行处理,处理完成后恢复应用程序的上下文,并恢复运行该应用程序。
若通过该客户机操作系统判断该中断是由该客户机操作系统处理,则可以直接通过该客户机操作系统对该中断进行处理,处理完成后即可直接通过该客户机操作系统恢复应用程序的上下文,并恢复运行该应用程序。
步骤205、客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器,并由该客户机操作系统陷出至虚拟机监视器。
步骤206、虚拟机监视器存储该应用程序的恢复信息。
上述步骤205和步骤206的实现过程可以参考上述步骤103至步骤105的相关描述,此处不再赘述。
步骤207、切换至该中断对应的虚拟处理器,并通过该对应的虚拟处理器上运行的客户机操作系统对该中断进行处理。
在本发明实施中,当该陷出请求是由中断触发时,物理主机的系统控制权由客户机操作系统陷出至虚拟机监视器后,即可通过该虚拟机监视器确定该中断对应的虚拟处理器,并切换至该对应的虚拟处理器,以便通过该对应的虚拟处理器上运行的客户机操作系统对中断进行处理。
在一些实现方式中,物理主机可以通过该虚拟机监视器根据中断分发列表确定该中断对应的虚拟处理器。或者,由该客户机操作系统陷出至虚拟机监视器时,可以通过该客户机操作系统直接将该中断对应的虚拟处理器的标识传递至虚拟机监视器,以便该虚拟机监视器可以直接切换至该标识指示的虚拟处理器。
示例的,参考图7,假设该中断对应的虚拟处理器为VCPUb,则VMM 30可以切换运行VCPUb,并通过VCPUb上运行的guest OS 42对该中断进行处理。
步骤208、当检测到该应用程序的恢复请求时,虚拟机监视器恢复该应用程序的上下文,并由虚拟机监视器陷入到该客户机操作系统。
示例的,当物理主机通过VMM 30检测到该VCPUb上运行的guest OS 42完成中断处理时,可以触发该VCPUa中的APP 43的恢复请求,并通过VMM 30恢复该APP 43的上下文,由VMM 30陷入到guest OS 42,从而可以恢复运行该APP 43。
上述步骤208的实现过程可以参考上述步骤106中的相关描述,此处不再赘述。
图8是本发明实施例提供的另一种应用程序恢复运行的方法流程图,以该陷出请求由系统调用或异常触发为例,对该应用程序恢复运行的方法进行介绍。参考图8,该方法可以包括:
步骤301、当检测到应用程序触发的系统调用或异常时,客户机操作系统中止运行该应用程序。
示例的,参考图9,假设在该VCPUa中运行APP 43的过程中,APP 43触发了系统调用,则可以通过该VCPUa中止该APP 43的运行,并由APP 43陷出至guest OS 42。
步骤302、客户机操作系统获取该应用程序的上下文。
该步骤302的实现过程可以参考上述步骤102,此处不再赘述。
步骤303、客户机操作系统判断该系统调用或异常是否由该客户机操作系统处理。
在本发明实施例中,该客户机操作系统中可以存储有处理功能列表,该处理功能列表中可以记录有其所能够处理的系统调用或异常的类型。物理主机可以通过该客户机操作系统根据该处理功能列表判断该系统调用或异常是否可以由该客户机操作系统直接进行处理。
若通过该客户机操作系统判断该系统调用或异常可以由该客户机操作系统直接进行处理,则可以执行步骤304;若通过该客户机操作系统判断该系统调用或异常无法由该客户机操作系统处理,则可以继续执行下述步骤305。
步骤304、客户机操作系统对该系统调用或异常进行处理,处理完成后恢复应用程序的上下文,并恢复运行该应用程序。
若通过该客户机操作系统判断该系统调用或异常可以由该客户机操作系统处理,则可以直接通过该客户机操作系统对该系统调用或异常进行处理,处理完成后即可通过该客户机操作系统恢复应用程序的上下文,并恢复运行该应用程序。
步骤305、客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器,并由该客户机操作系统陷出至虚拟机监视器。
通过该客户机操作系统判断该系统调用或异常无法由该客户机操作系统处理时,可以通过该客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器,并由该客户机操作系统陷出至虚拟机监视器。
步骤306、虚拟机监视器存储该应用程序的恢复信息。
上述步骤305和步骤306的实现过程可以参考上述步骤103至步骤105中的相关描述,此处不再赘述。
步骤307、虚拟机监视器对该系统调用或异常进行处理。
在本发明实施中,物理主机的系统控制权由客户机操作系统陷出至虚拟机监视器后,即可由该虚拟机监视器对该系统调用或异常进行处理。
步骤308、当检测到该应用程序的恢复请求时,虚拟机监视器恢复该应用程序的上下文,并由虚拟机监视器陷入到该客户机操作系统。
示例的,当物理主机通过VMM 30完成对该系统调用的处理时,可以触发该VCPUa中的APP 43的恢复请求,并通过VMM 30恢复该APP 43的上下文,由VMM 30陷入到guest OS42,从而可以恢复运行该APP 43。
上述步骤308的实现过程可以参考步骤106的相关描述,此处不再赘述。
图10是本发明实施例提供的另一种应用程序恢复运行的方法流程图。以该恢复请求为其他进程发送的信号为例,对该应用程序恢复运行的方法进行介绍。参考图10,该方法可以包括:
步骤401、当检测到其他进程发送的需要该应用程序进行处理的信号时,虚拟机监视器恢复该应用程序的上下文,并由虚拟机监视器陷入至客户机操作系统。
示例的,参考图11,假设当前VCPUa不在位(即未运行),物理主机通过VMM 30收到了其他进程发送的需要该VCPUa中的APP 43处理的信号,则可以通过该VMM 30恢复该APP43的上下文,由VMM 30陷入到guest OS 42,从而可以恢复运行该APP 43。该APP 43的上下文可以是上一次中止APP 43运行时,通过该VMM 30存储的。
上述步骤401的实现过程可以参考步骤106的相关描述,此处不再赘述。
步骤402、应用程序进行相关处理。
示例的,该VCPUa中的APP 43可以对触发其恢复运行的信号进行相关处理。
步骤403、当检测到陷出请求时,客户机操作系统中止运行该应用程序。
步骤404、客户机操作系统获取该应用程序的恢复信息。
步骤405、客户机操作系统将该应用程序的恢复信息传递至该虚拟机监视器,并由该客户机操作系统陷出至虚拟机监视器。
步骤406、虚拟机监视器存储该应用程序的恢复信息。
上述步骤403至步骤406的实现过程可以参考上述步骤101至步骤105中的相关描述,此处不再赘述。
综上所述,本发明实施例提供了一种应用程序恢复运行的方法,该方法可以在中止应用程序的运行之后,通过虚拟机监视器存储该应用程序的上下文或该上下文的存储地址,从而可以在需要恢复应用程序的运行时直接通过该虚拟机监视器恢复该应用程序的上下文。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而有效提高了应用程序恢复运行的效率。
需要说明的是,在本申请中,“通过”guest OS或VMM等执行某项操作,可以理解为物理主机做执行主体,该物理主机“通过”该物理主机上部署的VMM或guest OS来执行该操作。这种描述相当于:guest OS或VMM等“执行”某项操作”,即将guest OS或VMM等直接理解为执行主体。不论是哪种描述方法,其本质均是处理器运行软件程序(guest OS或VMM)以执行该项操作。
本发明实施例还提供了一种物理主机,参考图1、图2以及图5,该物理主机可以包括:硬件层10,运行于该硬件层10上的虚拟机监视器30,运行于该虚拟机监视器30上的客户机操作系统42,以及运行于该客户机操作系统42上的应用程序43。
该客户机操作系统42,可以用于响应于陷出请求,中止运行该应用程序43并陷出至该虚拟机监视器30。
该虚拟机监视器30,可以用于存储该应用程序43的恢复信息,该恢复信息包括该应用程序43的上下文或该上下文的存储地址。
该虚拟机监视器30,还用于响应于该应用程序43的恢复请求,基于该恢复信息恢复该应用程序43的上下文,并陷入至该客户机操作系统42,从而使得该应用程序43可以恢复运行。
在一些实现方式中,该客户机操作系统42,还可以用于:
在陷出至虚拟机监视器30之前,获取该应用程序43的恢复信息;将该应用程序43的恢复信息传递至该虚拟机监视器30。
在一些实现方式中,该客户机操作系统42可以用于将该恢复信息写入虚拟机监视器能够访问的寄存器或者调用虚拟机监视器的接口,将该应用程序43的恢复信息传递至该虚拟机监视器30。
在一些实现方式中,该客户机操作系统42,还用于将该客户机操作系统42的上下文的存储地址传递至该虚拟机监视器30。相应的,该虚拟机监视器30,可以用于:
基于该客户机操作系统42的上下文的存储地址,以及该客户机操作系统42的上下文的存储地址与该应用程序43的上下文的存储地址之间的关系,确定该应用程序43的上下文的存储地址;
存储该应用程序43的上下文的存储地址,或者根据该应用程序43的上下文的存储地址,存储该应用程序43的上下文。
在一些实现方式中,该恢复信息为该应用程序43的上下文;该虚拟机监视器30,用于将该应用程序43的上下文存储至以下至少一种存储位置:物理主机的内存;该应用程序43所属虚拟机的控制结构体;以及该应用程序43所属虚拟处理器对应进程的管理结构体。
在一些实现方式中,该应用程序43的上下文存储在该管理结构体中。参考图1,该物理主机还可以包括:运行在该硬件层10上的主机操作系统20,以及安装在该主机操作系统20中的调试工具(图1中未示出)。
该调试工具,可以用于当检测到针对该应用程序43的调试指令时,基于该应用程序43的上下文在该管理结构体中的存储地址,对该应用程序43进行调试。
在一些实现方式中,该虚拟机监视器30可以用于将该应用程序43的上下文存储至对应的寄存器。
在一些实现方式中,该陷出请求由以下任一种请求触发:该应用程序43触发的系统调用;该应用程序43触发的异常;以及该物理主机的硬件层10上报的中断。
综上所述,本发明实施例提供了一种物理主机,该物理主机中的客户机操作系统可以在中止应用程序的运行之后,通过虚拟机监视器存储该应用程序的上下文或该上下文的存储地址,从而可以在需要恢复应用程序的运行时直接通过该虚拟机监视器恢复该应用程序的上下文。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而有效提高了应用程序恢复运行的效率。
图12是本发明实施例提供的另一种应用程序恢复运行的装置的结构示意图,该装置可以应用于图1、图2或图5所示的物理主机中。参考图12,该装置可以包括:
部署在客户机操作系统内的中止模块501,用于响应于陷出请求,中止运行该应用程序并由该客户机操作系统陷出至虚拟机监视器。
部署在虚拟机监视器内的存储模块502,用于存储该应用程序的恢复信息,该恢复信息包括该应用程序的上下文或该上下文的存储地址。
部署在虚拟机监视器内的恢复模块503,用于响应于该应用程序的恢复请求,基于该恢复信息恢复该应用程序的上下文,并由客户机操作系统陷入至客户机操作系统。
在一些实现方式中,参考图13,该装置还可以包括:
部署在客户机操作系统内的获取模块504,用于在陷出至虚拟机监视器之前,获取该应用程序的恢复信息。
部署在客户机操作系统内的传递模块505,用于将该应用程序的恢复信息传递至该虚拟机监视器。
在一些实现方式中,该传递模块505可以用于:将该恢复信息写入虚拟机监视器能够访问的寄存器或者调用虚拟机监视器的接口,将该应用程序的恢复信息传递至该虚拟机监视器。
在一些实现方式中,该传递模块505,可以用于在由客户机操作系统陷出至虚拟机监视器之前,将该客户机操作系统的上下文的存储地址传递至该虚拟机监视器。
相应的,该存储模块502可以用于:基于该客户机操作系统的上下文的存储地址,以及该客户机操作系统的上下文的存储地址与该应用程序的上下文的存储地址之间的关系,确定该应用程序的上下文的存储地址;以及存储该应用程序的上下文的存储地址,或者根据该应用程序的上下文的存储地址,存储该应用程序的上下文。
在一些实现方式中,该恢复信息为该应用程序的上下文;该存储模块502可以用于:
将该应用程序的上下文存储至以下至少一种存储位置:物理主机的内存;该应用程序所属虚拟机的控制结构体;以及该应用程序所属虚拟处理器对应进程的管理结构体。
在一些实现方式中,该应用程序的上下文可以存储在该管理结构体中;如图13所示,该装置还可以包括:
部署在主机操作系统内的调试模块506,用于当检测到针对该应用程序的调试指令时,基于该应用程序的上下文在该管理结构体中的存储地址,对该应用程序进行调试。
在一些实现方式中,该恢复模块503可以用于:将该应用程序的上下文存储至对应的寄存器。
在一些实现方式中,该陷出请求由以下任一种请求触发:该应用程序触发的系统调用;该应用程序触发的异常;以及该物理主机的硬件层上报的中断。
综上所述,本发明实施例提供了一种应用程序恢复运行的装置,该装置中的客户机操作系统可以在中止应用程序的运行之后,通过虚拟机监视器存储该应用程序的上下文或该上下文的存储地址,从而可以在需要恢复应用程序的运行时直接通过该虚拟机监视器恢复该应用程序的上下文。由于该恢复运行应用程序的过程中无需先通过虚拟机监视器恢复客户机操作系统的上下文,再通过客户机操作系统恢复应用程序的上下文,减少了一次恢复上下文的操作,从而有效提高了应用程序恢复运行的效率。
应理解的是,本发明实施例的应用程序恢复运行的装置还可以用专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现上述方法实施例提供的应用程序恢复运行的方法,当通过软件实现上述方法实施例提供的应用程序恢复运行的方法时,该应用程序恢复运行的装置中的各个模块也可以为软件模块。
图14是本发明实施例提供的再一种计算机的结构示意图,参考图14,该计算机可以包括:处理器1201、存储器1202、网络接口1203和总线1204。其中,总线1204用于连接处理器1201、存储器1202和网络接口1203。通过网络接口1203(可以是有线或者无线)可以实现与其他设备之间的通信连接。存储器1202中存储有计算机程序12021,该计算机程序12021用于实现各种应用功能。
应理解,在本发明实施例中,处理器1201可以是CPU,该处理器1201还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、GPU或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是其它类型的处理器等。
存储器1202可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
总线1204除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1204。
处理器1201被配置为执行存储器1202中存储的计算机程序,处理器1201通过执行该计算机程序12021来实现上述任意一个方法实施例中的步骤。存储器中的软件程序可以采用前述实施例提供的模块划分方式划分为多个模块,也可以采用其它的模块划分方式。本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当处理器读取该计算机可读存储介质中存储的指令时,使得处理器执行如上述方法实施例中的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当处理器读取该计算机程序产品包含的指令时,使得处理器执行上述方法实施例中的步骤。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (20)

1.一种应用程序恢复运行的方法,其特征在于,应用于计算机,所述计算机包括:虚拟机监视器,运行于所述虚拟机监视器上的客户机操作系统,以及运行于所述客户机操作系统上的应用程序,所述方法包括:
响应于陷出请求,所述客户机操作系统中止运行所述应用程序,并陷出至所述虚拟机监视器;
所述虚拟机监视器存储所述应用程序的恢复信息,所述恢复信息包括所述应用程序的上下文或所述上下文的存储地址;
响应于所述应用程序的恢复请求,所述虚拟机监视器基于所述恢复信息恢复所述应用程序的上下文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述客户机操作系统获取所述应用程序的所述恢复信息;
所述客户机操作系统将所述恢复信息传递至所述虚拟机监视器。
3.根据权利要求2所述的方法,其特征在于,所述客户机操作系统将所述恢复信息传递至所述虚拟机监视器,包括:
将所述恢复信息写入所述虚拟机监视器能够访问的寄存器或调用所述虚拟机监视器的接口将所述恢复信息传递至所述虚拟机监视器。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述客户机操作系统将所述客户机操作系统的上下文的存储地址传递至所述虚拟机监视器;
所述虚拟机监视器存储所述应用程序的恢复信息,包括:
所述虚拟机监视器基于所述客户机操作系统的上下文的存储地址,以及所述客户机操作系统的上下文的存储地址与所述应用程序的上下文的存储地址之间的关系,确定所述应用程序的上下文的存储地址;
所述虚拟机监视器存储所述应用程序的上下文的存储地址,或者根据所述应用程序的上下文的存储地址,存储所述应用程序的上下文。
5.根据权利要求1至4任一所述的方法,其特征在于,所述恢复信息为所述应用程序的上下文;所述虚拟机监视器存储所述应用程序的恢复信息,包括:
所述虚拟机监视器将所述应用程序的上下文存储至以下至少一种存储位置:
所述应用程序所属虚拟机的控制结构体;
所述应用程序所属虚拟处理器对应进程的管理结构体;
所述计算机的内存中除所述控制结构体和所述管理结构体之外的存储位置。
6.根据权利要5所述的方法,其特征在于,所述计算机还包括:主机操作系统,以及安装在所述主机操作系统中的调试工具;所述应用程序的上下文存储在所述管理结构体中;所述方法还包括:
当检测到针对所述应用程序的调试指令时,通过所述调试工具基于所述应用程序的上下文在所述管理结构体中的存储地址,对所述应用程序进行调试。
7.根据权利要求1至6任一所述的方法,其特征在于,所述虚拟机监视器恢复所述应用程序的上下文,包括:
所述虚拟机监视器将所述应用程序的上下文存储至对应的寄存器。
8.根据权利要求1至7任一所述的方法,其特征在于,所述陷出请求由以下任一种事件触发:
所述应用程序触发的系统调用;
所述应用程序触发的异常;
所述计算机的硬件层上报的中断。
9.一种计算机,其特征在于,所述计算机包括:硬件层,运行于所述硬件层上的虚拟机监视器,运行于所述虚拟机监视器上的客户机操作系统,以及运行于所述客户机操作系统上的应用程序;
所述客户机操作系统,用于响应于陷出请求,中止运行所述应用程序并陷出至所述虚拟机监视器;
所述虚拟机监视器,用于存储所述应用程序的恢复信息,所述恢复信息包括所述应用程序的上下文或所述上下文的存储地址;
所述虚拟机监视器,还用于响应于所述应用程序的恢复请求,基于所述恢复信息恢复所述应用程序的上下文。
10.根据权利要求9所述的计算机,其特征在于,所述客户机操作系统,还用于:在陷出至所述虚拟机监视器之前,获取所述应用程序的恢复信息;并将所述应用程序的恢复信息传递至所述虚拟机监视器。
11.根据权利要求10所述的计算机,其特征在于,所述客户机操作系统用于:将所述恢复信息写入所述虚拟机监视器能够访问的寄存器或调用所述虚拟机监视器的接口将所述恢复信息传递至所述虚拟机监视器。
12.根据权利要求9所述的计算机,其特征在于,
所述客户机操作系统,还用于将所述客户机操作系统的上下文的存储地址传递至所述虚拟机监视器;
所述虚拟机监视器,用于:
基于所述客户机操作系统的上下文的存储地址,以及所述客户机操作系统的上下文的存储地址与所述应用程序的上下文的存储地址之间的关系,确定所述应用程序的上下文的存储地址;
存储所述应用程序的上下文的存储地址,或者根据所述应用程序的上下文的存储地址,存储所述应用程序的上下文。
13.根据权利要求9至12任一所述的计算机,其特征在于,所述恢复信息为所述应用程序的上下文;所述虚拟机监视器,用于将所述应用程序的上下文存储至以下至少一种存储位置:
所述应用程序所属虚拟机的控制结构体;
所述应用程序所属虚拟处理器对应进程的管理结构体;
所述计算机的内存中除所述控制结构体和所述管理结构体之外的存储位置。
14.根据权利要13所述的计算机,其特征在于,所述应用程序的上下文存储在所述管理结构体中;所述计算机还包括:运行在所述硬件层上的主机操作系统,以及安装在所述主机操作系统中的调试工具;
所述调试工具,用于当检测到针对所述应用程序的调试指令时,基于所述应用程序的上下文在所述管理结构体中的存储地址,对所述应用程序进行调试。
15.根据权利要求9至14任一所述的计算机,其特征在于,
所述虚拟机监视器,用于将所述应用程序的上下文存储至对应的寄存器。
16.根据权利要求9至15任一所述的计算机,其特征在于,所述陷出请求由以下任一种事件触发:
所述应用程序触发的系统调用;
所述应用程序触发的异常;
所述计算机的硬件层上报的中断。
17.一种应用程序恢复运行的装置,应用于计算机,所述计算机包括:虚拟机监视器,运行于所述虚拟机监视器上的客户机操作系统,以及运行于所述客户机操作系统上的应用程序,其特征在于,所述装置包括:
部署在所述客户机操作系统内的中止模块,用于响应于陷出请求,中止运行所述应用程序并由所述客户机操作系统陷出至所述虚拟机监视器;
部署在所述虚拟机监视器内的存储模块,用于存储所述应用程序的恢复信息,所述恢复信息包括所述应用程序的上下文或所述上下文的存储地址;
部署在所述虚拟机监视器内的恢复模块,用于响应于所述应用程序的恢复请求,基于所述恢复信息恢复所述应用程序的上下文。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
部署在所述客户机操作系统内的获取模块,用于在陷出至所述虚拟机监视器之前,获取所述应用程序的恢复信息;
部署在所述客户机操作系统内的传递模块,用于将所述应用程序的恢复信息传递至所述虚拟机监视器。
19.一种计算机,其特征在于,所述计算机包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至8任一所述的应用程序恢复运行的方法。
20.一种计算机程序产品,其特征在于,所述计算机程序产品中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如权利要求1至8任一所述的应用程序恢复运行的方法。
CN201910049860.7A 2019-01-18 2019-01-18 应用程序恢复运行的方法、装置及计算机 Active CN111459623B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910049860.7A CN111459623B (zh) 2019-01-18 2019-01-18 应用程序恢复运行的方法、装置及计算机
PCT/CN2019/128560 WO2020147544A1 (zh) 2019-01-18 2019-12-26 应用程序恢复运行的方法、装置及计算机
EP19910376.3A EP3846028A4 (en) 2019-01-18 2019-12-26 APPLICATION EXECUTION RESUME METHOD AND DEVICE, AND COMPUTER
US17/369,546 US20210334125A1 (en) 2019-01-18 2021-07-07 Method and Apparatus for Resuming Running of Application, and Computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910049860.7A CN111459623B (zh) 2019-01-18 2019-01-18 应用程序恢复运行的方法、装置及计算机

Publications (2)

Publication Number Publication Date
CN111459623A true CN111459623A (zh) 2020-07-28
CN111459623B CN111459623B (zh) 2024-04-12

Family

ID=71613687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910049860.7A Active CN111459623B (zh) 2019-01-18 2019-01-18 应用程序恢复运行的方法、装置及计算机

Country Status (4)

Country Link
US (1) US20210334125A1 (zh)
EP (1) EP3846028A4 (zh)
CN (1) CN111459623B (zh)
WO (1) WO2020147544A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596921A (zh) * 2020-12-17 2021-04-02 海光信息技术股份有限公司 系统调用处理方法及处理装置
CN113238832A (zh) * 2021-05-20 2021-08-10 元心信息科技集团有限公司 虚拟处理器的调度方法、装置、设备及计算机存储介质
WO2022037725A1 (zh) * 2020-08-21 2022-02-24 荣耀终端有限公司 一种系统服务恢复方法、装置和电子设备
CN116795557A (zh) * 2022-03-15 2023-09-22 华为技术有限公司 通信方法、电子设备及可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115145688B (zh) * 2022-06-29 2023-06-16 科东(广州)软件科技有限公司 一种用户态虚拟机虚拟核的暂停方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120042034A1 (en) * 2010-08-13 2012-02-16 Vmware, Inc. Live migration of virtual machine during direct access to storage over sr iov adapter
US20140366017A1 (en) * 2013-06-05 2014-12-11 Cisco Technology, Inc. Techniques for Virtualization as Interprocess Communication, Synchronization and Code Obfuscation
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US20160253196A1 (en) * 2015-02-27 2016-09-01 Red Hat, Inc. Optimized extended context management for virtual machines
CN107239320A (zh) * 2017-04-11 2017-10-10 中国科学院信息工程研究所 基于虚拟化技术的实时保存客户机中进程状态的方法
CN107885748A (zh) * 2016-09-30 2018-04-06 华为技术有限公司 虚拟化实例的文件分层访问方法和装置
US20180276025A1 (en) * 2013-02-26 2018-09-27 Red Hat Israel, Ltd. Virtual machine suspension
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819676B2 (en) * 2007-10-30 2014-08-26 Vmware, Inc. Transparent memory-mapped emulation of I/O calls
JP2010211526A (ja) * 2009-03-10 2010-09-24 Fujitsu Ltd プログラム、コンピュータ及び制御方法
US20120089972A1 (en) * 2010-10-08 2012-04-12 Microsoft Corporation Image Based Servicing Of A Virtual Machine
US8639984B2 (en) * 2011-08-09 2014-01-28 International Business Machines Corporation Checkpoint debugging using mirrored virtual machines
US9996378B2 (en) * 2013-10-09 2018-06-12 International Business Machines Corporation Managing a check-point based high-availability backup virtual machine
US10698713B2 (en) * 2016-11-29 2020-06-30 Red Hat Israel, Ltd. Virtual processor state switching virtual machine functions

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120042034A1 (en) * 2010-08-13 2012-02-16 Vmware, Inc. Live migration of virtual machine during direct access to storage over sr iov adapter
US20180276025A1 (en) * 2013-02-26 2018-09-27 Red Hat Israel, Ltd. Virtual machine suspension
US20140366017A1 (en) * 2013-06-05 2014-12-11 Cisco Technology, Inc. Techniques for Virtualization as Interprocess Communication, Synchronization and Code Obfuscation
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
US20160253196A1 (en) * 2015-02-27 2016-09-01 Red Hat, Inc. Optimized extended context management for virtual machines
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
CN107885748A (zh) * 2016-09-30 2018-04-06 华为技术有限公司 虚拟化实例的文件分层访问方法和装置
CN107239320A (zh) * 2017-04-11 2017-10-10 中国科学院信息工程研究所 基于虚拟化技术的实时保存客户机中进程状态的方法
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022037725A1 (zh) * 2020-08-21 2022-02-24 荣耀终端有限公司 一种系统服务恢复方法、装置和电子设备
CN112596921A (zh) * 2020-12-17 2021-04-02 海光信息技术股份有限公司 系统调用处理方法及处理装置
CN113238832A (zh) * 2021-05-20 2021-08-10 元心信息科技集团有限公司 虚拟处理器的调度方法、装置、设备及计算机存储介质
CN116795557A (zh) * 2022-03-15 2023-09-22 华为技术有限公司 通信方法、电子设备及可读存储介质

Also Published As

Publication number Publication date
WO2020147544A1 (zh) 2020-07-23
EP3846028A4 (en) 2022-05-25
EP3846028A1 (en) 2021-07-07
US20210334125A1 (en) 2021-10-28
CN111459623B (zh) 2024-04-12

Similar Documents

Publication Publication Date Title
CN111459623B (zh) 应用程序恢复运行的方法、装置及计算机
US10678550B2 (en) Capturing snapshots of offload applications on many-core coprocessors
US7111086B1 (en) High-speed packet transfer in computer systems with multiple interfaces
US9946870B2 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment
US20090007112A1 (en) Method for controlling a virtual machine and a virtual machine system
EP1909177A2 (en) Enabling multiple instruction stream/multiple data stream extensions on microprocessors
WO2012100535A1 (zh) 超级内核组件的升级方法和计算机系统
JP2011103132A (ja) Os隔離シーケンサー上のユーザーレベルのマルチスレッド化をエミュレートする機構
US9417973B2 (en) Apparatus and method for fault recovery
CN112199165B (zh) 用于热升级安全容器的虚拟机监控程序的方法及装置
CN114741233A (zh) 快速启动方法
WO2011114476A1 (ja) マルチコアプロセッサシステム、通知プログラム、および通知方法
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
US9535772B2 (en) Creating a communication channel between different privilege levels using wait-for-event instruction in systems operable at multiple levels hierarchical privilege levels
US10127076B1 (en) Low latency thread context caching
KR101662030B1 (ko) 태스크 이동 시스템 및 그 방법
CN111506395B (zh) 一种混合仿真的全数字虚拟运行环境的实现方法及装置
JP4978914B2 (ja) マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
JP2006039763A (ja) ゲストosデバッグ支援方法及び仮想計算機マネージャ
WO2023169289A1 (zh) 一种进程的执行状态切换方法及装置
JPWO2020021745A1 (ja) 割込み処理方法、コンピュータシステムおよびプログラム
Hirofuchi et al. Postcopy live migration with guest-cooperative page faults
US11640246B2 (en) Information processing device, control method, and computer-readable recording medium storing control program
US11500668B2 (en) Page fault support for virtual machine network accelerators
JP5713089B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法

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