CN114641757A - 保存并还原应用内容的虚拟机状态和硬件状态 - Google Patents

保存并还原应用内容的虚拟机状态和硬件状态 Download PDF

Info

Publication number
CN114641757A
CN114641757A CN202080077321.5A CN202080077321A CN114641757A CN 114641757 A CN114641757 A CN 114641757A CN 202080077321 A CN202080077321 A CN 202080077321A CN 114641757 A CN114641757 A CN 114641757A
Authority
CN
China
Prior art keywords
application
state
memory
virtual machine
pages
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
CN202080077321.5A
Other languages
English (en)
Other versions
CN114641757B (zh
Inventor
M·J·麦克纳尔蒂
B·C·豪格利
P·J·沃尔夫泰希
T·法里格
D·N·柯特勒
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114641757A publication Critical patent/CN114641757A/zh
Application granted granted Critical
Publication of CN114641757B publication Critical patent/CN114641757B/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/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/532Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing using secure communication, e.g. by encryption, authentication
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • A63F2300/554Game data structure by saving game or status data
    • 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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及用于保存并还原正由计算机设备上的用户在虚拟机(VM)上活跃地执行的应用的物理硬件状态和虚拟机状态的设备、方法和计算机可读介质。这些设备、方法和计算机可读介质可允许用户挂起应用会话的当前状态并将VM和存储器状态保存至持久存储,并且稍后通过将该状态读回到存储器中并还原VM状态来恢复所保存的应用会话的执行。

Description

保存并还原应用内容的虚拟机状态和硬件状态
背景技术
如今,数字游戏可包括大量数据,以使得当用户启动要玩的游戏时,可能会为该游戏加载大量内容。因此,从启动游戏到准备玩游戏可能花费几分钟。加载游戏的延迟可能会妨碍用户玩游戏,或者用户可能会选择在游戏启动时参与次要活动。
另外,用户具有有限的用于暂停和/或保存游戏的选项。游戏控制台如今可以休眠或暂停处于活跃游戏过程中的游戏。然而,游戏控制台必须在休眠状态期间维持电源以使得游戏能被持久地存储在存储器中并自己保持存在(rehydrate)以允许用户继续玩同一游戏。由此,如果控制台断电和/或在此期间另一用户玩过该游戏或不同游戏,则所挂起的游戏不可重启。
存在向终端用户提供游戏内容的这些和其他问题。
发明内容
一个示例实现涉及一种方法。该方法可包括向在应用虚拟机上执行的应用发送消息以便为保存操作做好准备。该方法可包括处理应用存储器的内部状态以确定数据页或图形页中的正用于该应用的至少一个或多个数据页或图形页。该方法可包括指示对该应用存储器的处理以确定代码页或签名页中的正用于该应用的至少一个或多个代码页或签名页,并将代码页或签名页中的该至少一个或多个代码页或签名页转换成已知存储器别名。该方法可包括保存该应用的应用存储器状态,其中该应用存储器状态包括数据页或图形页中的该至少一个或多个数据页或图形页以及具有代码页或签名页中的该至少一个代码页或签名页的已知存储器别名。
另一示例实现涉及一种计算机设备。该计算机设备可包括用以存储数据和指令的至少一个存储器、与该至少一个存储器通信的至少一个处理器、以及具有与该计算机设备通信的应用的应用虚拟机,其中该至少一个处理器可操作以用于:向在应用虚拟机上执行的应用发送消息以便为保存操作做好准备;处理应用存储器的内部状态以确定数据页或图形页中的正用于该应用的至少一个或多个数据页或图形页;指示对该应用存储器的处理以确定代码页或签名页中的正用于该应用的至少一个或多个代码页或签名页,并将代码页或签名页中的该至少一个或多个代码页或签名页转换成已知存储器别名;以及保存该应用的应用存储器状态,其中该应用存储器状态包括数据页或图形页中的该至少一个或多个数据页或图形页以及具有代码页或签名页中的该至少一个或多个代码页或签名页的已知存储器别名。
另一示例实现涉及一种存储可由计算机设备执行的指令的计算机可读介质。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:向在应用虚拟机上执行的应用发送消息以便为保存操作做好准备。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:处理应用存储器的内部状态以确定数据页或图形页中的正用于该应用的至少一个或多个数据页或图形页。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:指示对该应用存储器的处理以确定代码页或签名页中的正用于该应用的至少一个或多个代码页或签名页,并将代码页或签名页中的该至少一个或多个代码页或签名页转换成已知存储器别名。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:保存该应用的应用存储器状态,其中该应用存储器状态包括数据页或图形页中的该至少一个或多个数据页或图形页以及具有代码页或签名页中的该至少一个或多个代码页或签名页的已知存储器别名。
另一示例实现涉及一种方法。该方法可包括通过读取应用的先前存储的应用存储器内容来发起应用虚拟机还原操作。该方法可包括通过指示对敏感应用内容的重新创建来还原管理程序状态。该方法可包括从与该应用相关联的多个虚拟机还原每个输入设备或输出设备的主机状态。该方法可包括从与该应用相关联的该多个虚拟机还原每个输入设备或输出设备的系统状态。该方法可包括恢复应用虚拟机。该方法可包括向该应用发送消息以恢复。
另一示例实现涉及一种计算机设备。该计算机设备可包括用以存储数据和指令的至少一个存储器、与该至少一个存储器通信的至少一个处理器、以及具有与该计算机设备通信的应用的应用虚拟机,其中该至少一个处理器可操作用于:通过读取应用的先前存储的应用存储器内容来发起应用虚拟机还原操作;通过指示对敏感应用内容的重新创建来还原管理程序状态;从与该应用相关联的多个虚拟机还原每个输入设备或输出设备的主机状态;从与该应用相关联的该多个虚拟机还原每个输入设备或输出设备的系统状态;恢复该应用虚拟机;以及向该应用发送消息以恢复。
另一示例实现涉及一种存储可由计算机设备执行的指令的计算机可读介质。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:通过读取应用的先前存储的应用存储器内容来发起应用虚拟机还原操作。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:通过指示对敏感应用内容的重新创建来还原管理程序状态。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:从与该应用相关联的多个虚拟机还原每个输入设备或输出设备的主机状态。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:从与该应用相关联的该多个虚拟机还原每个输入设备或输出设备的系统状态。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:恢复该应用虚拟机。该计算机可读介质可包括用于使该计算机设备执行以下操作的至少一条指令:向该应用发送消息以恢复。
提供本公开内容以便以简化的形式介绍以下在具体实施方式中还描述的概念的选集。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,亦非旨在用于帮助确定所要求保护的主题的范围。
附加特征和优点将在以下描述中阐述,且部分会从描述中显而易见,或者可以通过实践本文中的示教来习得。本公开的特征和优点可借助于在所附权利要求书中特别指出的仪器和组合来实现和获得。本公开的特征将从以下描述和所附权利要求书中变得更完全的显见,或者可以通过如下文所阐述的本公开的实践来习得。
附图简述
在附图中:
图1是根据本公开的实现的示例计算机设备的示意性框图。
图2是根据本公开的实现的供与计算机设备联用的应用存储器的示例的示意性框图。
图3是根据本公开的实现的供与计算机设备联用的系统存储的示例的示意性框图。
图4是根据本公开的实现的用于保存在虚拟机上执行的应用的示例方法的流程图。
图5是根据本公开的实现的用于还原虚拟机上的应用的示例方法的流程图。
图6是根据本公开的实现的显示应用的先前保存的状态的示例用户界面屏幕;以及
图7示出了可被包括在计算机系统内的某些组件。
详细描述
本公开涉及用于保存并还原正被使用的应用的物理硬件状态和虚拟机(VM)状态的设备和方法。一个示例应用可包括正由用户在计算机设备(诸如游戏控制台)上活跃地玩的数字游戏。本公开可保存正在该计算机设备上被使用的任何数量的应用(最多n个应用,其中n是整数)的状态。所保存的应用状态可以与用户相关联以使得用户不可启动针对另一用户的保存的状态。本公开可允许应用恢复,而不管在此期间使用的其他应用的数量。一个示例用例可包括在返回到所保存的游戏之前在此期间玩了若干个游戏。
另外,为了保存应用的状态,本公开可保存正被使用的应用的整个虚拟机状态。在一实现中,多个虚拟机可用于该应用。例如,主机虚拟机、应用虚拟机和系统虚拟机可用于该应用。通过将多个虚拟机用于该应用,可以为应用内容提供额外的安全性和功能性。本公开可保存正用于该应用的每个虚拟机的主机状态、硬件状态和/或系统状态。另外,本公开可保存正用于该应用的虚拟机的管理程序状态。通过保存整个虚拟机状态,本公开能够在恢复应用时为正用于该应用的每个虚拟机重构和/或重建管理程序状态、主机服务、硬件状态和/或系统服务。
本公开可保存并还原物理硬件状态和VM状态,而不管计算机设备的电源状态。由此,保存并还原物理硬件状态和VM状态可以是非易失性的,并且可以在系统更新和/或控制台重启后继续存在。
本公开还可减少应用的加载时间以允许快速返回到应用,同时维持该应用的总体当前状态。例如,当应用是游戏时,用户可以在该用户在稍后时刻、日期或游戏会话返回到该游戏时快速启动并恢复玩该游戏。用户还可以能够返回到他们离开游戏会话时的确切游戏状态。由此,用户可以直接返回到他们在保存或退出游戏时离开的点,或者从该游戏的排除游戏冷启动加载过程(例如,标志检阅、不可跳过的开头影片、初始加载等)的菜单或子菜单系统开始。另外,本公开可允许用户通过保存当前游戏并启动或还原下一游戏来在计算机设备上的游戏之间快速切换。
在一实现中,计算机设备可包括具有存储器区域的安全虚拟机,该安全虚拟机针对不同存储器区域使用特殊加密密钥,即存储器别名。不同的应用内容可被保存在不同的存储器别名中。应用内容(诸如但不限于游戏数据页、可执行代码页、图形页和/或签名页)可被存储在应用虚拟机上的不同存储器别名中。通过使用不同存储器别名来加密不同应用内容,应用内容可被隔离,这为应用内容提供额外的安全性。此外,通过使用多个虚拟机,可以为应用内容提供额外的安全性和功能性。
本公开可跟踪每个存储器页并且可以为应用所使用的每个存储器页确定合适的加密密钥以使得存储器页可由主机虚拟机上的主机操作系统恰当地读取并被保存到计算机设备上的持久状态文件。用于虚拟机的典型保存和还原方法可能由于虚拟机中所使用的安全存储器别名化而不可用于本公开。
本公开可允许用户控制应用是否使用先前保存的状态来恢复。例如,当应用是游戏时,用户可能想要重新玩一游戏关卡或重新开始游戏。由此,用户可能想要强制游戏重新启动,即使该游戏具有先前保存的状态选项。另外,用户可能想要在不保存游戏的当前状态的情况下退出游戏。
本公开可由应用开发者用来帮助标识并重现应用内的行为。例如,当开发者正在重现漏洞时,开发者可能想要在该漏洞被观察到之前保存应用的状态。另外,开发者可能想要使用所保存的应用状态的副本来与另一开发者共享该漏洞的重演。
在一实现中,用户可用优先级来指定应用。例如,用户可将一个或多个应用标识为相对于其他应用的优先级值而言是高优先级的。当用户将一应用指定为高优先级时,本公开可保留高优先级应用的保存状态并且可以不允许当在计算机设备上保存其他应用时覆盖所保存的状态。如果计算机设备上的系统存储已满或者空间可能不足,则较低优先级应用可不被保存以确保较高优先级应用被保存。
由此,本公开包括多个实际应用,该多个实际应用提供与向用户提供游戏内容相关联的益处和/或解决与此相关联的问题,这通过允许用户挂起应用会话的当前状态并将VM和存储器状态保存到持久存储,并且稍后通过将该状态读回到存储器中并还原VM状态来恢复所保存的应用会话的执行。
现在参照图1,示出了用于保存并恢复在应用虚拟机106上执行的应用10的示例计算机设备102,该应用虚拟机106在计算机设备102上操作和/或与计算机设备102通信。
计算机设备102可包括多个虚拟机,诸如但不限于主机虚拟机104、应用虚拟机106和系统虚拟机108。应用虚拟机106可具有用户可使用的一个或多个应用10。一个示例应用10可包括正由用户在计算机设备102上活跃地玩或者从远程计算机或服务器流传输到计算机设备102的数字游戏。应用虚拟机106可访问来自计算机设备102的应用10。例如,应用可被存储在计算机设备102上。另外,应用虚拟机106可访问来自与计算机设备102通信的远程服务器或计算设备的应用10。例如,应用虚拟机106可将应用10从远程服务器或计算设备流传输至计算机设备102。用户可能想要停止或以其他方式暂停应用10并且稍后恢复使用应用10。主机虚拟机104可包括主机操作系统16和VM管理器18,该VM管理器18管理虚拟机(例如,主机虚拟机104、应用虚拟机106和系统虚拟机108)的存储器。系统虚拟机108可包括与应用10相关联的任何社交活动20和/或主机系统由于安全性分层而未提供的其他功能。
计算机设备102可以是与显示设备通信的视频游戏控制台。计算机设备102还可以指各种类型的计算设备。例如,计算机设备102可包括移动设备,诸如移动电话、智能电话、个人数字助理(PDA)、平板或膝上型计算机。另外地或另选地,计算机设备102可包括一个或多个非移动设备,诸如台式计算机、服务器设备或其他非便携式设备。在一个或多个实现中,计算机设备102指的是与显示设备通信的专用游戏设备(例如,手持式游戏设备)。在一个或多个实现中,计算机设备102指的是与远程服务器或计算设备通信的游戏控制台。在一个或多个实现中,计算机设备102在其上包括图形用户界面(例如,移动设备的屏幕)。另外地或另选地,计算机设备102可被通信地耦合(例如,有线或无线)到其上具有用于提供游戏内容显示的图形用户界面的显示设备。计算机设备102可包括以下参照图7描述的特征和功能。
多个虚拟机104、106、108可以与在计算机设备102上操作的管理程序110组件通信。VM管理器18可以指示管理程序110或以其他方式与管理程序110通信以向应用虚拟机106发送消息,该消息指示应用虚拟机106以一致的方式创建应用存储器状态12并将该应用存储器状态12发回到主机虚拟机104。VM管理器18还可以向应用虚拟机106发送消息以暂停或以其他方式停止应用10(图1)的执行。挂起应用虚拟机106可将该虚拟机106置于其中该应用虚拟机106的处理被暂停或停止的安全状态。例如,VM管理器18可响应于接收到保存应用10、暂停应用10或退出应用10的请求而挂起应用虚拟机106。
VM管理器18可遍历用于该应用虚拟机106的包括应用内容的层次结构的存储器跟踪表或数据库。该存储器跟踪表可包括用于应用虚拟机106的存储器主机虚拟机104控件。例如,主机虚拟机104可控制应用内容的子集。由主机虚拟机104控制的该应用内容的子集可包括例如用于应用10的数据页和/或图形页。例如,与应用虚拟机106通信的主机虚拟机104可包括具有用于应用虚拟机106的存储器跟踪表的VM管理器18。存储器跟踪表还可标识哪些应用内容当前正被应用10使用。
管理程序110还可遍历用于应用虚拟机106的存储器跟踪表,该存储器跟踪表包括由管理程序110控制的应用内容的应用内容层次结构。管理程序110可控制该应用内容的子集。例如,管理程序110可控制用于应用10的代码页和/或签名页。代码页可包括包含将在处理器上执行的用于应用虚拟机106的可执行指令的页。另外,签名页可用于验证代码页的有效性。管理程序110可以从应用存储器14中提取信息以将来自与正用于应用10的代码页和/或签名页相关联的存储器别名子集的经加密应用内容恰当地变换成可被主机操作系统16读取的敏感应用状态22。例如,该存储器别名子集可包括存储代码页和/或签名页的存储器别名。
管理程序110可将所标识的存储器别名(例如,用于代码页和签名页的存储器别名子集)转换成敏感应用状态22以使得主机操作系统16可读取原始形式的应用内容和/或应用存储器状态12。该变换过程可包括使用用于所标识的存储器别名中的每一者的恰当加密密钥来解密应用内容。管理程序110还可以对完整的管理程序状态35和/或可能的中间阶段生成散列以使得管理程序110可验证所还原的虚拟机和/或所还原的虚拟机的管理程序状态35的完整性。
VM管理器18可将应用存储器状态12保存在计算机设备102上的系统存储30中。加密过程可以在存储应用存储器状态12之前发生。例如,VM管理器18和/或管理程序110可以在将应用存储器状态12存储在系统存储30中之前加密应用存储器状态12。另外,VM管理器18可将应用存储器状态12、一个或多个主机状态31、正由应用10使用的一个或多个系统状态34、正由应用10使用的一个或多个硬件状态32保存在系统存储30中和/或将管理程序状态35保存在系统存储30中。
主机虚拟机104还可包括可用于管理计算机设备102的物理硬件状态和VM状态的主机操作系统16。例如,主机操作系统16可包括VM管理器18和/或VM输入/输出(I/O)子系统28。VM管理器18可包括例如存储器管理器24和/或执行管理器26。VM管理器18和/或VM I/O子系统28可以与管理程序110通信以保存和/或还原计算机设备102的物理硬件状态和/或VM状态。
由此,VM管理器18可保存正与应用10相结合地使用的多个虚拟机(例如,主机虚拟机104、应用虚拟机106和/或系统虚拟机108)的整个虚拟机状态。通过保存整个虚拟机状态,该多个虚拟机中的每一者的管理程序状态、主机服务、硬件状态和/或系统服务的状态可以在恢复应用10时被重建。
由此,计算机设备102可用于挂起应用会话的当前状态并将VM和存储器状态保存至持久存储,并且稍后通过将该状态读回到存储器中并还原VM状态来恢复所保存的应用会话的执行。
现在参照图2,示出了供主机虚拟机104和管理程序110使用的示例应用存储器14。应用存储器14可包括各种类型的内容,其中每种类型的内容可潜在地使用单独的存储器别名,并因此可使用单独的加密。例如,应用存储器14可以是针对不同的存储器别名202、204、206、208使用特殊加密密钥210、212、214、216的安全存储器区域。应用存储器可包括多个存储器别名202、204、206、208(最多n个存储器别名,其中n是整数)。不同的经加密应用内容218、220、222、224可被保存在不同的存储器别名202、204、206、208中。例如,游戏数据页可被保存在别名202中,图形页可被保存在别名204中,可执行代码页可被保存在别名206中,并且签名页可被存储在存储器别名208中。通过使用不同的存储器别名202、204、206、208来加密不同的应用内容218、220、222、224,应用内容可被隔离,这为应用内容提供额外的安全性和/或抵抗来自处理器外部的硬件攻击的额外的强制安全性。
主机虚拟机104可控制存储器别名202、204、206、208的子集。例如,主机虚拟机104可控制存储器别名202、204(与游戏数据页和图形页相关联的存储器别名)。管理程序110可控制存储器别名202、204、206、208的不同子集。例如,管理程序110可控制存储器别名206、208(与代码页和签名页相关联的存储器别名)。由此,管理程序110可控制具有诸如代码页或签名页等敏感数据的存储器别名,而主机虚拟机104可控制用于原始数据或图形内容的其他存储器别名。
管理程序110可解密来自管理程序110控制的存储器别名206、208的子集的经加密应用内容222、224。例如,该存储器别名的子集可包括存储器别名206、208。针对存储器别名206、208的子集中的每一者使用合适的加密密钥214、216,管理程序110可将来自存储器别名206、208的子集的经加密应用内容222、224转换成具有主机操作系统16(图1)可理解的形式的敏感应用状态22信息。
现在参照图3,示出了示例系统存储30,该系统存储30供与计算机设备102(图1)一起用于保存并还原正由用户在计算机设备102上活跃地使用的数字应用10的物理硬件状态和VM状态。
系统存储30可包括多个应用302、304(最多x个应用,其中x是整数)的所保存的物理硬件状态和VM状态。另外,对于每个应用302、304,多个用户(最多y个用户,其中y是整数)可使用应用302、304。由此,系统存储30可以为使用应用302、304的每个用户308、310、314、316保存物理硬件状态和VM状态。
例如,第一应用302可具有正在计算机设备102上使用应用302的两个用户308、310。用户可以在不同时间访问应用302。用户308可具有被存储在系统存储30中的用于应用302的应用存储器状态320、主机状态322、(诸)硬件状态324、(诸)系统状态326和管理程序状态327。而用户310可具有为应用302存储的不同的应用存储器状态328、主机应用状态330、(诸)硬件状态332、(诸)系统状态334和管理程序状态335。
另外,第二应用304也可由两个不同的用户314、316在计算机设备102上使用。用户314、316可以在不同时间使用应用304。另外,用户可以是使用应用302的相同用户或者可以是不同用户。用户314可具有被存储在系统存储30中的用于应用304的应用存储器状态336、主机状态338、(诸)硬件状态340、(诸)系统状态342和管理程序状态343。而用户316可具有为应用304存储的不同的应用存储器状态344、主机应用状态346、(诸)硬件状态348、(诸)系统状态350和管理程序状态347。
由此,系统存储30可将数字应用的物理硬件状态和VM状态与个体用户相关联。由此防止用户访问针对应用的其他用户保存的状态。
现在参照图4,示例方法400可由计算机设备102(图1)用来保存在应用虚拟机106(图1)上执行的应用10(图1)的应用存储器状态12(图1)。方法400的动作以下参照图1-3的架构来讨论。
在402,方法400可包括向应用虚拟机发送消息以便为保存操作做好准备。VM管理器18可以向应用虚拟机106发送消息或其他通信以使得应用虚拟机106上的输入和/或输出设备为所挂起的状态做好准备(例如,停止应用虚拟机106上的处理)。VM管理器18还可向应用虚拟机106上的应用10发送消息或其他通信以便为保存操作做好准备。
在404,方法400可包括发送消息以指示应用虚拟机挂起处理。VM管理器18可以向管理程序发送消息以指示管理程序110挂起应用虚拟机106。管理程序110可以向应用虚拟机106发送消息或其他通信以通过挂起每个虚拟处理器来暂停或以其他方式停止应用10在应用虚拟机106上的执行。挂起应用虚拟机106可将该虚拟机106置于其中该应用虚拟机106的处理被暂停或停止的安全状态。例如,VM管理器18可响应于接收到保存应用10、暂停应用10或退出应用10的请求而挂起应用虚拟机106。
在406,方法400可包括处理应用存储器的内部状态以确定用于该应用的数据页和图形页。用于应用10的应用存储器14可包括多个存储器别名,其中每个存储器别名包括供与应用10联用的经加密应用内容。每个存储器别名可包括不同的经加密应用内容。经加密应用内容可包括但不限于用于应用10的可执行代码页、用于应用10的数据页、用于应用10的图形页和/或用于应用10的签名页。另外,每个存储器别名可以使用不同的加密密钥来加密应用内容。由此,同一应用的不同应用内容可使用不同的加密密钥来被存储在不同的存储器别名中。
例如,在第一存储器别名中,用于应用10的可执行代码页可被加密,而用于应用10的图形页可以在第二存储器别名中被加密,并且用于应用10的签名页可以在第三存储器别名中被加密。另外,用于应用10的数据页可以在第四存储器别名中被加密。通过经由将应用内容保存在不同存储器别名中来隔离应用内容,可提供针对应用内容的额外的安全性。另外,可通过使用不同存储器别名加密不同应用内容来提供额外的安全性以强制抵抗来自处理器外部的硬件攻击。
VM管理器18可通过遍历用于应用虚拟机106的存储器跟踪表或数据库来处理由应用虚拟机106创建的合适的应用存储器状态12,该存储器跟踪表或数据库包括每个应用10的应用内容的层次结构。例如,与应用虚拟机106通信的主机虚拟机104可包括具有用于应用虚拟机106的存储器跟踪表的VM管理器18。该存储器跟踪表可包括用于应用虚拟机106的所有存储器主机虚拟机104控件。例如,主机虚拟机104可控制应用内容子集(例如,用于应用10的数据页和图形页)。由此,多个应用10中的每一者的应用内容子集可由VM管理器18来控制。存储器跟踪表还可标识哪些应用内容当前正被应用10使用。
VM管理器18可查阅页表并确定哪些数据页和/或图形页当前正供应用10使用以及应用存储器14中的用于这些数据页和/或图形页的相关联的存储器别名。
在408,方法400可包括为每个输入或输出设备保存单独的主机状态。VM管理器18可以为正由应用10使用的每个输入或输出设备保存单独的主机状态。例如,主机状态可包括正由应用10使用的硬件状态32。硬件状态32可包括但不限于音频硬件、存储和/或图形状态。
在410,方法400可包括为每个输入或输出设备保存单独的系统状态。VM管理器18可以在系统存储30中为正由应用10使用的每个输入或输出设备保存单独的系统状态34。一个或多个系统状态34可包括但不限于输入状态、视频状态、存储状态和/或联网状态。
在412,方法400可包括保存管理程序状态。VM管理器18可指示管理程序110保存与应用10相关联的管理程序状态35。例如,管理程序状态35可标识当前正由应用10使用的代码和/或签名并且可保存当前正由应用10使用的代码和/或签名页。管理程序35还可包含由管理程序110用来虚拟化计算机系统的页表信息、虚拟处理器信息、中断控制器信息、定时器、内部状态和/或其他支持状态。
在416,方法400可包括发送消息以指示管理程序处理应用存储器并将代码页和签名页转换成已知存储器别名。代码页可包括包含将在处理器上执行的用于应用虚拟机106的可执行指令的页。另外,签名页可用于验证代码页的有效性。管理程序110可以从应用存储器14中提取信息并恰当地变换来自正用于应用10的存储器别名子集中的每一者的管理程序110可控制的经加密应用内容。例如,管理程序110可控制用于应用10的代码页和/或签名页。由此,VM管理器18可能无法访问用于应用10的代码页和/或签名页。
管理程序110可处理包括用于应用虚拟机106的存储器管理程序110控件的存储器跟踪表或数据库。该存储器跟踪表或数据库可标识哪些代码页和/或签名页当前正用于应用10。管理程序110可将所标识的存储器别名和来自所标识的存储器别名的敏感应用状态22转换成已知存储器别名以使得主机虚拟机104上的主机操作系统16可读取原始形式的敏感应用状态22。用于敏感应用状态22的变换过程可包括使用用于每个存储器别名的恰当加密密钥来解密应用内容。该变换过程还可包括管理程序110对完整的管理程序状态35和/或可能的中间阶段生成散列以使得管理程序110可验证所还原的虚拟机和/或所还原的虚拟机的管理程序状态35的完整性。
在418,方法400可包括保存应用存储器状态。VM管理器18可将经组合的应用状态保存在计算机设备102上的系统存储30中。VM管理器18可选择性地从正用于应用10的恰当存储器别名中进行读取并将来自这些存储器别名的应用存储器状态12保存到系统存储30上的持久位置。例如,VM管理器18可保存来自所标识的存储器别名的针对正用于应用10的数据页和/或图形页的应用存储器状态12。另外,VM管理器18可保存来自管理程序110的针对正用于应用10的代码页和/或签名页的经转换的敏感应用状态22。在一实现中,VM管理器18可以在存储应用存储器状态12之前对敏感应用状态22执行加密。由此,VM管理器18可将经组合的应用存储器状态12保存到系统存储30。
方法400可用于保存来自由应用10使用的安全存储器的应用存储器状态12。另外,方法400可用于通过将向应用10提供服务的每个组件的个体状态保存在系统存储30上的持久位置中来保存该应用的完整的虚拟机状态。
现在参照图5,示例方法500可由计算机设备102(图1)用来恢复在应用虚拟机106(图1)上执行的所保存的应用10。方法500的动作以下参照图1-3的架构来讨论。
在502,方法500可包括通过读取先前存储的应用存储器内容来发起应用虚拟机还原操作。VM管理器18可发起应用虚拟机106还原操作以恢复一个或多个应用10在应用虚拟机106上的执行。VM管理器18可响应于接收到恢复应用10的请求而发起应用虚拟机106还原操作。例如,用户可以在应用虚拟机106上启动应用10。
VM管理器18可确定是否可以从先前保存的应用存储器状态12恢复应用10。例如,用户可选择加载应用10,而不使用所保存的应用存储器状态12和/或应用10可能不具有所保存的应用存储器状态12。由此,VM管理器18可指示应用虚拟机106在不使用先前存储的应用存储器状态12的情况下加载应用10。
当VM管理器18确定要从先前保存的应用存储器状态12恢复应用10时,VM管理器18可以从系统存储30读取先前存储的应用存储器状态12。例如,VM管理器18可以从应用存储器状态12中读取数据页和/或图形页并且可将经加密应用内容映射回到用于这些数据页和/或图形页的原始存储器别名。
在504,方法500可包括通过指示管理程序重新创建先前的敏感应用内容来还原管理程序状态。VM管理器18可指示管理程序110通过重新创建应用10的先前的敏感应用状态22来还原管理程序状态35。例如,管理程序110可访问来自所保存的应用存储器状态12的在该应用存储器状态12被保存时正由应用10使用的代码页和/或签名页。另外,管理程序110可访问在应用存储器状态12被保存时正被使用的任何页表信息、虚拟处理器信息、中断控制器信息、定时器、内部状态和/或其他支持状态。管理程序110可将敏感应用状态22(例如,代码页和/或签名页)转换回到原始经加密应用内容并将该经加密应用内容映射回到用于代码页和/或签名页的原始存储器别名。管理程序110可通过对照用于各种状态的先前计算出的散列进行校验来验证所还原的管理程序状态35的完整性。
在506,方法500可包括还原每个输入设备或输出设备的主机状态。主机操作系统112中的执行管理器26可还原一个或多个已保存硬件状态32以使得由应用10使用的硬件组件可恢复为应用10被保存之前的那样。已保存硬件状态32可包括但不限于音频硬件、存储和/或图形状态。执行管理器26可以从正由应用10使用的一个或多个虚拟机还原已保存硬件状态32。另外,如果在创建已保存硬件状态32与启动应用10之间任何硬件设置改变,则新硬件设置可由应用10使用。
当应用10使用先前保存的状态来启动时,用于该应用的音频设置可被还原以使得音频如用户所预期的那样工作。如果在创建已保存硬件状态32与启动应用10之间音频设置已改变,则新音频设置可由应用10使用。例如,如果先前用耳机玩游戏并且耳机不再存在,则当前音频输出设置可由游戏使用。
用于应用10的图形也可被还原以使得图形对应用10起作用。例如,图形可以从其中游戏停止的场景中还原以使得用户可恢复在其中游戏被保存的场景中玩游戏。也可为游戏还原其他媒体和剪辑场景状态。
在508,方法500可包括还原每个输入设备或输出设备的系统状态。主机操作系统112中的执行管理器26可还原一个或多个已保存系统状态34以使得由应用10使用的系统设置可恢复为应用10被保存之前的那样。已保存系统状态34可包括但不限于输入状态、视频状态、存储状态和/或联网状态。执行管理器26可以从正由应用10使用的一个或多个虚拟机还原已保存系统状态34。另外,如果在创建已保存系统状态34与启动应用10之间任何系统设置改变,则新系统设置可由应用10使用。
联网设置也可被重建以使得应用10可以在联网起作用的情况下启动。如果网络连接自从先前使用该应用以来已改变(例如,不同的Wi-Fi网络或从有线切换至Wi-Fi),则应用10可使用先前保存的状态来在具有新网络连接的情况下恢复和重建网络连通性。
另外,可以为应用10还原输入以使得输入可以如用户所预期的那样工作。如果在创建已保存硬件状态32与启动应用10之间输入改变,则新输入设置可由应用10在应用10恢复时使用。例如,如果控制器自从硬件状态32被保存以来已改变,则新控制器可由应用10使用。另一示例可包括当存在当硬件状态32被保存时不存在的附加输入设备或者先前连接的输入不再存在时,不同的输入设备可由应用10使用。另一示例可包括如果输入设备的连接在硬件状态32被保存后改变(例如,连接先前是无线进行的,但现在使用USB线缆连接到计算机设备102),则输入设备的不同连接可由应用10使用。
用于应用10的视频配置也可被还原。例如,先前保存的分辨率、参考速率、标准动态范围(SDR)或高动态范围(HDR)设置可被还原以使得应用10可以在视频起作用的情况下启动。
在510,方法500可包括恢复应用虚拟机。VM管理器18可以向管理程序110发送消息以指示管理程序110恢复应用虚拟机106上的处理。
在512,方法500可包括向该应用发送消息以恢复。VM管理器18可以向该应用或应用10发送消息以恢复处理。例如,该应用或应用可以从先前保存的应用存储器状态12中恢复。
方法500可用于通过还原先前保存的应用存储器状态12以及向应用提供服务的每个组件的各个状态来还原诸应用的完整状态。由此,方法500可用于还原用于应用的所有虚拟机的状态。方法500可用于通过以下操作来恢复应用:直接返回到用户在该用户保存或退出该应用时离开的点,或者从该应用的排除用于该应用的冷启动加载过程的菜单或子菜单系统启动该应用。
现在参照图6,示出了根据一实现的用于计算机设备102(图1)的示例图形用户界面602。例如,图形用户界面602可提供计算机设备102上的一个或多个应用10的列举604。列举604可指示一个或多个应用10是否允许用户通过返回到先前保存的应用存储器状态12(图1)来恢复应用10。使用先前保存的存储器状态来恢复应用可允许用户直接返回到他们在保存或退出该应用时离开的点或者从排除用于应用10的冷启动加载过程(例如,标志检阅、不可跳过的开头影片、初始加载等)的菜单或子菜单系统启动该应用。由此,当用户在计算机设备102上浏览应用时,用户可以能够标识应用是否可使用先前保存的状态来启动。
可经由该图形用户界面显示的通信610可读作“使用已保存状态来启动该应用?”,并且可选选项608可被呈现在该图形用户界面上以允许用户选择应用10的先前保存的状态。计算机设备102可响应于检测到对可选选项608的选择而执行多个动作以使用先前保存的状态来恢复应用10。计算机设备102可还原先前保存的应用存储器状态12、系统状态34和/或硬件状态32并恢复应用10的执行以使得应用10可以就像应用在应用10被保存之前那样运行。
图7示出了可被包括在计算机系统700内的某些组件。一个或多个计算机系统700可被用于实现本文描述的各种设备、组件和系统。
计算机系统700包括处理器701。处理器701可以是通用单芯片或多芯片微处理器(例如,高级RISC(精简指令集计算机)机器(ARM))、专用微处理器(例如,数字信号处理器(DSP))、微控制器、可编程门阵列等。处理器701可被称为中央处理单元(CPU)。尽管在图7的计算机系统701中仅示出了单个处理器700,但是在替换配置中,处理器(例如,ARM和DSP)的组合可被使用。
计算机系统700还包括与处理器701电子通信的存储器703。存储器703可以是能够存储电子信息的任何电子组件。例如,存储器703可被具体化为随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光存储介质、RAM中的闪存设备、包括在处理器中的板载存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)存储器、寄存器等,包括其组合。
指令705和数据707可被存储在存储器703中。指令705可由处理器701执行以实现本文公开的功能中的一些或全部。执行指令705可以涉及使用存储在存储器703中的数据707。本文描述的模块和组件的各种示例的任何一者都可部分地或全部地实现为存储在存储器703中并由处理器701执行的指令705。本文描述的数据的各种示例中的任何示例都可以在存储在存储器703中并在处理器701执行指令705期间使用的数据707中。
计算机系统700还可包括用于与其他电子设备通信的一个或多个通信接口709。通信接口709可以基于有线通信技术、无线通信技术或两者。通信接口709的一些示例包括通用串行总线(USB)、以太网适配器、根据电气和电子工程师协会(IEEE)802.11无线通信协议操作的无线适配器、
Figure BDA0003630101420000171
无线通信适配器和红外(IR)通信端口。
计算机系统700还可包括一个或多个输入设备711和一个或多个输出设备713。输入设备711的一些示例包括键盘、鼠标、话筒、遥控设备、按钮、操纵杆、轨迹球、触摸板和光笔。输出设备713的一些示例包括扬声器和打印机。通常包括在计算机系统700中的一种特定类型的输出设备是显示设备715。与本文公开的各实施例一起使用的显示设备715可利用任何合适的图像投影技术,诸如液晶显示器(LCD)、发光二极管(LED)、气体等离子体、电致发光等。还可以提供显示控制器717,用于将存储在存储器703中的数据707转换成显示设备715上显示的文本、图形和/或运动图像(视情况而定)。
计算机系统700的各种组件可由一个或多个总线耦合在一起,该总线可以包括电源总线、控制信号总线、状态信号总线、数据总线等。为了清楚起见,各种总线在图7中被例示为总线系统719。
除非特别描述为以特定方式实现,否则本文描述的技术可以以硬件、软件、固件或其任意组合来实现。被描述为模块、组件等的任何特征也可以在集成逻辑设备中一起实现,或者单独地实现为分立但可互操作的逻辑设备。如果以软件实现,则所述技术可至少部分地由包括指令的非瞬态处理器可读存储介质来实现,该指令在由至少一个处理器执行时执行本文描述的一种或多种方法。指令可以被组织为例程、程序、对象、组件、数据结构等,其可执行特定任务和/或实现特定数据类型,并且其可以在各种实施例中根据需要进行组合或分布。
本文描述的这些方法的步骤和/或动作可以彼此互换而不会背离权利要求的范围。换言之,除非所描述的方法的正确操作要求步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会背离权利要求的范围。
术语“确定”包括各种各样的动作,因此,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明、及类似动作。而且,“确定”可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似动作。同样,“确定”还可包括解析、选择、选取、建立、及类似动作。
术语“包括”、“包含”以及“具有”旨在是包含性的,并表示除所列出的元素以外可以有附加的元素。附加地,将理解,对本公开的“一个实施例”或“一实施例”的引用不旨在被解释为排除也纳入所述特征的附加实施例的存在。例如,在兼容的情况下,关于本文的实施例描述的任何元素或特征可与本文描述的任何其他实施例的任何元素或特征相组合。
本公开可以以其他具体形式来体现,而不背离其精神或特性。所描述的实施例被认为是说明性的而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的改变应被权利要求书的范围所涵盖。

