用于将应用中的机器代码的执行动态地卸载至虚拟机的方法和装置与流程

文档序号:14254435阅读:206来源:国知局
用于将应用中的机器代码的执行动态地卸载至虚拟机的方法和装置与流程

本公开的实施例涉及用于移动设备的云计算。更具体地,本公开的实施例涉及一种用于执行将应用中的任意机器代码动态地卸载至虚拟机的方法和装置。



背景技术:

传统上,云计算是使用服务器网络的实践,所述服务器被远程地托管以代替使用本地服务器或计算设备来存储、管理、和处理数据。云计算已经提供了用于使能对可配置计算资源的共享池进行网络访问的模型。连同存储方案,云计算已经为用户提供了使用第三方数据中心来存储、管理和处理其数据的各种能力。云计算利用资源共享来实现规模相干和规模经济。

移动设备经常受到诸如处理能力、电池寿命以及可用存储空间等资源的约束。对这些资源的约束可以限制移动设备传递用户可能期望的丰富移动体验的范围。尽管用于改善处理能力、电池寿命、和移动设备上的存储空间的新技术的到来,移动应用日渐增加的复杂性和要求反推资源的限制。

移动云计算使用云计算、移动计算、和无线网络的组合为移动用户带来附加计算资源。移动云计算可以利用具有变化云的弹性资源以及针对提高的功能、存储和移动性的网络技术以便在任何地点及任何时间服务众多移动设备,而不管异构环境和平台如何。

附图说明

本公开的实施例的特征和优点通过举例来展示并且不旨在将本公开的实施例限制为所示的具体实施例。

图1是根据本公开的示例性实施例的用于云计算的环境的框图。

图2是根据本公开的示例性实施例的计算设备的框图。

图3是流程图,展示了根据本公开的示例性实施例的用于对用于执行卸载(executionoffloading)的机器代码进行处理的方法。

图4是流程图,展示了根据本公开的示例性实施例的将机器代码的执行从作为客户端进行操作的第一计算设备卸载至作为服务器进行操作的第二计算设备的方法。

图5是流程图,展示了根据本公开的示例性实施例的用于对用于卸载机器代码执行的选项进行标识的方法。

图6是流程图,展示了根据本公开的示例性实施例的用于在服务器上管理已卸载的机器代码执行的方法。

图7是根据本公开的示例性实施例的用于支持卸载机器代码执行的机器状态复制的说明性示例。

图8是根据本公开的示例性实施例的在服务器计算设备上实现的虚拟机的框图。

图9是根据本公开的示例性实施例的机器代码执行卸载单元的框图。

具体实施方式

在以下描述中,出于解释的目的,阐述了特定的术语以便提供对本公开的实施例的透彻理解。对本领域技术人员将清楚的是,可以不要求描述中的特定细节实践本公开的实施例。在其他实例中,框图形式中示出了熟知的电路、设备、过程、和程序从而避免不必要地使本公开的实施例模糊。

可以使用实现先验限定功能的专用网络服务来实现将复杂计算从移动计算设备卸载到云上服务器。这可能是不灵活的,因为它妨碍了在运行时间将任意工作负荷转移到云上服务器。例如,当前的专用网络服务仅可以允许卸载在应用级指定且未在机器指令级指定的工作负荷。

根据本公开的实施例,提供了一种框架以便促进以机器指令粒度将任意工作负荷(即,任意机器代码块)从第一计算设备卸载至第二计算设备。在本实施例中,暂停第一计算设备上的执行并且捕获其机器状态的子集。所捕获的机器状态的子集包括远程运行期望代码块所需的最低限度。所述机器状态的子集可以包括计算设备的寄存器及其虚拟存储器的部分中的内容,包括栈、堆、以符号开始的块(bss)数据、以及文本。将第一计算设备的机器状态的子集复制到第二计算设备,在所述第二计算设备处将其动态地注入到执行已卸载代码块的虚拟机中。根据本公开的实施例,所述虚拟机可以是仅包括虚拟中央处理单元和虚拟存储器的超轻量级虚拟机。所述超轻量级虚拟机不需要运行操作系统。所述超轻量级虚拟机也不需要包括虚拟磁盘、虚拟网络接口或其他虚拟设备。

