CN100470481C - 用于在虚拟机中进行延续传递的方法和设备 - Google Patents
用于在虚拟机中进行延续传递的方法和设备 Download PDFInfo
- Publication number
- CN100470481C CN100470481C CNB2004800286997A CN200480028699A CN100470481C CN 100470481 C CN100470481 C CN 100470481C CN B2004800286997 A CNB2004800286997 A CN B2004800286997A CN 200480028699 A CN200480028699 A CN 200480028699A CN 100470481 C CN100470481 C CN 100470481C
- Authority
- CN
- China
- Prior art keywords
- continuity
- piece
- stacked memory
- context
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Transceivers (AREA)
Abstract
公开了用于在虚拟机(VM)中进行延续传递的方法和设备。提供了一种方法用于在无线设备中运行虚拟机以提供延续传递。该虚拟机包括堆栈存储器。该方法包括遇到上下文-创建触发标识,响应于该触发标识构造延续块,该延续块包括从堆栈存储器产生的堆栈片段,遇到估算指令;以及响应该估算指令,将来自该延续块的该堆栈片段存储到该堆栈存储器。
Description
技术领域
本发明一般涉及计算系统,而且更具体地,涉及用于在虚拟机中提供延续传递来提供高效的程序流以及存储器资源利用的方法和设备。
背景技术
技术的进步已经导致了更小和更强大的无线设备。例如,目前存在多种小型的、重量轻的并且用户能轻松携带的移动无线电话、个人数字助理(PDA)和寻呼设备。典型地,这些设备包括具有有限的存储器资源的嵌入式控制器。例如,可用的存储器数量可能受限于该设备较小的尺寸。
随着无线设备已经变得越来越广泛,越来越需要这些设备处理大量的数据并执行更复杂的程序。例如,用户要求远程访问互动程序——例如游戏程序——该程序需要无线设备利用无线网络提供与远程服务提供者的快速和高效的通信。另外,用户想要远程访问特殊的程序,该程序典型地可以在较大型的家庭或者办公室系统上访问。
为了满足这些需求,设备和服务提供者面临选择:开发其自身的技术或者试图利用已有的技术。不幸的是,开发新技术既费时又昂贵,所以,是一个不能吸引人的选择。利用已有技术——例如已有的软件——则必须克服兼容性问题。例如,为一种处理系统开发的软件可能与其他处理系统不兼容。因此,当把软件从一个或者多个系统中引入到无线设备中运行的时候需要着手解决兼容性问题。
一种用于克服兼容性问题的技术涉及到虚拟机(VM)的使用。典型的VM包括在主机系统上执行的软件,该软件允许主机系统运行为其他一些系统(也就是,远程系统)编写的非本地程序指令。例如,为在远程系统上执行而编写的非本地程序指令通过在主机系统上运行的VM软件进行解释。这样,在无线设备上运行的VM允许该设备运行为多种不同的系统编写的软件,由此允许设备开发者和服务提供者使用已有的软件向无线设备用户提供附加的功能。
不幸的是,在资源有限的无线设备上实现VM带来了其他的问题。例如,多数VM的实现是利用堆栈作为临时存储,该堆栈可以作为暂存区使用来存储常量、变量、被调用过程的自变量或者程序执行需要的其他信息。在字节码的执行中,可以遇到(encounter)一个创建活动记录或者上下文的动态函数,该函数可以包括堆栈指针、当前程序计数器(PC)、代码指针等等。闭包或者块是一种引用当前的上下文(块由此产生)中的堆栈上的元素的字节码片段。块可以从上下文返回,用于应用代码中的其他地方。传递到分类函数的分类块就是一个例子。为了在稍后的阶段中执行块,创建上下文不能被释放,也就是,创建函数不能返回。块只能传递给创建函数做出的函数调用。但是,能够返回一个参数化的块(也就是,和创建上下文中的数据相关的块)将非常有用。
有些系统通过为每个活动记录创建一个全新的堆栈来解决这个问题。由于每个活动记录的最大堆栈容量可以在编译的时候计算出来,因此堆栈的容量是有限的。这种技术虽然似乎可以解决这个问题,它却阻碍了每个含有堆栈创建和参数复制的函数调用,函数调用对于低处理能力和有限存储器的系统是需要很高代价的,例如对无线设备。其他的技术只在块不引用创建活动记录中的任何实际数据(也就是,这个块是干净的)的时候,才允许创建活动记录的返回。这个技术解决了问题的一部分,但是不允许对块使用创建上下文中可用的数据进行参数化。
因此,需要的是在资源有限的无线设备上使用一种VM来提供延续传递,其允许引用创建上下文中的数据的参数化的块返回,从而在提供快速的程序执行的同时高效率地利用可用的存储器资源。
发明内容
在一个或者多个实施方式中,提供的方法和设备允许VM在资源有限的无线设备中完成延续传递。例如,无线设备可以是具有嵌入式处理器和有限的存储器资源的无线电话,其执行程序指令来提供VM的一个实施方式。VM允许无线设备执行为不同系统编写的非本地的程序指令。因此,这个无线设备能够为该设备的用户提供非本地程序的功能。
在一个实施方式中,VM完成延续传递,使得响应于遇到(encounter)上下文-创建触发标识构造出块,触发标识例如动态函数调用。VM处理扩展的上下文,其包括当前上下文的当前堆栈片段的拷贝。另外,对块中包含的参数的片段内的参数偏移进行存储。根据块的估算,已存储的堆栈片段的元素被压回到堆栈上,有效地重新构造了创建该块的块的上下文。使用存储的参数的索引,将传送到该块的参数存储到片段中。然后该块可以使用创建上下文的完全状态执行。
通过把堆栈片段压回到堆栈上,有效地重新设置了块的创建上下文。这样使参数化的块能够通过上下文返回。通过只在块被创建的时候复制堆栈片段,处理和存储器开销被最小化。
在一个实施方式中,提供了一种方法用于在无线设备中运行虚拟机以提供延续传递。虚拟机包括堆栈存储器。该方法包括遇到上下文-创建触发标识,响应于触发标识,构造包含从堆栈存储器产生的堆栈片段的延续块,遇到估算指令,以及响应于估算指令,将来自延续块的堆栈片段存储到堆栈存储器。
在另一个实施方式中,提供了在具有嵌入式处理器的无线设备中使用的虚拟机。虚拟机包括堆栈存储器,该堆栈存储器包括存储和取回信息的逻辑。虚拟机还包括遇到上下文-创建触发标识的逻辑以及响应于触发标识构造延续块的逻辑,其中延续块包括从堆栈存储器产生的堆栈片段。虚拟机还包括遇到估算指令的逻辑和响应于估算指令将来自延续块的堆栈片段存储到堆栈存储器的逻辑。
在另一个实施方式中,提供了用于在具有嵌入式处理器的无线设备中使用的虚拟机。虚拟机包括用于提供堆栈存储器的装置和用于遇到上下文-创建触发标识的装置。虚拟机还包括用于响应于触发标识构造延续块的装置,其中延续块包括从堆栈存储器中产生的堆栈片段。虚拟机还包括用于遇到估算指令的装置以及响应于估算指令将来自延续块的堆栈片段存储到堆栈存储器的装置。
在另一个实施方式中,提供了一种包含程序指令的计算机可读介质,当处理逻辑执行该程序指令的时候提供实现延续传递的虚拟机。虚拟机包括堆栈存储器,而计算机可读介质包括用于遇到上下文-创建触发标识的程序指令。计算机可读介质还包括用于响应于触发标识构造延续块的程序指令,其中延续块包括从堆栈存储器产生的堆栈片段。计算机可读介质还包括用于遇到估算指令的程序指令和用于响应于估算指令将来自延续块的堆栈片段存储到堆栈存储器的程序指令。
在另一个实施方式中,提供了具有嵌入式处理器的无线设备。无线设备包括堆栈存储器,该堆栈存储器包括存储和取回信息的逻辑。无线设备还包括用于完成延续传递的虚拟机。虚拟机包括遇到上下文-创建触发标识的逻辑和响应于该触发标识构造延续块的逻辑,其中延续块包括从堆栈存储器产生的堆栈片段。虚拟机还包括遇到估算指令的逻辑和用于响应于估算指令将来自延续块的堆栈片段存储到堆栈存储器的逻辑。
本发明的其他方面、优点以及特征在参阅下文中列出的附图简要说明、本发明的具体实施方式和权利要求书之后将变得更加明显。
附图说明
前述的方面及在此描述的实施方式的附随的优点通过结合附图参照下面的详细说明将变得更明显,其中:
图1图示的是一种数据网络,该数据网络包括具有有限存储器资源的无线设备,其适合于实现VM的一个实施方式来完成延续传递;
图2示出的是图1的无线设备的一个实施方式的功能方框图;
图3示出的是用于创建延续块提供延续传递的存储器资源的图示;
图4示出的是用于估算图3中延续块的存储器资源的图示;
图5示出的是用于无线设备的VM中提供延续传递的方法的一个实施方式;以及
图6图示的是一种数据网络,其包括多个具有有限资源的移动计算设备,其适合于实现VM的一个或多个的实施方式来完成延续传递。
具体实施方式
下面的详细说明描述了用于在无线设备中提供完成延续传递的VM的方法和设备的一个或多个实施方式。在一个或多个的实施方式中,该无线设备具有有限的资源(也就是,有限的存储器容量),并且VM提供的延续传递通过完成下列步骤实现。
1.遇到上下文-创建触发标识(也就是,一种延续创建指令,例如压入延续指令)。
2.构造包括堆栈片段加上包含在活动记录中的其他信息(也就是,代码指针,等等)的延续块。
3.将延续块压到堆栈存储器上。
4.遇到延续估算指令。
5.取回延续块。
6.将堆栈片段压回到堆栈上。
7.通过跳转到与存储在延续块中的代码指针关联的程序代码估算该延续。
图1图示的是数据网络100,其包括具有有限存储器资源的无线设备102,所述有限存储器资源适合于实现完成延续传递的VM的一个实施方式。在系统100中,无线设备102和网络服务器104使用无线通信信道106通过无线网络108进行通信。在一个实施方式中,设备102包括无线电话,该电话可以通过无线网络108发送和/或接收数据和/或语音信息。然而,设备102可以包括任何其他类型的无线设备。设备102运行以向服务器104请求多种信息,其包括应用程序110、112和/或系统业务。例如,系统业务包括提供延续传递的一个实施方式的VM 114。
在一个实施方式中,设备102还通过直接链路120直接耦合到本地系统,例如本地工作站116。该直接链路120允许设备102和本地工作站116交换数据和/或者程序。在一个实施方式中,本地工作站116利用直接链路120下载VM 118到设备102。VM 118可以和VM 114相同,并且都运行以提供延续传递的一个或者多个实施方式。
在一个实施方式中,设备102包括一种嵌入式系统,其包括嵌入式处理器、存储器和各种接口,这样设备102可以存储、装载和执行从服务器104下载的应用程序110和/或者VM 114。例如通过提供对设备专用资源的总体调用,应用程序110和VM 114可以与在设备102上执行的用于简化设备之运行的运行时间环境互相作用。一种这样的运行时间环境是由加利弗尼亚圣地亚哥QUALCOMM公司开发的用于WirelessTM(BREWTM)软件平台的二进制运行时间环境。
为了使设备102更容易执行为不同的计算系统开发的软件,可以将VM 114从服务器104下载到设备102。例如,应用程序112可以包括为不同于设备102的目标设备或者系统编写的非本地程序指令。VM 114运行以便模拟目标系统的环境,使得为在此目标系统上执行而设计的目标应用程序(像应用程序112)也可以在设备102上执行。例如,在一个实施方式中,VM 114用于提供JAVA系统环境从而可以在设备102上下载和执行JAVA应用程序。在一个或者多个实施方式中,VM 114包括用于在这些非本地指令执行期间提供延续传递的方法和设备。
从本地工作站116下载到设备102的VM 118可以和VM 114一样,因此,也运行以提供延续传递的一个或者多个实施方式。在一个实施方式中,在计算机可读介质——例如软盘——上提供VM118并将其装载到系统116上,用于发送到设备102。在另一个实施方式中,VM可以存储到计算机可读的存储器设备上,例如存储卡(未示出)上,并直接插入设备102,这样VM可以在设备102上执行。因此,设备102可以由无线传送、有线传送或者通过直接从存储设备中取得来接收VM。
因为设备102是可移动的而且具有有限的存储器资源,它特别适合于运行具有延续传递的一个或者多个实施方式的VM。例如,因为设备102具有有限的存储容量,所以具有延续传递的VM运行使其有效地利用可用的存储器并且提供快速和高效率的程序解释以及非本地程序指令的执行。
图2示出的功能方框图图示出包括用于完成延续传递的VM的设备102的一个实施方式。设备102包括指令处理逻辑202,其耦合到内部数据总线204。本地指令存储器206、已解释指令存储器208、堆存储器210、用户接口212和输入/输出(I/O)接口214也耦合到内部数据总线204。
在设备102的运行期间,处理逻辑202执行存储在本地指令存储器206中的程序指令。在一个或者多个实施方式中,处理逻辑202包括CPU、门阵列、硬件逻辑、软件或者任何的硬件和软件的结合。因此,处理逻辑202总体上包括执行存储在本地指令存储器206中的机器可读指令的逻辑。
本地指令存储器206包括RAM、ROM、FLASH、EEROM或者任何其它合适的类型的存储器,或者任何的它们的结合。在一个实施方式中,本地指令存储器206位于设备102的内部,而在另一个实施方式中,本地指令存储器206包括可以有选择地连接到设备102的移动存储卡或者存储设备,并且耦合到内部总线204。因此,本地指令存储器206实际上可以包括任何类型的能够存储处理逻辑202可以执行的指令的存储器。
用户接口212——例如,从键盘、定位设备、触摸板或者其他输入机构(例如接收和处理语音命令的音频电路)——接收用户输入。用户接口212也可以为多种输出机构提供输出,例如为显示器、LED、音频扩音器或者其他类型的可视的或可听的指示器。因此,用户接口212包括硬件和/或软件的任意的结合,其允许设备102接收用户输入并输出可视的信息或者可听的指示给用户。
I/O接口214工作用于发送和接收设备102与外部设备、系统和/或者网络之间的信息。例如,在一个实施方式中,I/O接口214包括无线电收发电路(未示出),其工作用于通过无线数据网络使用例如通信链路106发送和接收信息。例如,收发器包括以下电路,该电路将从处理逻辑202接收的信息进行调制并将调制后的信息转换为适合于无线传送的高频信号。类似地,收发器还包括以下电路,该电路将接收的高频通信信号转换为适合于解调并接下来通过处理逻辑202进行处理的信号。
在另一个实施方式中,I/O接口214包括收发器,其工作用于通过电路通信链路——例如电话线路——发送和接收信息,以便和在公共数据网络——例如因特网——上的远程系统进行通信。
还是在另外一个实施方式中,I/O接口214包括工作用于使用链路120和本地设备——例如本地工作站116——进行通信的电路。I/O接口214还可以包括和打印机或者其他本地计算机或者设备——例如软盘或者存储卡——通信的电路。因此,I/O接口214可以包括任何类型的硬件、软件或者它们的结合,从而允许设备102和其他本地或者位于远程的设备或系统进行通信。
在设备102工作期间,存储在本地指令存储器206的本地程序指令由处理逻辑202执行。在一个实施方式中,由处理逻辑202执行的本地程序指令使得将生成VM 218。VM 218工作用于解释存储在已解释指令存储器208中的非本地程序指令。例如,含有非本地程序指令——像应用程序112——的应用程序,可以通过无线网络下载到设备102并存储在已解释指令存储器208中。
为了协助指令的执行,VM 218利用堆栈存储器216临时存储程序数据或者指令。例如,VM 218可以将常量、变量、程序地址、指针、指令或者其他信息项目存储到堆栈存储器216上。在另一个实施方式中,VM 218可以将信息临时存储在堆存储器210中。堆存储器实际上包括适合于处理逻辑202存储和取回信息的任何类型的存储器。堆栈存储器216可以专门给VM 218使用,或者也可以在指令执行期间和处理逻辑202共享。
在一个实施方式中,处理逻辑202通过内部总线204从本地指令存储器206中取回本地指令。本地程序指令的执行使得将生成VM 218。然后VM218通过内部总线204取回并执行存储在已解释指令存储器208中的非本地指令。因此,设备102工作用于使VM218产生,其允许设备102运行非本地程序代码从而为用户提供选定的功能。例如,设备的用户可能希望下载并运行和设备102的硬件或者软件配置不兼容的JAVA应用程序。VM 218工作用于提供JAVA系统环境,从而允许JAVA应用程序在设备102上运行。更进一步的,VM 218工作用于提供一个或者多个延续传递的实施方式来提供非本地指令的快速的解释和执行以及对设备102的有限的存储器资源的有效的利用。
在一个实施方式中,产生VM 218的本地程序指令从远程服务器通过I/O接口214被下载到设备102的本地指令存储器206中。例如,参照图1,远程服务器104通过无线网络108将本地程序指令下载到设备102。在另一个实施方式中,本地工作站116通过链路120将本地程序指令下载到设备102。通过类似的方式,非本地程序指令也可以下载到设备102。
需要注意的是设备102的配置只是一种适合于生成提供延续传递的VM的配置。也有可能生成本发明范围之内的使用其他设备配置的VM。更进一步的,虽然上述的VM被示出在无线设备102中实现,实际上在任何类型的具有嵌入式处理器和有限存储器资源的设备中实现该VM也是可行的。
图3示出的是无线设备102中的存储器资源的详细图示,VM218使用这些存储器资源创建延续块来提供延续传递。存储器资源包括堆栈存储器216,在延续块创建之前以302示出,而在延续块创建之后以304示出。在一个实施方式中,延续块可以被创建和/或存储在堆存储器210中。定义堆栈片段306,其包含和当前延续-创建上下文相关的信息。
图4示出的是在无线设备102中的存储器资源的详细图示,VM218使用该存储器资源估算图3中示出的延续块。堆栈存储器216在延续块被估算前以402示出,在延续块被估算后以404示出。
图5示出的是用于在资源有限的设备——例如无线设备102——中使用的运行VM来提供延续传递的方法500的一个实施方式。为了清楚,方法500的说明将参照在图3和图4中示出的存储器资源,以及在图1和图2中示出的体系结构。更进一步的,将假设用于生成提供延续传递的VM的本地程序指令存储在本地程序存储器206中。更进一步假设包括非本地程序指令的应用程序——例如应用程序112——存储在已解释程序存储器208中。非本地程序指令是被创建来用于另一系统,而且和设备102不直接兼容。但是,非本地程序指令提供了设备102的用户需要的功能。因此,生成VM来解释和执行非本地程序指令以实现需要的功能对设备102的用户是有利的。更进一步的,VM工作用于提供延续传递的一个或多个实施方式来有效地利用设备102的有限的存储器资源。
在块502,生成VM的本地程序指令被存储到本地存储器中。例如,VM可以从无线网络108通过信道106和接口214下载到设备102。在另一个实施方式中,VM可以从本地工作站116通过链路120和接口214下载到设备102。在另一个实施方式中,本地指令存储器可以包括插入到设备102的存储设备——例如存储卡——而VM存储在那个存储设备上。还是在另一个实施方式中,VM在设备102的制造期间存储到存储器206中。
在块504,代表为在不同的系统上运行而设计的应用程序的非本地程序指令被存储到已解释指令存储器中。例如,非本地指令可以通过无线网络108从网络服务器104下载到设备102的已解释指令存储器208中。在另一个实施方式中,非本地指令从本地工作站116下载,或者包含在插入到设备102的存储设备中。
在块506,VM被激活。例如,处理逻辑202通过内部总线204从本地指令存储器206取回本地指令并开始执行这些指令。通过执行这些本地指令,处理逻辑工作而生成VM218。
在块508,VM开始解释在已解释指令存储器中的非本地指令。例如,VM 218通过内部总线204从存储器208取回非本地指令。VM解释并执行这些指令。在一个实施方式中,VM使用堆栈存储器216或者堆存储器210作为临时存储区域。在另一个实施方式中,堆栈存储器216是VM专用的堆栈存储器,其可以和处理逻辑202使用的任一堆栈存储器不同。
在块510,在非本地指令的解释期间,VM遇到上下文-创建触发标识。例如,该上下文-创建触发标识可以在VM遇到一个或者多个选定的非本地指令进行解释的时候产生。在另一个实施方式中,触发标识可以在VM遇到和非本地指令关联的程序标记的时候产生。当遇到触发标识的时候,堆栈216的显示如302所示。
在块512,作为上下文-创建触发标识的响应,VM工作用于创建一个延续块,如图3中所示。该延续块包括堆栈片段306以及块首部,其含有在活动记录中包含的信息(也就是,代码指针等等)。堆栈片段306代表堆栈216的一部分的拷贝。例如,堆栈片段306中的信息是从当前堆栈底部308延展到当前堆栈顶部310的堆栈216的一部分。然后堆栈片段306被复制到延续块中。在一个实施方式中,延续块接下来被存储到堆栈216上,如304所示。因此,方法500的第一部分工作用于响应于遇到上下文-创建触发标识生成包含堆栈片段306的延续块。
方法500的剩余部分描述了VM如何工作来估算延续。
在块514,VM遇到一条延续估算指令,该指令可能在延续块创建之后的某个时刻出现。在块516,VM取回延续块,例如,如图4所示,从堆栈216取回延续块。
在块518,存储在延续块中的堆栈片段306被压回到堆栈上。例如,参照图4,堆栈片段306被压到堆栈216上,如404显示的堆栈的图示。在执行这个步骤当中,确定了新的堆栈顶部和新的堆栈底部。
在块520,通过跳转到和存储在延续块中的代码指针关联的程序代码估算该延续。例如,和延续块关联的块首部包含待估算延续的时候跳转到的一个代码指针。因此,方法500提供了用于在存储器有限的无线设备中实现的VM中的延续传递。应该注意的是,在本发明的范围之内拓展上述的过程来提供嵌套延续传递也是可行的。
方法500是作为例证的而不限制在这里描述的延续传递的各个实施方式的工作。例如,对上述任一方法步骤进行小的改变、增加或者删减对于本领域的人都应该是很明显的。更进一步的,可以不偏离上述实施方式的范围对上述的方法步骤进行结合、重新安排或者重新排序。
图6图示的数据网络600包括具有有限存储器资源的无线设备,适合于实现VM的一个或者多个实施方式来完成延续传递。该无线设备包括无线电话602、个人数字助理(PDA)604、寻呼机/电子邮件设备606以及手写式计算机计算机608。由于其尺寸小而且重量轻,这些设备使用嵌入式处理器而且具有有限的存储器资源。
这些设备(602、604、606和608)包括以下电路,其使用无线通信信道610通过无线数据网络614和无线网络服务器612通信。无线通信信道610可以包括,例如,卫星通信信道、地面通信信道或者任何其他类型的射频(RF)或者电磁通信信道。无线数据网络614可以为能够使用选定的通信信道610进行工作的任何适合的网络。
另外,无线设备(602、604、606和608)还包括通过有线通信信道616和工作站618通信的电路。工作站618包括使用有线数据网络624通过有线通信信道622和网络服务器620通信的逻辑。更进一步的,工作站618包括使用无线通信信道626以及无线网络614和无线网络服务器612通信的逻辑。
在网络600的工作中,无线设备(602、604、606和608)包括用于完成延续传递的VM的一个或者多个实施方式。例如,当制造各个设备的时候,VM可以并入无线设备之中。在另一个实施方式中,VM可以存储在存储卡(未示出)上,该卡被插入到无线设备中,从而允许该无线设备从存储卡取回指令并运行VM。因此,包含VM的程序指令被存储在计算机可读介质上。实际上任何类型的计算机可读介质都可以用于存储程序指令,当这些程序指令被无线设备执行的时候,其生成完成这里描述的延续传递的VM的一个或者多个实施方式。
在本发明包括的一个或者多个实施方式中,这些方法和设备提供了用于在资源有限的设备中完成延续传递的VM。因此,由于该方法和设备的一个或多个实施方式已经在此进行了图示和描述,应该理解,不脱离其精神或本质特征可以对这些实施方式进行各种修改。因此,在这里的披露和说明对本发明的范围是示例性的而不是限制性的,本发明的范围在下面的权利要求中提出。
Claims (11)
1.一种用于在具有堆栈存储器的虚拟机中提供延续传递的方法,包括:
遇到上下文-创建触发标识;
响应于所述遇到所述上下文-创建触发标识:
构造延续块,所述延续块包括块首部和堆栈片段,所述堆栈片段包括所述堆栈存储器从当前堆栈顶端地址到当前堆栈底端地址之间的范围;以及
将所述延续块压到所述堆栈存储器上;
遇到估算指令;以及
响应于所述遇到所述估算指令:
从所述堆栈存储器取出所述延续块;
将所述延续块的所述堆栈片段部分压到所述堆栈存储器上;
将所述当前堆栈顶端地址设置为所述堆栈存储器的所述堆栈片段的开始;以及
将所述当前堆栈底端设置为所述堆栈存储器的所述堆栈片段的结尾。
2.权利要求1中的方法,其中所述上下文-创建触发标识包括选定的程序指令。
3.权利要求1中的方法,其中所述上下文-创建触发标识包括和程序指令关联的程序标记。
4.权利要求1中的方法,还包括跳转到选定的程序代码以估算延续。
5.一种在具有嵌入式处理器的无线设备中使用的虚拟机设备,该虚拟机设备包括:
堆栈存储器,其包含用于压入和取出信息的逻辑装置;
遇到上下文-创建触发标识的逻辑装置;
通过以下操作响应遇到所述上下文-创建触发标识的逻辑装置:
构造延续块,所述延续块包括块首部和堆栈片段,所述堆栈片段包括所述堆栈存储器从当前堆栈顶端地址到当前堆栈底端地址之间的范围;以及
将所述延续块压到所述堆栈存储器上;
遇到估算指令的逻辑装置;以及
通过以下操作响应遇到所述估算指令的逻辑装置:
从所述堆栈存储器取出所述延续块;
将所述延续块的所述堆栈片段部分压到所述堆栈存储器上;
将所述当前堆栈顶端设置为所述堆栈存储器的所述堆栈片段的开始;以及
将所述当前堆栈底端设置为所述堆栈片段的结尾。
6.权利要求5中的虚拟机设备,其中所述上下文-创建触发标识包括上下文估算指令。
7.权利要求5中的虚拟机设备,其中所述上下文-创建触发标识包括和程序指令关联的程序标记。
8.权利要求5中的虚拟机设备,还包括跳转到选定程序代码以估算延续的逻辑装置。
9.一种虚拟机设备,包括:
堆栈存储器装置;
用于遇到上下文-创建触发标识的装置;
用于通过以下操作响应遇到所述上下文-创建触发标识的装置:
构造延续块,所述延续块包括块首部和堆栈片段,所述堆栈片段包括所述堆栈存储器装置从当前堆栈顶端地址到当前堆栈底端地址之间的范围;以及
将所述延续块压到所述堆栈存储器上;
用于遇到估算指令的装置;以及
用于响应遇到所述估算指令的装置,包括:
用于从所述堆栈存储器取出所述延续块的装置;
用于将所述延续块的所述堆栈片段部分压到所述堆栈存储器上的装置;
用于将所述当前堆栈顶端设置为所述堆栈存储器的所述堆栈片段的开始的装置;以及
用于将所述当前堆栈底端设置为所述堆栈片段的结尾的装置。
10.权利要求9中的虚拟机设备,还包括用于跳转到选定的程序代码以估算延续的装置。
11.一种具有嵌入式处理器的无线设备,该无线设备包括:
堆栈存储器,其包含用于压入和取出信息的逻辑装置;以及
用于执行延续传递的虚拟机设备,该虚拟机设备包括:
遇到上下文-创建触发标识的逻辑装置;
通过以下操作响应遇到所述上下文-创建触发标识的逻辑装置:
构造延续块,所述延续块包括块首部和堆栈片段,所述堆栈片段包括所述堆栈存储器从当前堆栈顶端地址到当前堆栈底端地址之间的范围;以及
将所述延续块压到所述存储器上;
遇到估算指令的逻辑装置;以及
通过以下操作响应遇到所述估算指令的逻辑装置:
从所述堆栈存储器取出所述延续块;
将所述延续块的所述堆栈片段部分压到所述堆栈存储器上;
将所述当前堆栈顶端设置为所述堆栈存储器的所述堆栈片段的开始;以及
将所述当前堆栈底端设置为所述堆栈片段的结尾。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/659,829 US7114153B2 (en) | 2003-09-10 | 2003-09-10 | Method and apparatus for continuation-passing in a virtual machine |
US10/659,829 | 2003-09-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1864136A CN1864136A (zh) | 2006-11-15 |
CN100470481C true CN100470481C (zh) | 2009-03-18 |
Family
ID=34227011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800286997A Expired - Fee Related CN100470481C (zh) | 2003-09-10 | 2004-08-25 | 用于在虚拟机中进行延续传递的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7114153B2 (zh) |
EP (1) | EP1665043A4 (zh) |
JP (1) | JP2007505395A (zh) |
KR (1) | KR101164465B1 (zh) |
CN (1) | CN100470481C (zh) |
WO (1) | WO2005026881A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743377B2 (en) * | 2004-10-25 | 2010-06-22 | Microsoft Corporation | Cooperative threading in a managed code execution environment |
US7353034B2 (en) | 2005-04-04 | 2008-04-01 | X One, Inc. | Location sharing and tracking using mobile phones or other wireless devices |
US7788665B2 (en) * | 2006-02-28 | 2010-08-31 | Microsoft Corporation | Migrating a virtual machine that owns a resource such as a hardware device |
US9286108B2 (en) * | 2008-10-30 | 2016-03-15 | Oracle America, Inc. | Method to track application context and application identification |
CN101833471A (zh) * | 2010-05-07 | 2010-09-15 | 沈阳理工大学 | 一种虚拟机的单栈设计方法 |
US9501415B1 (en) * | 2012-10-09 | 2016-11-22 | Amazon Technologies, Inc. | Image caching system to support fast scrolling of images in a graphical user interface |
US10331653B2 (en) * | 2016-06-27 | 2019-06-25 | Schneider Electric Software, Llc | Double-buffered locking in a database architecture |
US11436181B2 (en) | 2016-06-30 | 2022-09-06 | Copper Inc. | Data processing systems and methods for transmitting and modifying data via a smart data cable |
US20180005218A1 (en) | 2016-06-30 | 2018-01-04 | Copper LLC | Smart data cable for point of sale systems |
US11321693B1 (en) | 2020-12-10 | 2022-05-03 | Copper Inc. | Data processing systems and methods for transmitting and modifying data via a smart data cable |
US11132667B1 (en) | 2020-12-10 | 2021-09-28 | Copper Inc. | Data processing systems and methods for transmitting and modifying data via a smart data cable |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590332A (en) * | 1995-01-13 | 1996-12-31 | Baker; Henry G. | Garbage collection, tail recursion and first-class continuations in stack-oriented languages |
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US5928321A (en) * | 1997-05-30 | 1999-07-27 | Sony Corporation | Task and stack manager for digital video decoding |
US6092152A (en) * | 1997-06-23 | 2000-07-18 | Sun Microsystems, Inc. | Method for stack-caching method frames |
JPH11296381A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
GB2378535A (en) * | 2001-08-06 | 2003-02-12 | Ibm | Method and apparatus for suspending a software virtual machine |
-
2003
- 2003-09-10 US US10/659,829 patent/US7114153B2/en not_active Expired - Lifetime
-
2004
- 2004-08-25 WO PCT/US2004/027720 patent/WO2005026881A2/en active Search and Examination
- 2004-08-25 JP JP2006526127A patent/JP2007505395A/ja active Pending
- 2004-08-25 EP EP04782241A patent/EP1665043A4/en not_active Withdrawn
- 2004-08-25 CN CNB2004800286997A patent/CN100470481C/zh not_active Expired - Fee Related
- 2004-08-25 KR KR1020067004663A patent/KR101164465B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2005026881A3 (en) | 2006-02-16 |
KR20060120638A (ko) | 2006-11-27 |
WO2005026881A2 (en) | 2005-03-24 |
JP2007505395A (ja) | 2007-03-08 |
CN1864136A (zh) | 2006-11-15 |
EP1665043A2 (en) | 2006-06-07 |
EP1665043A4 (en) | 2008-10-08 |
US7114153B2 (en) | 2006-09-26 |
KR101164465B1 (ko) | 2012-08-06 |
US20050055663A1 (en) | 2005-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7373398B2 (en) | Sync-time read only memory image binding for limited resource devices | |
JP4897837B2 (ja) | ユーザインターフェースコンポーネントをワイヤレスデバイスにダウンロードするシステムおよび方法 | |
CN102939579B (zh) | 绑定用户接口元素和粒度反映处理的方法和装置 | |
CN102654814B (zh) | 调用应用中的功能的方法、装置和电子设备 | |
CN100470481C (zh) | 用于在虚拟机中进行延续传递的方法和设备 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
WO2001050712A2 (en) | Script based interfaces for mobile phones | |
CN113312245B (zh) | 一种可集成的波形管理终端及管理方法 | |
US20100179982A1 (en) | Method for auditing the data of a computer application of a terminal | |
CN111414265B (zh) | 一种调用系统资源的服务框架及方法 | |
CN103049244A (zh) | 一种传输操作指令的方法及装置 | |
US10599444B2 (en) | Extensible input stack for processing input device data | |
US7886304B1 (en) | Method and system implementing efficient remote procedure call and emulation system therefor | |
CN110404253A (zh) | 接口数据获取方法及装置、电子设备、存储介质 | |
CN100464300C (zh) | 基于arm的二进制执行环境平台及利用它的加载方法 | |
WO2019139738A1 (en) | Extensible input stack for processing input device data | |
CN109960505A (zh) | 用户界面组件插件化方法、系统、设备及存储介质 | |
CN110413285A (zh) | 一种部署云端服务的方法以及开发云端服务的方法 | |
CN106528196B (zh) | 智能设备的app加载方法及应用该方法的智能设备、系统 | |
CN114880020A (zh) | 软件开发工具包管理方法、相关装置及计算机程序产品 | |
CN115269170A (zh) | 内存申请方法及相关设备 | |
EP1715413A1 (en) | Method and system for extending scripting languages | |
WO2024152722A1 (zh) | 一种通信方法、系统与终端设备 | |
Lee et al. | A configurable Java architecture for mobile terminal software download | |
CN108595281B (zh) | 活动对象处理方法、装置、存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1096172 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1096172 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090318 Termination date: 20180825 |