Claims (15)

1.一种方法,包括:
向在应用虚拟机上执行的应用发送消息以便为保存操作做好准备;
处理应用存储器的内部状态以确定数据页或图形页中的正用于所述应用的至少一个或多个数据页或图形页;
指示对所述应用存储器的处理以确定代码页或签名页中的正用于所述应用的至少一个或多个代码页或签名页,并将所述代码页或所述签名页中的所述至少一个或多个代码页或签名页转换成已知存储器别名;以及
保存所述应用的应用存储器状态,其中所述应用存储器状态包括所述数据页或所述图形页中的所述至少一个或多个数据页或图形页以及具有所述代码页或所述签名页中的所述至少一个代码页或签名页的所述已知存储器别名。
2.如权利要求1所述的方法,其中所述应用是游戏。
3.如权利要求1所述的方法,其中所述应用存储器包括多个存储器别名,其中所述多个存储器别名中的每一者包括不同应用内容,所述不同应用内容包括所述代码页、所述数据页、所述图形页或所述签名页中的一者或多者。
4.如权利要求3所述的方法,其中所述多个存储器别名中的每一者使用不同的加密密钥来加密应用内容。
5.如权利要求1所述的方法,其中保存所述应用存储器状态进一步包括在存储之前加密所述应用存储器状态。
6.如权利要求1所述的方法,进一步包括:
保存与所述应用相关联的每个输入设备或输出设备的个体主机状态;以及
保存与所述应用相关联的每个输入设备或输出设备的个体系统状态。
7.如权利要求1所述的方法,进一步包括:
保存与所述应用相关联的管理程序状态。
8.一种计算机设备,包括:
用于存储数据和指令的至少一个存储器;
与所述至少一个存储器通信的至少一个处理器;以及
具有与所述计算机设备通信的应用的应用虚拟机,其中所述至少一个处理器能操作用于:
向在所述应用虚拟机上执行的应用发送消息以便为保存操作做好准备;
处理应用存储器的内部状态以确定数据页或图形页中的正用于所述应用的至少一个或多个数据页或图形页;
指示对所述应用存储器的处理以确定代码页或签名页中的正用于所述应用的至少一个或多个代码页或签名页,并将所述代码页或所述签名页中的所述至少一个或多个代码页或签名页转换成已知存储器别名;以及
保存所述应用的应用存储器状态,其中所述应用存储器状态包括所述数据页或所述图形页中的所述至少一个或多个数据页或图形页以及具有所述代码页或所述签名页中的所述至少一个代码页或签名页的所述已知存储器别名。
9.如权利要求8所述的计算机设备,其中所述应用是游戏。
10.如权利要求8所述的计算机设备,其中所述应用存储器包括多个存储器别名,其中所述多个存储器别名中的每一者包括不同应用内容,所述不同应用内容包括所述代码页、所述数据页、所述图形页或所述签名页中的一者或多者。
11.如权利要求10所述的计算机设备,其中所述多个存储器别名中的每一者使用不同的加密密钥来加密应用内容。
12.如权利要求8所述的计算机设备,其中保存所述应用存储器状态进一步包括在存储之前加密所述应用存储器状态。
13.如权利要求8所述的计算机设备,其中所述至少一个处理器进一步能操作用于:
保存与所述应用相关联的每个输入设备或输出设备的个体主机状态;
保存与所述应用相关联的每个输入设备或输出设备的个体系统状态;以及
保存与所述应用相关联的管理程序状态。
14.一种方法,包括:
通过读取应用的先前存储的应用存储器内容来发起应用虚拟机还原操作;
通过指示对敏感应用内容的重新创建来还原管理程序状态;
从与所述应用相关联的多个虚拟机还原每个输入设备或输出设备的主机状态;
从与所述应用相关联的所述多个虚拟机还原每个输入设备或输出设备的系统状态;
恢复所述应用虚拟机;以及
向所述应用发送消息以恢复。
15.如权利要求14所述的方法,其中还原所述系统状态或所述主机状态包括当在保存所述系统状态或所述主机状态与还原所述系统状态或所述主机状态之间对所述系统状态或所述主机状态做出改变时,使用新系统设置或新主机设置。
CN202080077321.5A 2019-11-06 2020-10-26 保存并还原应用内容的虚拟机状态和硬件状态 Active CN114641757B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962931624P 2019-11-06 2019-11-06
US62/931,624 2019-11-06
US16/774,610 2020-01-28
US16/774,610 US11103780B2 (en) 2019-11-06 2020-01-28 Saving and restoring virtual machine states and hardware states for application content
PCT/US2020/057262 WO2021091709A1 (en) 2019-11-06 2020-10-26 Saving and restoring virtual machine states and hardware states for application content