在第二计算设备上的虚拟机已经完成执行已卸载代码之后,将来自第二计算设备的虚拟机机器状态作为机器状态的已更新子集复制到第一计算设备上。这允许第一计算设备从新的状态恢复执行。这种框架提供了紧密耦合,所述紧密耦合模糊了第一计算设备与第二计算设备之间的边界。结果,对第一计算设备的用户看起来是第一计算设备自己执行了已卸载计算。

本公开的实施例允许从第一计算设备卸载在机器指令级而非在应用级指定的任意工作负荷以在第二计算设备上执行。公开了一种框架,所述框架便于切换、恢复第一计算设备上的设备执行、适当的机器状态转换、以及第二计算设备上的客户代码执行。

根据本公开的第一实施例,一种用于管理计算的方法包括:将第一计算设备的机器状态的子集复制到第二计算设备上,其中,所述机器状态的所述子集被要求执行机器代码。将所述机器代码的执行卸载至所述第二计算设备。根据本公开的实施例,机器状态子集指的是所述机器状态的适当子集。

根据本公开的第二实施例,一种用于管理计算的方法包括:在服务器上为客户端创建虚拟机。将从所述客户端接收到的所复制机器状态和机器代码注入到所述虚拟机中。将对所述服务器上的计算资源的控制移交给所述虚拟机从而执行所述机器代码。在完成对所述机器代码的执行之后,将对所述计算资源的控制返回给所述服务器。

本公开的实施例可以提供潜在的优点,诸如提供免于先验设计选择。诸如网络服务等现有方式需要应用程序员将应用分解成不同的功能单元以用于远程执行。这种抽象在编译时间是固定的并且无法在运行时间进行更改。本公开的实施例使能在运行时间动态卸载任意代码块。

本公开的实施例可以提供使用一般化服务器的潜在优点。诸如网络服务等现有方式需要将专用服务器配置用于实现每种受支持的服务。本公开的实施例允许通用服务器实现指令级卸载。这允许通用服务器处理不同类型的计算和服务,而不需要以特定于受支持服务的方式对其进行预先配置。

本公开的实施例可以提供以下潜在优点:指定现有应用的部分将在事后动态卸载。第一计算设备上的现有代码不需要重构或重写以利用卸载。

本公开的实施例可以提供在第一计算设备端处感知到响应性的潜在优点。在第二计算设备上连续更新第一计算设备的机器状态。对于有待由第二计算设备执行的已卸载代码块,第一计算设备的存储器的当前版本“恰好”可用。因此,卸载未经历较长的延迟。

本公开的实施例可以提供加快复杂计算的潜在优点。例如,服务器可以能够比由移动设备实现的客户端更快地执行复杂计算。这允许性能加速。

本公开的实施例可以提供在第一计算设备将机器代码执行卸载至第二计算设备上时节约功率的潜在优点。

图1是根据本公开的示例性实施例的用于云计算的环境100的框图。所述用于云计算的环境100包括第一计算设备110和第二计算设备120。第一计算设备110作为客户端进行操作并且可以由台式或膝上型计算机系统、智能电话、平板计算机、智能手表、智能电器、或其他计算设备来实现。第二计算设备120作为远离第一计算设备110而驻留在云中的服务器进行操作。第二计算设备120可以由针对第一计算设备110而列出的计算设备中的任意一个或由具有显著更高处理能力的计算设备(比如网络计算机、服务器计算机、大型计算机、超级计算机、或其他计算设备)来实现。根据本公开的实施例,第一计算设备110可以将一个或多个机器代码块上传至第二计算设备120以供执行。

第一计算设备110可以通过网络130连接至第二计算设备120。根据本公开的实施例,网络130可以是移动网络。所述移动网络可以包括诸如一个或多个基站收发台、接入点、和/或在第一计算设备110与移动网络服务之间传输信号的卫星等部件。所述移动网络服务可以经由互联网连接至第二计算设备120。应当理解的是,网络130还可以是利用其他部件与通信媒体的组合的不同类型的网络。