Publications (2)

Publication Number Publication Date
CN114641757A true CN114641757A (zh) 2022-06-17
CN114641757B CN114641757B (zh) 2024-03-26

Family

ID=75686832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080077321.5A Active CN114641757B (zh) 2019-11-06 2020-10-26 保存并还原应用内容的虚拟机状态和硬件状态

Country Status (4)

Country Link
US (1) US11103780B2 (zh)
EP (1) EP4055475A1 (zh)
CN (1) CN114641757B (zh)
WO (1) WO2021091709A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314378A (zh) * 2010-06-29 2012-01-11 微软公司 使用共享存储来迁移虚拟机的技术
CN104520873A (zh) * 2012-04-06 2015-04-15 安全第一公司 用于保护和恢复虚拟机的系统和方法
CN107615255A (zh) * 2015-06-17 2018-01-19 英特尔公司 利用持久存储器的计算装置和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8979655B2 (en) 2002-12-10 2015-03-17 Ol2, Inc. System and method for securely hosting applications
EP2444133A1 (fr) 2010-10-19 2012-04-25 Gemalto SA Procédé de sauvegarde de l'état d'une partie d'un jeu et procédé de restauration du jeu correspondant
US9645839B2 (en) 2010-10-27 2017-05-09 Microsoft Technology Licensing, Llc Stateful applications operating in a stateless cloud computing environment
US9891939B2 (en) * 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US9248374B2 (en) 2012-06-29 2016-02-02 Sony Computer Entertainment Inc. Replay and resumption of suspended game
US20140113705A1 (en) 2012-10-19 2014-04-24 Nvidia Corporation Quick-resume gaming
WO2014123169A1 (en) 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Game system, game apparatus, a method of controlling the same, a program, and a storage medium
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
US20150120674A1 (en) 2013-10-29 2015-04-30 Nvidia Corporation Virtual program installation and state restoration
US9795879B2 (en) 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314378A (zh) * 2010-06-29 2012-01-11 微软公司 使用共享存储来迁移虚拟机的技术
CN104520873A (zh) * 2012-04-06 2015-04-15 安全第一公司 用于保护和恢复虚拟机的系统和方法
CN107615255A (zh) * 2015-06-17 2018-01-19 英特尔公司 利用持久存储器的计算装置和方法