图2是根据本公开的示例性实施例的计算设备200的框图。计算设备200可以用来实现图1中所展示的第一计算设备110或第二计算设备120。计算机系统200包括处理数据信号的处理器201。图2示出了具有单个处理器的计算机系统200。然而,要理解的是,计算机系统200可以利用多个处理器进行操作。处理器201可以由(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路来实现。

处理器201耦合至输入/输出(i/o)子系统210。i/o子系统210可以包括存储器控制器中枢、i/o控制中枢、通信链路、和/或用于促进i/o操作的其他部件和子系统。根据计算设备200的实施例,i/o子系统210在计算设备200中的部件之间传输数据信号。在本实施例中,i/o子系统210可以包括单一总线或多条总线的组合。计算设备200包括存储器202。存储器202耦合至i/o子系统210。存储器202可以是动态随机存取存储器设备、静态随机存取存储器设备、和/或其它存储器设备。存储器202可以存储由数据信号表示的、可以由处理器201执行的指令和代码。数据存储设备203耦合至i/o子系统210。数据存储设备203可以利用被配置用于短期或长期存储数据的设备(比如固态驱动器、存储器卡或其他数据存储设备)来实现。

外围设备206耦合至i/o子系统210。外围设备206可以包括各种i/o设备,比如支持通信和显示的设备。外围设备206可以包括显示器和触摸屏、按钮、开关、键盘、鼠标、扬声器、麦克风、和/或其他外围设备。传感器207耦合至i/o子系统210并且可以被具体化为一个或多个传感器。根据本公开的实施例,传感器207可以包括一个或多个运动传感器、位置传感器、和接近度传感器。网络控制器(未示出)也可以耦合至i/o子系统210。所述网络控制器可以将计算机系统200链接至计算机网络(未示出)并且支持机器之间的通信。应当理解的是,具有不同架构或具有不同部件的计算设备也可以用来实现计算设备200。

图3是流程图,展示了根据本公开的示例性实施例的用于对用于执行卸载(executionoffloading)的机器代码进行处理的方法。根据本公开的实施例,图3中所描述的过程可以由在计算设备上执行的软件开发者工具来实施。

在301处,扼要描述了有待在第一计算设备上执行的代码。根据本公开的实施例,扼要描述所述代码的执行可以包括:确定各代码块多久执行一次。扼要描述代码的执行可以包括:标识从哪些存储器地址读取和/或写至哪些存储器地址以及频率。扼要描述代码的执行可以包括:标识代码块的(多个)调用链,并且确定所述(多个)调用链或(多个)调用链的一部分所需的计算机处理单元(cpu)周期。扼要描述代码的执行还可以包括:标识包括调用链或调用链的一部分或其他收集任务的指令。

在302处,标识感兴趣的代码块。根据本公开的实施例,如果确定了卸载有待在服务器处执行的代码块的性能增益胜过卸载的开销成本,则所述代码块可能是令人感兴趣的。应当理解的是,其他标准也可以用来标识感兴趣的代码块。

在303处,针对感兴趣的代码块标识相关机器状态信息。根据本公开的实施例,所述相关机器状态信息标识第一计算设备的机器状态的子集以及所述机器状态的所述子集在虚拟存储器中的位置,其中,所述机器状态子集需要卸载代码块的执行。可以根据在301处执行的扼要描述来标识所述机器状态的所述子集。所述机器状态可以包括计算设备的寄存器值和位置及其虚拟存储器的内容,所述内容包括例如栈、堆、以符号开始的块(bss)数据、以及文本区域。

在304处,修改代码块以支持将代码块的执行卸载至第二计算设备上。根据本公开的实施例,将调用插入到代码块中以便于卸载其执行。经修改的代码还标识应当从第一计算设备复制到第二计算设备上的机器状态子集以及所述机器状态子集位于第一计算设备上何处。在一个实施例中,提供了虚拟存储器地址范围的集合,所述集合包括所述机器状态子集。

图4是流程图,展示了根据本公开的示例性实施例的将机器代码的执行从作为客户端进行操作的第一计算设备卸载至作为服务器进行操作的第二计算设备的方法。根据本公开的实施例,图4中所描述的过程可以由图1中所展示的第一计算设备110来执行。

在401处,进行初始化。根据本公开的实施例,将初始化消息传输至作为服务器进行操作的计算设备。所述初始化消息可以请求来自服务器的状态或关于服务器的特定信息。

在402处,做出关于服务器状态的判定。根据本公开的实施例,服务器的状态可以基于其连接、服务器上的通信量、处理能力、和/或从服务器请求的其他标准或信息。如果确定了服务器的状态并非是可接受的,控制前进至403。如果确定了服务器的状态是可接受的,则控制前进至404。根据本公开的实施例,可以在401处将初始化消息发送至多于一个的服务器,并且可以在402处确定多于一个服务器的状态可以是可接受的。

在403处,在客户端上本地地执行代码并且对卸载进行旁路。

在404处,标识用于卸载代码块的执行的选项。根据本公开的实施例,关于要卸载哪些代码块以及如果多于一个服务器可用的话要使用哪个服务器做出判定。有待卸载以便执行的代码块可以被称为目标代码块。目标代码块可以包括描述功能或功能的仅一部分的机器代码。

在405处,当在服务器上复制客户端的机器状态子集时,将用于卸载的选项登记到复制代理。根据本公开的实施例,复制客户端的机器状态子集包括:传输在代码中指定的虚拟存储器地址范围的内容,所述内容包括文本区域、堆区域、数据区域、和bss区域。复制客户端的机器状态子集还包括:标记文本中的、利用目标代码标志对有待在服务器上执行的代码进行标识的区域。复制客户端的机器状态子集进一步包括向服务器传输栈的内容。根据本公开的实施例,可以通过检查拥有栈指针的寄存器以及拥有栈基址指针的寄存器来确定被复制的栈的内容。复制客户端的机器状态子集还包括向服务器传输客户端上寄存器的内容。在服务器上复制的客户端的机器状态子集包括当前版本更新号。根据本公开的实施例,向复制代理登记机器状态子集。由复制代理在服务器上复制在客户端上执行应用的过程中机器状态的变化。这允许连续复制机器状态子集。

在406处,将目标代码块的执行卸载至服务器上。

在407处,判定卸载状态是否是可接受的。根据本公开的实施例,如果在卸载目标代码块的执行时发生错误或者在预定时间段之后未接收到来自服务器的响应,则卸载状态可能是不可接受的。如果确定卸载状态并非是可接受的,则控制前进至403。如果确定了卸载状态是可接受的,则控制前进至408。

在408处,当将来自服务器的机器状态的已更新子集复制到客户端上时,执行状态融回(merge-back)。所述机器状态的已更新子集反映在服务器上对目标代码块的执行。根据本公开的实施例,在从服务器接收到机器状态的已更新子集之后,将来自服务器的所述机器状态的已更新子集的版本更新号与当前版本更新号进行比较。如果来自服务器的所述机器状态的已更新子集的版本更新号与当前版本更新号相匹配,则利用来自服务器的所述机器状态的已更新子集来覆写客户端上的机器状态子集。根据本公开的实施例,以给定的顺序在客户端上更新虚拟存储器(堆、bss、数据、和栈)和寄存器。在完成状态融回之后,对版本更新号进行递增。可以将客户端的当前指令指针设置为目标代码块的端点。

图5是流程图,展示了根据本公开的示例性实施例的用于对用于卸载机器代码执行的选项进行标识的方法。根据本公开的实施例,图5中所展示的方法可以用来实施图4中所展示的过程404。

在501处,标识期望的卸载分级。所述卸载分级对应于应用所期望的对机器代码的执行进行卸载的程度。根据本公开的实施例,所述期望的卸载分级可以由执行应用的机器代码的第一计算设备的用户来指定。卸载分级还可以由第一计算设备上的代理在确定应当节约功率、处理资源、或第一计算设备上的其他计算资源之后动态地指定。应当理解的是,期望的卸载分级可以由工作负荷的类型或由代码块的尺寸来表征。根据本公开的实施例,用户可以指定对过度卸载、中度卸载、或轻度卸载的偏好。在本实施例中,过度卸载可能导致卸载所有可能的目标代码块,其中,轻度卸载可能导致依据调用频率来卸载指定百分比的目标代码块。

在502处,标识可用于执行卸载(executionoffloading)的代码块。根据本公开的实施例,可以通过解析代码来标识可用于卸载的代码块,从而判定哪些代码块已经插入了促进执行卸载的调用。可用于执行卸载的代码块还标识应当复制的机器状态子集以及所述机器状态子集位于何处。

在503处,做出关于要卸载哪个代码块或哪些代码块的判定。根据本公开的实施例,可以响应于期望的卸载分级而做出所述判定。例如,当期望的卸载分级较高时,可以卸载更大数量的代码块。

在504处,如果多于一个的服务器可用于接受用于执行的已卸载代码,则做出关于哪个服务器来分配所述代码的判定。根据本公开的实施例,所述判定可以基于客户端与服务器之间的网络延迟、服务器的处理负荷、或其他标准。

图6是流程图,展示了根据本公开的示例性实施例的用于在服务器上管理已卸载的机器代码执行的方法。根据本公开的实施例,图6中所描述的方法可以由图1中所展示的第二计算设备120来执行。

在601处,控制侦听来自客户端的消息。

在602处,判定从所述客户端接收到的消息是否是状态询问。如果从所述客户端接收到的所述消息是状态询问,则控制前进至603。如果从所述客户端接收到的所述消息不是状态询问,则控制前进至604。

在603处,将服务器的状态传输至客户端。根据本公开的实施例,所述状态可以指示服务器是可操作的。所述状态还可以提供关于服务器的处理资源、服务器的处理负荷、服务器与客户端之间的网络延迟的信息、和/或可以由客户端使用的其他信息,以便判定是否选择服务器来执行代码。

在604处,判定从客户端接收到的消息是否是创建虚拟机(vm)的请求。根据本公开的实施例,可以在服务器被选择用于执行来自客户端的代码时从客户端接收创建vm的请求。如果来自客户端的消息是创建vm的请求,则控制前进至605。如果来自客户端的消息不是创建vm的请求,则控制前进至606。

在605处,创建vm。根据本公开的实施例,为vm创建单个虚拟中央处理单元(vcpu)和虚拟存储器。所述虚拟存储器可以是存储器映射的主机存储器块并且可以是可配置的。在所述虚拟存储器内建立客户根物理页表。直到从客户端接收到复制更新才启动vm。

在606处,判定是否从客户端接收到复制更新。如果未从客户端接收到复制更新,则控制前进至607。如果从客户端接收到复制更新,则控制前进至608。

在607处,丢弃来自客户端的消息。

在608处,判定从客户端接收到的复制更新的版本更新号是否是新版本更新号。根据本公开的实施例,如果所述版本更新号小于或等于当前版本更新号,则所述版本更新号不是新的。如果所述版本更新号不是新的,则控制前进至609。如果所述版本更新号是新的,则控制前进至610。

在609处,丢弃与旧版本更新号相关联的复制更新。

如图6中所展示的,本公开的实施例侦听三种示例性消息类型。应当理解的是,可以侦听、标识、和处理附加消息类型。

在610处,利用来自从客户端接收到的复制更新的信息来注入vm。根据本公开的实施例,所述复制更新包括来自客户端的、包括虚拟存储器地址范围列表及其内容的机器状态子集。这些变成客户端指定的vm内部的客户虚拟存储器地址。对于所接收到的每个地址范围,在vm的客户物理存储器中分配并建立适当的页表结构和客户物理页面,从而使得虚拟地址在vm内部是可解析的。随后,服务器根据客户页表将相应的内容拷贝到客户物理存储器内的适当位置中。

在从客户端接收到的机器状态目标代码子集中,针对包括待执行目标代码块的地址范围来设置目标代码标志。当目标代码块被拷贝到vm中的客户物理存储器中时,对其附加命令vm将对计算资源的控制返回给服务器的脚注代码。根据本公开的实施例,可以利用以下指令来实现所述脚注代码。

moveax,0xdeadc0de

vmcall

建立vm中的页表以正确地处理以下情形:脚注代码越过页面边界到新的页面上。在寄存器状态被拷贝到vm的寄存器中之后,vm准备好启动。利用新版本更新号来覆写当前版本更新号。

在611处,运行vm。根据本公开的实施例,仅在已经安装了目标代码块时运行vm。这发生在复制更新使目标代码标志被设置时。否则,服务器继续侦听客户端消息并注入更新。根据本公开的实施例,将vm的指令指针寄存器设置到目标代码块的起点并且目标代码块将开始执行。在附加的脚注代码被执行后,vm将停止。此时,vmcall被内核模块捕获,所述内核模块将对计算资源的控制交还给服务器。

在612处,将服务器上的vm的机器状态的已更新子集导出到客户端。在完成目标代码块的执行之后,如果客户端完成了目标代码块的执行,则服务器上的vm的机器状态将与客户端的机器状态完全相同。通过将vm虚拟存储器(包括堆、数据、bss、栈)和寄存器状态复制到客户端上,将vm的机器状态的已更新子集导出到客户端。将复制更新的当前版本更新号与机器状态的已更新子集一起传输至客户端。

如图6中所展示的,来自客户端的消息可以是状态询问、vm请求、或者复制更新,其中,每种类型的消息可以生成与服务器不同的响应。然而,应当理解的是,来自客户端的消息还可以包括所公开的示例性消息的组合并且因此可以一起执行所公开的响应的组合。例如,客户端可以发送包括vm请求连同复制更新两者的消息。在这种情况下,服务器可以执行过程605至612的组合。

图3至图6是展示了根据本公开的示例性实施例的方法的流程图。可以顺序地、并行地或按照所描述的以外的顺序执行这些图中所展示的技术中的一些。此外,可以在循环中重复或迭代地执行所展示的方法中的一些。应当理解的是,并非要求所描述的所有技术被执行,可以增加附加技术,并且可以利用其他技术来替代所展示的技术中的一些。

图7是根据本公开的示例性实施例的用于支持卸载机器代码执行的机器状态复制的说明性示例。客户端710由第一计算设备来实现。客户端710内部的存储器包括存储寄存器值的第一区段711。存储器中的第二区段712包括用于存储栈713、堆714、bss715、数据716、和文本717的位置。

当决定使用服务器720来执行来自客户端710的目标代码块时,将客户端710的机器状态的子集复制并卸载至服务器720上。客户端710的机器状态子集包括寄存器值711、以及来自栈713、堆714、bss715、数据716、和文本717的值。

服务器720由第二计算设备来实现。服务器720实施包括虚拟寄存器的第一区段731的vm730,所述第一区段存储从客户端710的机器状态复制的寄存器值。vm包括虚拟存储器的第二区段732,所述第二区段包括用于存储从客户端710的机器状态子集复制的栈、堆、bss、数据、和文本的位置。虚拟存储器还包括第三区段740,所述第三区段实现可以用来将虚拟地址映射至vm中的物理地址的页表。

当在服务器720中的vm730上执行目标代码块之后,将vm730的机器状态子集传输至客户端从而被融合回至存储器中。通过对vm730的机器状态子集进行融合,将客户端710的机器状态提前,犹如已经在客户端710上本地地执行了目标代码块。

图8是根据本公开的示例性实施例的在服务器800上实现的虚拟机831和832的框图。服务器800包括物理机810。根据一个实施例,物理机810可以包括计算设备的部件,诸如例如一个或多个处理器、存储器、总线、和各种i/o设备。

服务器800包括服务器守护进程820。服务器守护进程820是与物理机810接口连接且便于创建和运行一个或多个vm830的层。根据本公开的实施例,服务器守护进程820可以是计算设备的存储器中所存储的指令序列。服务器守护进程820在vm830之间管理并调解物理机810中的计算设备资源,并允许vm830的隔离或其之间的数据共享。存储器守护进程820通过将物理机810中的资源虚拟化并导出虚拟硬件接口来实现这种隔离或共享,所述虚拟硬件接口可以反映物理机810的底层架构、物理机的变体、或完全不同的物理机。

服务器800包括一个或多个vm831至832(集体地示为830)。根据本公开的实施例,可以将vm描述为机器的隔离模型,包括但不限于物理机810的复制物、物理机810的子集、或完全不同的机器的模型。vm可以包括物理机810中的计算机设备的资源、物理机810中的计算设备的资源的子集、或物理机中未发现的完全虚拟的资源。

根据本公开的实施例,服务器守护进程820侦听来自客户端的复制更新。在接收到新的复制更新时,服务器守护进程820将客户端的来自复制更新中的信息的机器状态的子集注入到合适的vm中。所述机器状态信息可以包括供vm执行的目标代码块。在vm完成执行目标代码块之后,服务器守护进程820将vm的机器状态复制到客户端上作为已更新机器状态子集。

应当理解的是,服务器800可以运行不同类型的操作系统。根据本公开的实施例,服务器800运行linux操作系统并利用具有服务器守护进程820的基于内核的虚拟机(kvm)来创建并管理vm130。

图9是根据本公开的示例性实施例的机器代码执行卸载(mceo)单元900的框图。mceo单元900包括mceo单元管理器910。mceo单元管理器910耦合至mceo单元900中的部件并在其之间传输信息。

mceo单元900包括代码标识单元920。代码标识单元920标识第一计算设备上的要卸载至第二计算设备的机器代码。根据本公开的实施例,代码标识单元920响应于指示期望的卸载分级的用户所选设置而标识所述机器代码。所述机器代码可以是描述功能或功能的一部分的代码块。

mceo单元900包括复制单元930。复制单元930将所述第一计算设备的机器状态的子集复制到所述第二计算设备上,其中,所述机器状态的所述子集被要求执行所述机器代码。根据本公开的实施例,所述机器状态的所述子集包括:寄存器值、以及虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

mceo单元900包括融合单元940。融合单元940利用来自所述第二计算设备的机器状态的已更新子集来覆写所述机器状态的子集,其中,所述机器状态的所述已更新子集反映在所述第二计算设备处对所述机器代码的执行。

应当理解的是,mceo单元900可以进一步执行参照图4和图5所描述的过程。

图9展示了实现mceo单元900的实施例的模块。根据一个实施例,所述模块表示软件模块,并且操作可以由计算机系统来执行,比如图2中所展示的执行由图9中所示模块表示的指令序列的计算机系统。在替代性实施例中,硬连线电路系统可以被用来替代软件指令或与软件指令相结合来实现本公开的实施例。因此,本公开的实施例不限于硬件电路系统和软件的任何具体组合。

以下示例涉及进一步的实施例。在一个实施例中,一种具有指令序列的非暂态计算机可读介质,所述指令序列包括在被执行时使得处理器执行将第一计算设备的机器状态子集复制到第二计算设备上的方法的指令,其中,所述机器状态子集被要求执行机器代码。将所述机器代码的执行卸载至所述第二计算设备。

在进一步实施例中,复制所述机器状态子集包括:复制寄存器值,并且复制虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

在进一步实施例中,所述机器代码描述功能。

在进一步实施例中,所述机器代码描述功能的一部分。

在进一步实施例中,上文经标识的非暂态计算机可读介质进一步包括:标识所述第一计算设备上的要卸载至所述第二计算设备的机器代码。

在进一步实施例中,对所述机器代码的标识是响应于指示所期望的卸载的分级的用户所选设置而执行的。

在进一步实施例中,所述所期望的卸载的分级的特征可以由过度卸载、中度卸载和轻度卸载来表征。

在进一步实施例中,上文经标识的非暂态计算机可读介质进一步包括:为所复制的机器状态的子集分配版本更新号。

在进一步实施例中,上文经标识的非暂态计算机可读介质进一步包括:如果一段时间已经到期而未从所述第二计算设备接收到机器状态的已更新子集,则在所述第一计算设备上执行所述机器代码。

在进一步实施例中,上文经标识的非暂态计算机可读介质进一步包括:从所述第二计算设备接收机器状态的已更新子集,其中,所述机器状态的所述已更新子集反映在所述第二计算设备处对所述机器代码的执行。利用所述机器状态的所述已更新子集来覆写所述机器状态的所述子集。将所述第一计算设备的当前指令指针设置为所述机器代码的端点。

在进一步实施例中,如果所述机器状态的已更新子集具有当前版本更新号,则执行所述覆写。

在进一步实施例中,上文经标识的非暂态计算机可读介质进一步包括:在所述覆写之后,使所述当前版本更新号递增。

在进一步实施例中,一种用于管理计算的方法包括:将第一计算设备的机器状态的子集复制到第二计算设备上,其中,所述机器状态的所述子集被要求执行机器代码。将所述机器代码的执行卸载至所述第二计算设备。

在进一步实施例中,复制所述机器状态子集包括:复制寄存器值,并且复制虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

在进一步实施例中,所述机器代码描述功能。

在进一步实施例中,所述机器代码描述功能的一部分。

在进一步实施例中,上述方法进一步包括:标识第一计算设备上的要卸载至第二计算设备的机器代码。

在进一步实施例中,上述方法进一步包括:响应于指示所期望的卸载的分级的用户所选设置,标识所述机器代码。

在进一步实施例中,所述所期望的卸载的分级的特征可以由过度卸载、中度卸载和轻度卸载来表征。

在进一步实施例中,上述方法进一步包括:为所复制的机器状态的子集分配版本更新号。

在进一步实施例中,上述方法进一步包括:如果一段时间已经到期而未从所述第二计算设备接收到机器状态的已更新子集,则在所述第一计算设备上执行所述机器代码。

在进一步实施例中,上述方法进一步包括:从所述第二计算设备接收机器状态的已更新子集,其中,所述机器状态的所述已更新子集反映在所述第二计算设备处对所述机器代码的执行。利用所述机器状态的所述已更新子集来覆写所述机器状态的所述子集。将所述第一计算设备的当前指令指针设置为所述机器代码的端点。

在进一步实施例中,如果所述机器状态的已更新子集具有当前版本更新号,则执行所述覆写。

在进一步实施例中,一种具有指令序列的非暂态计算机可读介质,所述指令序列包括当被执行时使得处理器执行来自上述方法中任意一种方法的过程的指令。

在进一步实施例中,一种设备包括:用于执行来自上述方法中任意一种方法的过程的装置。

在进一步实施例中,一种用于管理计算的方法包括:在服务器上为客户端创建虚拟机(vm)。将从所述客户端接收到的复制的机器状态和机器代码注入到所述vm中。将对所述服务器上的计算资源的控制移交给所述vm从而执行所述机器代码。在完成对所述机器代码的执行之后,将对所述计算资源的控制返回给所述服务器。

在进一步实施例中,上述方法进一步包括:将所述vm中的已更新机器状态导出至所述客户端,其中,所述已更新机器状态反映在所述服务器上对所述机器代码的执行。

在进一步实施例中,为所述客户端创建所述vm包括:生成虚拟中央处理单元以及存储器映射的主机存储器块。

在进一步实施例中,从所述客户端接收到的所述复制的机器状态包括:寄存器值、以及虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

在进一步实施例中,上述方法进一步包括:标识所述机器代码中的目标代码标志。在所述机器代码中目标代码标志的位置处添加脚注代码,所述脚注代码命令所述vm将对所述计算资源的控制返回给所述服务器。

在进一步实施例中,机器代码执行卸载单元包括:代码标识单元,标识第一计算设备上的要卸载至第二计算设备的机器代码。所述机器代码执行卸载单元包括:复制单元,将所述第一计算设备的机器状态的子集复制到所述第二计算设备上,其中,所述机器状态的所述子集被要求执行所述机器代码。所述机器代码执行卸载单元包括:融合单元,利用来自所述第二计算设备的所述机器状态的已更新子集来覆写所述机器状态的所述子集,其中,所述机器状态的所述已更新子集反映在所述第二计算设备处对所述机器代码的执行。

在进一步实施例中,所述机器状态的所述子集包括:寄存器值、以及虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

在进一步实施例中,所述代码标识单元响应于指示所期望的卸载的分级的用户所选设置而标识所述机器代码。

在进一步实施例中,所述机器代码描述功能的一部分。

在进一步实施例中,机器代码执行卸载单元包括用于标识第一计算设备上的要卸载至第二计算设备的机器代码的装置。所述机器代码执行卸载单元包括:用于将所述第一计算设备的机器状态的子集复制到所述第二计算设备上的装置,其中,所述机器状态的所述子集被要求执行所述机器代码。所述机器代码执行卸载单元包括:用于利用来自所述第二计算设备的所述机器状态的已更新子集来覆写所述机器状态的所述子集,其中,所述机器状态的所述已更新子集反映在所述第二计算设备处对所述机器代码的执行。

在进一步实施例中,所述机器状态的所述子集包括:寄存器值、以及虚拟存储器地址范围以及包括栈、堆、以符号开始的块(bss)、数据和文本区域的内容。

在进一步实施例中,所述代码标识单元响应于指示所期望的卸载的分级的用户所选设置而标识所述机器代码。

本公开的实施例可以被作为可以包括具有指令的机器可访问或机器可读介质上的制品的计算机程序产品、或软件提供。机器可访问或机器可读介质上的指令可以用来对计算机系统或其他电子设备进行编程。机器可读介质可以包括但不限于软磁盘、光盘、cd-rom、和磁光盘或适用于存储或发射电子指令的其他类型媒体/机器可读介质。在此所述的技术并不限于任何具体软件配置。它们在任何计算或处理环境中都能找到适用性。在此使用的术语“机器可访问介质”或“机器可读介质”应当包括能够存储、编码、或传输指令序列的任何介质,所述指令序列用于由机器执行并且使机器执行在此描述的任一种方法。此外,在本领域中常常将一种或另一种形式的软件(例如程序、规程、过程、应用程序、模块、单元、逻辑等)说成采取动作或造成结果。这类表述仅是陈述由处理系统对软件的执行使处理器执行行动以产生结果的简写方式。

在以上说明书中,已经参照本公开的特定示例性实施例描述了本公开的实施例。然而,在不偏离本公开的实施例的情况下,将显然的是可对其进行各种修改和改变。此外,应理解的是,所呈现的示例中的细节可以用在一个或多个所公开的实施例中的任何地方。

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