Also Published As

Publication number Publication date
EP4055475A1 (en) 2022-09-14
US20210129024A1 (en) 2021-05-06
US11103780B2 (en) 2021-08-31
CN114641757B (zh) 2024-03-26
WO2021091709A1 (en) 2021-05-14

Similar Documents

Publication Publication Date Title
US11868785B2 (en) Application program page processing method and device
CN110178136B (zh) 现场可编程门阵列程序的签名验证的方法和设备
JP6072889B2 (ja) プラットフォーム間のアプリケーション使用連続性
US20230388759A1 (en) Messaging system interacting with dynamic extension app
US10650077B2 (en) Providing secure storage of content and controlling content usage by social media applications
US11611433B2 (en) Secure memory arrangements
CN109726067B (zh) 一种进程监控方法以及客户端设备
EP2585972B1 (en) Protecting video content using virtualization
WO2015062339A1 (zh) 远程应用程序运行的方法和装置
US9875150B2 (en) Method and system for processing notifications amongst applications of a data processing system
USRE48311E1 (en) Apparatus and method for running multiple instances of a same application in mobile devices
US10027715B2 (en) Electronic device and method for encrypting content
EP3048552A1 (en) Apparatus and method for running multiple instances of a same application in mobile devices
US11233853B1 (en) System and method for controlling remote sessions executing on other devices
CN109154895B (zh) 上下文数据控制
US10033710B2 (en) Electronic device and method of transmitting and receiving information by electronic device
US10740252B2 (en) Serial peripheral interface filter for processor security
US20190370436A1 (en) Memory assignment for guest operating systems
EP3683692A1 (en) Cloud streaming service system, and method and apparatus for providing cloud streaming service
CN114641757B (zh) 保存并还原应用内容的虚拟机状态和硬件状态
US20190354692A1 (en) Encryption at rest for cloud-resourced virtual machines
WO2022081223A1 (en) Systems and methods for enhancing security of device-internal encryption with externally generated entropy
US20230344620A1 (en) Personal private key encryption device
JP5705757B2 (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