KR101164465B1 - Method and apparatus for continuation-passing in a virtual machine - Google Patents

Method and apparatus for continuation-passing in a virtual machine Download PDF

Info

Publication number
KR101164465B1
KR101164465B1 KR1020067004663A KR20067004663A KR101164465B1 KR 101164465 B1 KR101164465 B1 KR 101164465B1 KR 1020067004663 A KR1020067004663 A KR 1020067004663A KR 20067004663 A KR20067004663 A KR 20067004663A KR 101164465 B1 KR101164465 B1 KR 101164465B1
Authority
KR
South Korea
Prior art keywords
stack
contiguous block
memory
virtual machine
fragment
Prior art date
Application number
KR1020067004663A
Other languages
Korean (ko)
Other versions
KR20060120638A (en
Inventor
마르크 이 니담
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20060120638A publication Critical patent/KR20060120638A/en
Application granted granted Critical
Publication of KR101164465B1 publication Critical patent/KR101164465B1/en

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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing 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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Transceivers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

가상머신에서 연속전달을 위한 방법 및 디바이스. 무선 디바이스에서 연속전달을 제공하도록 가상머신을 동작하기 위한 방법이 제공된다. 가상머신은 스택 메모리를 포함한다. 본 방법은 콘텍스트 생성 트리거를 발생하는 단계, 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하는 단계, 평가 명령을 발생하는 단계, 및 평가 명령에 응답하여 연속 블록으로부터 유도된 스택 프레그먼트를 스택 메모리 상에 저장하는 단계를 포함한다.Method and device for continuous delivery in a virtual machine. A method is provided for operating a virtual machine to provide continuous delivery at a wireless device. The virtual machine includes stack memory. The method includes generating a context generation trigger, constructing a contiguous block comprising a stack fragment derived from stack memory in response to the trigger, generating an evaluating instruction, and from the contiguous block in response to the evaluating instruction. Storing the derived stack fragment on stack memory.

연속전달, 가상머신, 무선 디바이스 Continuous delivery, virtual machine, wireless device

Description

가상머신에서 연속전달을 위한 방법 및 장치{METHOD AND APPARATUS FOR CONTINUATION-PASSING IN A VIRTUAL MACHINE}METHOD AND APPARATUS FOR CONTINUATION-PASSING IN A VIRTUAL MACHINE}

I. 기술분야I. Technology

본 발명은 일반적으로 컴퓨팅 시스템에 관한 것이고, 보다 상세하게는, 효율적인 프로그램 흐름 및 메모리 자원 이용을 제공하기 위해 가상머신 (VM) 에서 연속전달 (continuation passing) 을 제공하기 위한 방법 및 장치에 관한 것이다.TECHNICAL FIELD The present invention generally relates to computing systems, and more particularly, to a method and apparatus for providing continuation passing in a virtual machine (VM) to provide efficient program flow and memory resource utilization.

II. 배경기술II. Background technology

기술 진보의 결과로 무선 디바이스는 더욱 작고 강력하게 되었다. 예를 들어, 소형, 경량이며, 유저들에 의해 쉽게 휴대될 수 있는 다양한 휴대용 무선 전화기, 개인용 정보 단말기 (PDA), 및 호출기들이 현재 존재한다. 일반적으로, 이들 디바이스들은 제한된 메모리 자원을 가진 내장된 제어기를 포함한다. 예를 들어, 사용가능한 메모리 양은 디바이스의 작은 크기에 의해 제한될 수도 있다.As a result of technological advances, wireless devices have become smaller and more powerful. For example, there are now a variety of portable cordless phones, personal digital assistants (PDAs), and pagers that are compact, lightweight, and easily portable by users. In general, these devices include an embedded controller with limited memory resources. For example, the amount of available memory may be limited by the small size of the device.

무선 디바이스들이 더욱 널리 퍼짐에 따라, 이들 디바이스들이 더욱 큰 용량의 데이터를 처리하고, 더욱 복잡한 프로그램을 실행할 필요성이 증가하고 있다. 예를 들어, 유저들은, 무선 네트워크를 사용하여 원격 서비스 제공자와의 고속이며 효율적인 통신을 제공하도록 무선 디바이스들에게 요구하는 게임 프로그램과 같은 양방향 프로그램에 대한 원격 액세스를 요구하고 있다. 또한, 유저들은 일반적으로 더욱 큰 집 또는 사무실 시스템에서 액세스 가능한 특정 프로그램에 원격 액세스하고자 한다.As wireless devices become more widespread, the need for these devices to process larger amounts of data and to execute more complex programs is increasing. For example, users are demanding remote access to interactive programs, such as game programs, that require wireless devices to provide high speed and efficient communication with remote service providers using wireless networks. In addition, users generally want to remotely access certain programs that are accessible from larger home or office systems.

이러한 요구에 부응하기 위하여, 디바이스 및 서비스 제공자들은 그들 자신의 기술을 개발하거나, 기존 기술을 사용하고자 하는 선택을 한다. 그러나, 새로운 기술을 개발하는 것은 시간과 비용 모두를 소모하게 되고, 따라서 매력적이지 않은 대안이다. 기존 소프트웨어와 같은 기존 기술을 사용하기 위해, 호환성 문제가 극복되어야 한다. 예를 들어, 하나의 프로세싱 시스템에 대해 개발된 소프트웨어는 다른 프로세싱 시스템과 호환되지 않을 수도 있다. 따라서, 무선 디바이스에서 실행되도록 하나 이상의 시스템으로부터 소프트웨어를 포팅 (port) 하는 경우에 호환성 문제가 해결될 필요가 있다.To meet this need, devices and service providers choose to develop their own technology or use existing technology. However, developing new technologies consumes both time and money and is therefore an unattractive alternative. In order to use existing technologies such as existing software, compatibility issues must be overcome. For example, software developed for one processing system may not be compatible with another processing system. Thus, compatibility issues need to be addressed when porting software from one or more systems to run on a wireless device.

호환성 문제를 극복하는 데 사용되는 하나의 기술은 가상머신 (VM) 의 사용과 관련된다. 일반적인 가상머신은 어떤 다른 시스템 (즉, 원격 시스템) 을 위해 기입된 비-네이티브 (non-native) 프로그램 명령을 호스트 시스템이 실행하게 하는, 호스트 시스템 상에서 실행되는 소프트웨어를 포함한다. 예를 들어, 원격 시스템 상에서 실행되도록 기입된 비-네이티브 프로그램 명령은 호스트 시스템 상에서 실행되는 가상머신 소프트웨어에 의해 해석된다. 따라서, 무선 디바이스 상에서 실행되는 가상머신은 디바이스가 다양한 서로 다른 시스템들을 위해 기입된 소프트웨어를 실행하게 하여, 그에 의해, 디바이스 개발자들 및 서비스 제공자들로 하여금 기존의 소프트웨어를 사용하여 무선 디바이스 유저들에게 부가된 기능성을 제공하게 한다.One technique used to overcome compatibility problems involves the use of virtual machines (VMs). A typical virtual machine includes software running on a host system that causes the host system to execute non-native program instructions written for any other system (ie, a remote system). For example, non-native program instructions written to run on a remote system are interpreted by the virtual machine software running on the host system. Thus, a virtual machine running on a wireless device allows the device to execute written software for various different systems, thereby allowing device developers and service providers to add to wireless device users using existing software. To provide added functionality.

불운하게도, 자원 제한된 무선 디바이스에 가상머신을 구현하는 것은 다른 문제들을 야기한다. 예를 들어, 대부분의 가상머신 구현은 상수, 변수, 호출된 절차에 대한 인수, 또는 프로그램 실행에 필요한 다른 정보를 저장하도록 스크래치 패드로서 사용될 수도 있는 임시 저장용 스택을 사용한다. 바이트코드 실행 동안, 스택 포인터, 현재 프로그램 카운터 (PC), 코드 포인터 등을 포함할 수도 있는 활성화 기록 또는 콘텍스트를 생성하는 동적 함수를 인카운터 (encounter) 하는 것이 가능하다. 클로져 (closure) 또는 블록은 (블록이 생성되었던 장소로부터) 현재 콘텍스트의 스택상의 엘리먼트를 지칭하는 바이트코드 프레그먼트 (fragment) 이다. 블록들은 콘텍스트로부터 리턴되어 애플리케이션 코드의 다른 곳에서 사용될 수 있다. 일례는 정렬 함수에 전달된 정렬 블록이다. 블록을 후위 단계에서 실행하기 위해, 콘텍스트 생성은 릴리스될 수 없으며, 즉, 생성 함수는 리턴할 수 없다. 블록은 생성 함수로부터 만들어진 함수 호출에만 전달될 수 있다. 그러나, 파라미터화된 블록 (즉, 생성한 콘텍스트에서 데이터를 지칭하는 블록) 을 리턴할 수 있는 것은 매우 유용할 것이다.Unfortunately, implementing virtual machines in resource limited wireless devices presents other problems. For example, most virtual machine implementations use a stack for temporary storage that may be used as a scratch pad to store constants, variables, arguments to a called procedure, or other information needed to execute a program. During bytecode execution, it is possible to encounter dynamic functions that generate activation records or contexts that may include stack pointers, current program counters (PCs), code pointers, and the like. A closure or block is a bytecode fragment that refers to an element on the stack of the current context (from where the block was created). Blocks can be returned from the context and used elsewhere in the application code. One example is an alignment block passed to an alignment function. In order to execute the block at a later stage, the context generation cannot be released, that is, the generation function cannot return. Blocks can only be passed to function calls made from generated functions. However, it would be very useful to be able to return a parameterized block (ie, a block that refers to data in the context that you created).

어떤 시스템들은 각 활성화 기록에 대해 완전히 새로운 스택을 생성함으로써 이러한 문제를 해결한다. 각 활성화 기록에 대한 최대 스택 크기가 컴파일 시간에 계산될 수 있기 때문에, 스택 크기는 제한된다. 이러한 기술이 문제를 해결할 것으로 보이지만, 그것은 스택 생성 및 파라미터 복사로 모든 함수 호출에 페널티를 주게 되며, 이는 무선 디바이스와 같은 낮은 프로세싱 전력 및 제한된 메모리를 포함한 시스템에는 비용이 많이 든다. 활성화 기록 생성에서 블록이 어떠한 활성 데이터를 지칭하지 않는 경우에만 (즉, 블록이 빈 경우), 다른 기술들은 활성화 기록의 생성을 리턴하게 한다. 본 기술은 문제의 일부를 해결하지만, 콘텍스트 생성에서 사용가능했던 데이터로 블록이 파라미터화되게 하지 않는다.Some systems solve this problem by creating an entirely new stack for each activation record. Since the maximum stack size for each activation record can be calculated at compile time, the stack size is limited. While this technique seems to solve the problem, it penalizes all function calls with stack creation and parameter copying, which is expensive for systems with low processing power and limited memory, such as wireless devices. Only when the block does not refer to any active data in the activation record generation (ie, the block is empty), other techniques cause the generation of the activation record to return. This technique solves some of the problem, but does not allow the block to be parameterized with data that was available in the context creation.

따라서, 필요한 것은 자원 제한된 무선 디바이스에서 사용을 위한 가상머신이 연속전달을 제공하여, 콘텍스트 생성에서 데이터를 지칭하는 파라미터화된 블록이 리턴하게 하여, 그에 의해, 사용가능한 메모리 자원을 효율적으로 이용하는 동시에 고속 프로그램 실행을 제공하는 것이다.Thus, what is needed is a virtual machine for use in a resource constrained wireless device to provide continuous delivery, so that a parameterized block that refers to data in context creation returns, thereby efficiently using the available memory resources while providing high speed. To provide program execution.

III. 요약III. summary

하나 이상의 실시형태에서, 가상머신이 자원 제한된 무선 디바이스에서 연속전달을 수행하게 하는 방법 및 장치가 제공된다. 예를 들어, 무선 디바이스는 가상머신의 일 실시형태를 제공하는 프로그램 명령을 실행하는 제한된 메모리 자원 및 내장된 프로세서를 가지는 무선 전화기일 수도 있다. 가상머신은 상이한 시스템에 대해 기입된 비-네이티브 프로그램 명령을 무선 디바이스가 실행하게 한다. 따라서, 무선 디바이스는 디바이스 유저에게 비-네이티브 프로그램의 기능성을 제공할 수 있다.In one or more embodiments, a method and apparatus are provided for causing a virtual machine to perform continuous delivery in a resource limited wireless device. For example, a wireless device may be a wireless telephone having limited memory resources and an embedded processor that executes program instructions that provide one embodiment of a virtual machine. The virtual machine allows the wireless device to execute non-native program instructions written for different systems. Thus, the wireless device can provide the device user with the functionality of a non-native program.

일 실시형태에서, 가상머신은 동적 함수 호출과 같은 콘텍스트 생성 트리거를 인카운터하는 것에 응답하여 블록이 생성되도록 연속전달을 수행한다. 가상머신은 현재 콘텍스트의 현재 스택 프레그먼트의 사본을 포함하는 확장된 콘텍스트를 작동시킨다. 또한, 블록에 포함된 파라미터들의 프레그먼트에 대한 파라미터 오프셋이 저장된다. 블록 평가에서, 저장된 스택 프레그먼트의 엘리먼트들은 스택 상에 푸쉬 백하며 (push back), 블록이 생성되었던 블록의 콘텍스트를 효과적으로 재구성한다. 블록에 전달된 파라미터들은 저장된 파라미터 인덱스를 사용하여 프레그먼트로 저장된다. 그 후, 블록은 콘텍스트 생성의 풀 상태 (full state) 로 실행할 수 있다.In one embodiment, the virtual machine performs continuous delivery such that a block is generated in response to encouraging a context creation trigger, such as a dynamic function call. The virtual machine runs an extended context that contains a copy of the current stack fragment of the current context. In addition, a parameter offset for the fragment of the parameters included in the block is stored. In block evaluation, the elements of the stored stack fragment are pushed back on the stack, effectively reconstructing the context of the block in which the block was created. The parameters passed to the block are stored as fragments using the stored parameter index. The block can then execute in the full state of context creation.

스택 프레그먼트를 스택 상에 푸쉬 백함으로써, 블록의 콘텍스트 생성이 효과적으로 복원된다. 이는, 파라미터화된 블록들이 콘텍스트에 의해 리턴되는 것을 가능하게 한다. 블록이 생성되는 경우에만 스택 프레그먼트를 복사함으로써, 프로세싱 및 메모리 오버헤드가 최소화된다.By pushing back the stack fragment on the stack, the context creation of the block is effectively restored. This enables parameterized blocks to be returned by context. By copying the stack fragment only when the block is created, processing and memory overhead is minimized.

일 실시형태에서, 무선 디바이스에서 연속전달을 제공하도록 가상머신을 동작시키기 위한 방법이 제공된다. 가상머신은 스택 메모리를 포함한다. 본 방법은 콘텍스트 생성 트리거를 인카운터하는 단계, 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하는 단계, 평가 명령을 인카운터하는 단계, 및 평가 명령에 응답하여 연속 블록으로부터의 스택 프레그먼트를 스택 메모리 상에 저장하는 단계를 포함한다.In one embodiment, a method is provided for operating a virtual machine to provide continuous delivery at a wireless device. The virtual machine includes stack memory. The method includes the steps of: counting a context generation trigger, constructing a contiguous block comprising a stack fragment derived from stack memory in response to the trigger, encouraging an evaluation instruction, and retrieving from the continuous block in response to the evaluation instruction. Storing the stack fragment on the stack memory.

다른 실시형태에서, 내장된 프로세서를 가지는 무선 디바이스용 가상머신이 제공된다. 가상머신은 정보를 저장 및 검색하기 위한 로직을 포함하는 스택 메모리를 포함한다. 또한, 가상머신은 콘텍스트 생성 트리거를 발생하는 로직 및 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하기 위한 로직을 포함한다. 또한, 가상머신은 평가 명령을 인카운터하기 위한 로직 및 평가 명령에 응답하여 연속 블록으로부터의 스택 프레그먼트를 스택 메모리 상에 저장하기 위한 로직을 포함한다.In another embodiment, a virtual machine for a wireless device having an embedded processor is provided. The virtual machine includes a stack memory that contains logic for storing and retrieving information. The virtual machine also includes logic for generating a context creation trigger and logic for constructing a contiguous block comprising stack fragments derived from stack memory in response to the trigger. The virtual machine also includes logic for counting evaluation instructions and logic for storing stack fragments from consecutive blocks on stack memory in response to the evaluation instructions.

다른 실시형태에서, 내장된 프로세서를 가지는 무선 디바이스용 가상머신이 제공된다. 가상머신은 스택 메모리를 제공하는 수단 및 콘텍스트 생성 트리거를 인카운터하는 수단을 포함한다. 또한, 가상머신은 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하는 수단을 포함한다. 또한, 가상머신은 평가 명령을 인카운터하는 수단 및 평가 명령에 응답하여 연속 블록으로부터의 스택 프레그먼트를 스택 메모리 상에 저장하는 수단을 포함한다.In another embodiment, a virtual machine for a wireless device having an embedded processor is provided. The virtual machine includes means for providing a stack memory and means for counting a context creation trigger. The virtual machine also includes means for constructing a contiguous block comprising stack fragments derived from the stack memory in response to the trigger. The virtual machine also includes means for counting evaluation instructions and means for storing stack fragments from consecutive blocks on stack memory in response to the evaluation instructions.

다른 실시형태에서, 프로세싱 로직에 의해 실행되는 경우 연속전달을 수행하는 가상머신을 제공하는 프로그램 명령을 포함하는 컴퓨터 판독가능 매체가 제공된다. 가상머신은 스택 메모리를 포함하며, 컴퓨터 판독가능 매체는 콘텍스트 생성 트리거를 인카운터하기 위한 프로그램 명령을 포함한다. 또한, 컴퓨터 판독가능 매체는 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하기 위한 프로그램 명령을 포함한다. 또한, 컴퓨터 판독가능 매체는 평가 명령을 인카운터하기 위한 프로그램 명령 및 평가 명령에 응답하여 연속 블록으로부터의 스택 프레그먼트를 스택 메모리 상에 저장하기 위한 프로그램 명령을 포함한다.In another embodiment, a computer readable medium is provided that includes program instructions that provide a virtual machine to perform continuous delivery when executed by processing logic. The virtual machine includes a stack memory, and the computer readable medium includes program instructions for encouraging a context creation trigger. The computer readable medium also includes program instructions for constructing a contiguous block containing a stack fragment derived from the stack memory in response to a trigger. The computer readable medium also includes program instructions for counting evaluation instructions and program instructions for storing stack fragments from consecutive blocks on the stack memory in response to the evaluation instructions.

다른 실시형태에서, 내장된 프로세서를 가지는 무선 디바이스가 제공된다. 무선 디바이스는 정보를 저장 및 검색하기 위한 로직을 포함하는 스택 메모리를 포함한다. 또한 무선 디바이스는 연속전달을 수행하도록 동작하는 가상머신을 포함한다. 가상머신은 콘텍스트 생성 트리거를 인카운터하기 위한 로직 및 트리거에 응답하여 스택 메모리로부터 유도된 스택 프레그먼트를 포함하는 연속 블록을 구성하기 위한 로직을 포함한다. 또한 가상머신은 평가 명령을 인카운터하기 위한 로직 및 평가 명령에 응답하여 연속 블록으로부터의 스택 프레그먼트를 스택 메모리 상에 저장하기 위한 로직을 포함한다.In another embodiment, a wireless device having an embedded processor is provided. The wireless device includes a stack memory that includes logic for storing and retrieving information. The wireless device also includes a virtual machine operative to perform continuous delivery. The virtual machine includes logic for encouraging a context creation trigger and logic for constructing a contiguous block comprising stack fragments derived from stack memory in response to the trigger. The virtual machine also includes logic for counting evaluation instructions and logic for storing stack fragments from consecutive blocks on stack memory in response to the evaluation instructions.

본 발명의 다른 양태, 장점, 및 특징은 이하의 도면의 간단한 설명, 발명의 상세한 설명, 및 청구의 범위를 살펴본 후에 명백해질 것이다.Other aspects, advantages, and features of the present invention will become apparent after reviewing the following brief description of the drawings, the detailed description of the invention, and the claims.

도면의 간단한 설명Brief description of the drawings

상술한 실시형태의 전술한 양태 및 부수적인 장점들은 첨부 도면과 함께 이하의 상세한 설명을 참조하여 더욱 명백해진다.The foregoing aspects and additional advantages of the above-described embodiments become more apparent with reference to the following detailed description in conjunction with the accompanying drawings.

도 1 은 제한된 메모리 자원을 가지고, 연속전달을 수행하는 가상머신의 일 실시형태를 구현하기에 적합한 무선 디바이스를 포함하는 데이터 네트워크를 도시한다.1 illustrates a data network having a limited memory resource and including a wireless device suitable for implementing one embodiment of a virtual machine that performs continuous delivery.

도 2 는 도 1 의 무선 디바이스의 일 실시형태를 도시하는 기능 블록도를 도시한다.2 shows a functional block diagram illustrating one embodiment of the wireless device of FIG. 1.

도 3 은 연속전달을 제공하기 위한 연속 블록을 생성하기 위해 사용되는 메모리 자원의 도면을 도시한다.3 shows a diagram of a memory resource used to generate a contiguous block for providing contiguous delivery.

도 4 는 도 3 의 연속 블록을 평가하기 위해 사용되는 메모리 자원의 도면을 도시한다.4 shows a diagram of a memory resource used to evaluate the contiguous block of FIG.

도 5 는 무선 디바이스용 가상머신에서 연속전달을 제공하는 방법의 일 실시형태를 도시한다.5 illustrates one embodiment of a method for providing continuous delivery in a virtual machine for a wireless device.

도 6 은 제한된 자원을 가지고, 연속전달을 수행하는 가상머신의 하나 이상의 실시형태를 구현하기에 적합한 휴대용 컴퓨팅 디바이스를 포함하는 데이터 네트 워크를 도시한다.6 illustrates a data network having a limited resource and including a portable computing device suitable for implementing one or more embodiments of a virtual machine that performs continuous delivery.

발명의 상세한 설명DETAILED DESCRIPTION OF THE INVENTION

이하의 상세한 설명은 무선 디바이스에서 연속전달을 수행하는 가상머신을 제공하는 방법 및 장치의 하나 이상의 실시형태를 설명한다. 하나 이상의 실시형태에서, 무선 디바이스는 제한된 자원 (즉, 제한된 메모리 용량) 을 가지며, 가상머신에 의해서 제공된 연속전달이 이하의 단계들을 수행함으로써 달성된다.The following detailed description describes one or more embodiments of a method and apparatus for providing a virtual machine that performs continuous delivery in a wireless device. In one or more embodiments, the wireless device has limited resources (ie, limited memory capacity), and continuous delivery provided by the virtual machine is accomplished by performing the following steps.

1. 콘텍스트 생성 트리거 (즉, 푸쉬 연속 명령과 같은 연속 생성 명령) 를 인카운터하는 단계.1. Encounter a context generation trigger (ie, a continuous generation instruction such as a push continuous instruction).

2. 스택 프레그먼트에 더하여 활성화 기록에 포함되는 다른 정보 (즉, 코드 포인터 등) 를 포함하는 연속 블록을 구성하는 단계.2. Constructing a contiguous block containing other pieces of information (ie, code pointers, etc.) included in the activation record in addition to the stack fragment.

3. 스택 메모리 상으로 연속 블록을 푸쉬하는 단계.3. Pushing contiguous blocks onto stack memory.

4. 연속성 평가 명령을 인카운터하는 단계.4. Encountering the continuity evaluation command.

5. 연속 블록을 검색하는 단계.5. Search for contiguous blocks.

6. 스택 프레그먼트를 스택 상에 푸쉬 백하는 단계.6. Push back the stack fragment on the stack.

7. 연속 블록에 저장된 코드 포인터와 연관된 프로그램 코드로 점프함으로써 연속성을 평가하는 단계.7. Evaluating continuity by jumping to the program code associated with the code pointer stored in the contiguous block.

도 1 은 제한된 메모리 자원을 가지고, 연속전달을 수행하는 가상머신의 일 실시형태를 구현하기에 적합한 무선 디바이스 (102) 를 포함하는 데이터 네트워크 (100) 를 도시한다. 시스템 (100) 에서, 무선 디바이스 (102) 는, 무선 통신 채널 (106) 을 사용하여 무선 네트워크 (108) 를 통해 네트워크 서버 (104) 와 통신한다. 일 실시형태에서, 디바이스 (102) 는 무선 네트워크 (108) 를 통해 데이터 및/또는 음성정보를 송신 및/또는 수신할 수도 있는 무선 전화기를 포함한다. 그러나, 디바이스 (102) 는 다른 임의의 타입의 무선 디바이스라도 포함할 수도 있다. 디바이스 (102) 는 애플리케이션 (110, 112) 및/또는 시스템 서비스를 포함하는 서버 (104) 로부터 다양한 정보를 요청하도록 동작한다. 예를 들어, 시스템 서비스는 연속전달의 일 실시형태를 제공하는 가상머신 (114) 을 포함한다.1 shows a data network 100 having a limited memory resource and including a wireless device 102 suitable for implementing one embodiment of a virtual machine that performs continuous delivery. In the system 100, the wireless device 102 communicates with the network server 104 via the wireless network 108 using the wireless communication channel 106. In one embodiment, device 102 includes a wireless telephone that may transmit and / or receive data and / or voice information over wireless network 108. However, device 102 may include any other type of wireless device. The device 102 operates to request various information from the server 104, which includes the applications 110, 112 and / or system services. For example, system services include a virtual machine 114 that provides one embodiment of continuous delivery.

일 실시형태에서, 또한, 디바이스 (102) 는 다이렉트 링크 (120) 를 통하여 로컬 워크스테이션 (116) 과 같은 로컬 시스템에 직접 연결된다. 본 다이렉트 링크 (120) 는 디바이스 (102) 가 데이터 및/또는 프로그램을 로컬 워크스테이션 (116) 과 교환하게 한다. 일 실시형태에서, 로컬 워크스테이션 (116) 은 다이렉트 링크 (120) 를 사용하여 디바이스 (102) 로 가상머신 (118) 을 다운로드한다. 가상머신 (118) 은 가상머신 (114) 과 동일할 수도 있고, 양자 모두 연속전달의 하나 이상의 실시형태를 제공하도록 동작한다.In one embodiment, device 102 is also directly connected to a local system, such as local workstation 116, via direct link 120. This direct link 120 allows the device 102 to exchange data and / or programs with the local workstation 116. In one embodiment, local workstation 116 downloads virtual machine 118 to device 102 using direct link 120. The virtual machine 118 may be identical to the virtual machine 114, and both operate to provide one or more embodiments of continuous delivery.

일 실시형태에서, 디바이스 (102) 는 내장된 프로세서, 메모리 및 다양한 인터페이스를 포함하는 내장된 시스템을 포함하므로, 디바이스 (102) 가 서버 (104) 로부터 다운로드된 애플리케이션 (110) 및/또는 가상머신 (114) 을 저장, 로드 및 실행할 수도 있다. 애플리케이션 (110) 및 가상머신 (114) 은, 예를 들어, 디바이스 특정 자원에 대한 일반화된 호출을 제공함으로써, 디바이스의 동작을 단순화하는데 사용되는 디바이스 (102) 에서 실행되는 런타임 환경과 상호작용할 수도 있다. 그러한 런타임 환경의 하나는 미합중국, 캘리포니아, 샌디에고 소재의 퀄컴사에 의해 개발된 Binary Runtime Environment for WirelessTM (BREWTM) 소프트웨어 플랫폼이다.In one embodiment, the device 102 includes an embedded system that includes an embedded processor, memory, and various interfaces, such that the application 102 and / or virtual machine (the device 102 has been downloaded from the server 104). 114 may be stored, loaded, and executed. The application 110 and the virtual machine 114 may interact with a runtime environment running on the device 102 used to simplify the operation of the device, for example, by providing generalized calls to device specific resources. . One such runtime environment is the Binary Runtime Environment for Wireless (BREW ) software platform developed by Qualcomm, San Diego, California, United States.

상이한 컴퓨팅 시스템에 대해 개발된 소프트웨어를 디바이스 (102) 가 용이하게 실행하도록 가상머신 (114) 은 서버 (104) 로부터 디바이스 (102) 로 다운로드될 수도 있다. 예를 들어, 애플리케이션 (112) 은 디바이스 (102) 와 상이한 타겟 디바이스 또는 시스템에 대해 기입된 비-네이티브 프로그램 명령을 포함할 수도 있다. 가상머신 (114) 은 타겟 시스템 상에서 실행될 수 있도록 설계된 (애플리케이션 (112) 과 같은) 타겟 애플리케이션들이 디바이스 (102) 에서 또한 실행될 수도 있기 위해 타겟 시스템의 환경을 시뮬레이팅하도록 동작한다. 예를 들어, 일 실시형태에서, 가상머신 (114) 은 디바이스 (102) 에서 자바 (JAVA) 애플리케이션들이 다운로드되고 실행될 수도 있기 위해 자바 시스템 환경을 제공하도록 동작한다. 하나 이상의 실시형태에서, 가상머신 (114) 은 이러한 비-네이티브 명령들의 실행 동안 연속전달을 제공하기 위한 방법 및 장치를 포함한다.The virtual machine 114 may be downloaded from the server 104 to the device 102 so that the device 102 easily executes software developed for different computing systems. For example, application 112 may include non-native program instructions written for a target device or system that is different from device 102. The virtual machine 114 operates to simulate the environment of the target system so that target applications (such as the application 112) designed to be run on the target system may also run on the device 102. For example, in one embodiment, the virtual machine 114 operates to provide a Java system environment for Java (JAVA) applications on the device 102 to be downloaded and executed. In one or more embodiments, virtual machine 114 includes methods and apparatus for providing continuous delivery during execution of such non-native instructions.

로컬 워크스테이션 (116) 으로부터 디바이스 (102) 로 다운로드된 가상머신 (118) 은 가상머신 (114) 과 동일할 수도 있고, 따라서, 또한 연속전달의 하나 이상의 실시형태를 제공하도록 동작된다. 하나의 실시형태에서, 가상머신 (118) 은 플로피 디스크와 같은 컴퓨터 판독가능 매체 상에 제공되고, 디바이스 (102) 로의 송신을 위해 시스템 (116) 상에 로드된다. 다른 실시형태에서, 가상머신은 메모리 카드 (도시되지 않음) 와 같은 컴퓨터 판독가능한 메모리 디바이스 상에 저장될 수도 있고, 디바이스 (102) 에 직접 플러그될 수도 있으므로, 가상머신은 디바이스 (102) 상에서 실행될 수도 있다. 따라서, 디바이스 (102) 는 무선 송신, 유선 송신으로 , 또는 메모리 디바이스로부터 직접 검색함으로써 가상머신을 수신할 수도 있다.The virtual machine 118 downloaded from the local workstation 116 to the device 102 may be the same as the virtual machine 114, and therefore, is operated to provide one or more embodiments of continuous delivery. In one embodiment, the virtual machine 118 is provided on a computer readable medium, such as a floppy disk, and loaded on the system 116 for transmission to the device 102. In another embodiment, the virtual machine may be stored on a computer readable memory device, such as a memory card (not shown), and may be plugged directly into the device 102, such that the virtual machine may run on the device 102. have. Thus, device 102 may receive the virtual machine by wireless transmission, wired transmission, or by searching directly from the memory device.

디바이스 (102) 가 휴대용이고 제한된 메모리 자원을 가지기 때문에, 연속전달의 하나 이상의 실시형태로 가상머신을 구동시키는데 특히 매우 적합하다. 예를 들어, 디바이스 (102) 는 제한된 메모리 용량을 가지기 때문에, 연속전달을 포함한 가상머신은 사용가능한 메모리를 효율적으로 사용하고, 비-네이티브 프로그램 명령의 고속 및 효율적인 프로그램 해석 및 실행을 제공하도록 동작한다.Because device 102 is portable and has limited memory resources, it is particularly well suited for driving virtual machines in one or more embodiments of continuous delivery. For example, because device 102 has limited memory capacity, virtual machines, including continuous delivery, operate to efficiently use the available memory and provide fast and efficient program interpretation and execution of non-native program instructions. .

도 2 는 연속전달을 수행하도록 동작하는 가상머신을 포함하는 디바이스 (102) 의 일 실시형태를 도시하는 기능 블록도를 도시한다. 디바이스 (102) 는 내부 데이터 버스 (204) 에 연결된 명령 프로세싱 로직 (202) 을 포함한다. 또한, 네이티브 명령 메모리 (206), 해석된 명령 메모리 (208), 힙 메모리 (210 ; heap memory), 유저 인터페이스 (212) 및 입력/출력 (I/O) 인터페이스 (214) 가 내부 데이터 버스 (204) 에 연결된다.2 shows a functional block diagram illustrating an embodiment of a device 102 that includes a virtual machine that operates to perform continuous delivery. Device 102 includes instruction processing logic 202 coupled to internal data bus 204. In addition, native instruction memory 206, interpreted instruction memory 208, heap memory 210, a user interface 212, and an input / output (I / O) interface 214 may include an internal data bus 204. )

디바이스 (102) 의 동작 동안, 프로세싱 로직 (202) 은 네이티브 명령 메모리 (206) 에 저장된 프로그램 명령을 실행한다. 하나 이상의 실시형태에서, 프로세싱 로직 (202) 은 CPU, 게이트 어레이, 하드웨어 로직, 소프트웨어 또는 하드웨어와 소프트웨어의 임의의 조합을 포함한다. 따라서, 프로세싱 로직 (202) 은 일반적으로 네이티브 명령 메모리 (206) 에 저장된 기계 판독가능한 명령을 실행하기 위한 로직을 포함한다.During operation of device 102, processing logic 202 executes program instructions stored in native instruction memory 206. In one or more embodiments, processing logic 202 includes a CPU, gate array, hardware logic, software, or any combination of hardware and software. Thus, processing logic 202 generally includes logic for executing machine readable instructions stored in native instruction memory 206.

네이티브 명령 메모리 (206) 는 RAM, ROM, FLASH, EEROM, 또는 다른 임의의 적합한 타입의 메모리, 또는 이들의 임의의 조합을 포함한다. 일 실시형태에서, 네이티브 명령 메모리 (206) 는 디바이스 (102) 내부에 위치되고, 다른 실시형태에서, 네이티브 명령 메모리 (206) 는 선택적으로 디바이스 (102) 에 부착됨으로써 내부 버스 (204) 에 연결될 수도 있는 휴대용 메모리 카드 또는 메모리 디바이스를 포함한다. 따라서, 네이티브 명령 메모리 (206) 는 프로세싱 로직 (202) 에 의해 실행될 수도 있는 명령을 저장할 수 있는 가상의 임의의 타입의 메모리를 포함한다.Native instruction memory 206 includes RAM, ROM, FLASH, EEROM, or any other suitable type of memory, or any combination thereof. In one embodiment, the native command memory 206 is located inside the device 102, and in another embodiment, the native command memory 206 may be connected to the internal bus 204 by being optionally attached to the device 102. A portable memory card or memory device. Thus, native instruction memory 206 includes virtually any type of memory capable of storing instructions that may be executed by processing logic 202.

유저 인터페이스 (212) 는 예를 들어, 키패드, 포인팅 디바이스, 터치 패드, 또는 음성 명령을 수신하고 프로세싱하는 오디오 회로와 같은 다른 입력 메카니즘으로부터의 유저 입력을 수신한다. 또한, 유저 인터페이스 (212) 는 디스플레이, LED, 오디오 스피커 또는 다른 타입의 시각 또는 청각 인디케이터 (indicator) 와 같은 다양한 출력 메카니즘으로 출력을 제공할 수도 있다. 따라서, 유저 인터페이스 (212) 는 임의의 조합의 하드웨어 및/또는 소프트웨어를 포함하여, 디바이스 (102) 가 유저 입력을 수신하고 시각 정보 또는 청각 인디케이터를 유저에 출력하게 한다.User interface 212 receives user input from another input mechanism such as, for example, a keypad, pointing device, touch pad, or audio circuitry for receiving and processing voice commands. User interface 212 may also provide output to various output mechanisms, such as displays, LEDs, audio speakers, or other types of visual or auditory indicators. Thus, the user interface 212 includes any combination of hardware and / or software such that the device 102 receives user input and outputs visual information or audio indicators to the user.

I/O 인터페이스 (214) 는 디바이스 (102) 와 외부 디바이스, 시스템, 및/또는 네트워크 사이에서 정보를 송신 및 수신하도록 동작한다. 예를 들어, 일 실시형태에서, I/O 인터페이스 (214) 는 예를 들어, 통신 링크 (106) 를 사용하여 무선 데이터 네트워크를 통해 정보를 송신하고 수신하도록 동작하는 무선 송수신기 (transceiver) 회로 (도시되지 않음) 를 포함한다. 예를 들어, 송수신기는 프로세싱 로직 (202) 으로부터 수신된 정보를 변조하고, 변조된 정보를 무선 송신에 적합한 고주파 신호로 변환하는 회로를 포함한다. 또한 유사하게, 송수신기는 수신된 고주파 통신 신호를 프로세싱 로직 (202) 에 의한 복조 및 후속 프로세싱에 적합한 신호로 변환하는 회로를 포함한다.I / O interface 214 operates to transmit and receive information between device 102 and external devices, systems, and / or networks. For example, in one embodiment, I / O interface 214 is a wireless transceiver circuitry (shown, for example) that operates to transmit and receive information over a wireless data network using communication link 106. Or not). For example, the transceiver includes circuitry for modulating information received from the processing logic 202 and converting the modulated information into a high frequency signal suitable for wireless transmission. Similarly, the transceiver also includes circuitry for converting the received high frequency communication signal into a signal suitable for demodulation and subsequent processing by the processing logic 202.

다른 실시형태에서, I/O 인터페이스 (214) 는 전화선과 같은 유선 통신 링크를 통하여 정보를 송신 및 수신하고, 인터넷과 같은 공중 데이터 네트워크 상의 원격 시스템과 통신하도록 동작하는 송수신기를 포함한다.In another embodiment, I / O interface 214 includes a transceiver that operates to transmit and receive information over a wired communication link, such as a telephone line, and to communicate with a remote system on a public data network, such as the Internet.

또 다른 실시형태에서, I/O 인터페이스 (214) 는 링크 (120) 를 사용하여, 로컬 워크스테이션 (116) 과 같은 로컬 디바이스들과 통신하도록 동작하는 회로를 포함한다. 또한 I/O 인터페이스 (214) 는 프린터 또는 다른 로컬 컴퓨터, 또는 플로피 디스크 또는 메모리 카드와 같은 디바이스와 통신하는 회로를 포함한다. 따라서, I/O 인터페이스 (214) 는 임의의 타입의 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 디바이스 (102) 가 다른 로컬 또는 원격 위치된 디바이스들 또는 시스템들과 통신하게 할 수도 있다.In yet another embodiment, I / O interface 214 includes circuitry that operates to communicate with local devices, such as local workstation 116, using link 120. I / O interface 214 also includes circuitry for communicating with a printer or other local computer, or a device such as a floppy disk or memory card. Thus, I / O interface 214 may include any type of hardware, software, or a combination thereof to allow device 102 to communicate with other local or remotely located devices or systems.

디바이스 (102) 의 동작 동안, 네이티브 명령 메모리 (206) 에 저장된 네이티브 프로그램 명령이 프로세싱 로직 (202) 에 의해 실행된다. 일 실시형태에서, 프로세싱 로직 (202) 에 의한 네이티브 프로그램 명령의 실행으로 인해 가상머신 (218) 이 생성된다. 가상머신 (218) 은 해석된 명령 메모리 (208) 에 저장된 비-네이티브 프로그램 명령을 해석하도록 동작한다. 예를 들어, 비-네이티브 프로그램 명령을 가지는 애플리케이션 (112) 과 같은 애플리케이션들은 무선 네트워크를 통하여 디바이스 (102) 로 다운로드되고, 해석된 명령 메모리 (208) 에 저장될 수도 있다.During operation of device 102, native program instructions stored in native instruction memory 206 are executed by processing logic 202. In one embodiment, the execution of native program instructions by the processing logic 202 creates a virtual machine 218. The virtual machine 218 is operative to interpret non-native program instructions stored in the interpreted instruction memory 208. For example, applications such as application 112 having non-native program instructions may be downloaded to device 102 via a wireless network and stored in interpreted instruction memory 208.

명령 실행을 보조하기 위해, 가상머신 (218) 은 프로그램 데이터 또는 명령을 임시적으로 저장하기 위해 스택 메모리 (216) 를 이용한다. 예를 들어, 가상머신 (218) 은 상수, 변수, 프로그램 어드레스, 포인터, 명령 또는 다른 정보 아이템을 스택 메모리 (216) 에 저장할 수도 있다. 다른 실시형태에서, 가상머신 (218) 은 힙 메모리 (210) 에 임시적으로 정보를 저장할 수도 있다. 힙 메모리는 프로세싱 로직 (202) 에 의한 정보의 저장 및 검색에 적합한 가상적인 임의의 타입의 메모리를 포함한다. 스택 메모리 (216) 는 가상머신 (218) 에 의한 사용에 전용될 수도 있고, 또한 명령 실행 동안 프로세싱 로직 (202) 과 공유될 수도 있다.To aid in instruction execution, virtual machine 218 uses stack memory 216 to temporarily store program data or instructions. For example, virtual machine 218 may store constants, variables, program addresses, pointers, instructions, or other information items in stack memory 216. In another embodiment, virtual machine 218 may temporarily store information in heap memory 210. Heap memory includes virtually any type of memory suitable for storage and retrieval of information by processing logic 202. Stack memory 216 may be dedicated to use by virtual machine 218 and may also be shared with processing logic 202 during instruction execution.

일 실시형태에서, 프로세싱 로직 (202) 은 네이티브 명령 메모리 (206) 로부터 내부 버스 (204) 를 통하여 네이티브 명령을 검색한다. 네이티브 프로그램 명령의 실행으로 인해 가상머신 (218) 이 생성된다. 그 후, 가상머신 (218) 은 해석된 명령 메모리 (208) 에 저장된 비-네이티브 명령을 내부 버스 (204) 를 통하여 검색하고 실행한다. 따라서, 디바이스 (102) 는, 선택된 기능성을 유저에게 제공하기 위해 디바이스 (102) 가 비-네이티브 프로그램 코드를 구동시키게 하는 가상머신 (218) 을 생성하도록 동작한다. 예를 들어, 디바이스 유저는 디바이스 (102) 의 하드웨어 또는 소프트웨어 구성 어느 것과도 호환되지 않는 자바 애플리케이션을 다운로드하고 구동시키고자 할 수도 있다. 가상머신 (218) 은 자바 시스템 환경을 제공하도록 동작함으로써, 자바 애플리케이션이 디바이스 (102) 에서 구동하게 한다. 또한, 가상머신 (218) 은 연속전달의 하나 이상의 실시형태를 제공하여, 디바이스 (102) 의 제한된 메모리 자원의 효율적인 사용 및 비-네이티브 명령의 고속 해석 및 실행을 제공하도록 동작한다.In one embodiment, processing logic 202 retrieves native instructions from native instruction memory 206 via internal bus 204. Execution of native program instructions creates virtual machine 218. The virtual machine 218 then retrieves and executes the non-native instructions stored in the interpreted instruction memory 208 via the internal bus 204. Thus, device 102 operates to create a virtual machine 218 that causes device 102 to drive non-native program code to provide the selected functionality to a user. For example, a device user may wish to download and run a Java application that is incompatible with either the hardware or software configuration of device 102. The virtual machine 218 operates to provide a Java system environment, thereby allowing the Java application to run on the device 102. The virtual machine 218 also operates to provide one or more embodiments of continuous delivery to provide efficient use of the limited memory resources of the device 102 and high speed interpretation and execution of non-native instructions.

일 실시형태에서, 가상머신 (218) 을 생성하기 위한 네이티브 프로그램 명령은 I/O 인터페이스 (214) 를 통하여 원격 서버로부터 디바이스 (102) 의 네이티브 명령 메모리 (206) 로 다운로드된다. 예를 들어, 도 1 을 참조하면, 원격 서버 (104) 는 네이티브 프로그램 명령을 디바이스 (102) 로 무선 네트워크 (108) 를 통하여 다운로드한다. 다른 실시형태에서, 로컬 워크스테이션 (116) 은 네이티브 프로그램 명령을 링크 (120) 를 통하여 디바이스 (102) 로 다운로드한다. 유사한 방식으로, 비-네이티브 프로그램 명령 또한 디바이스 (102) 로 다운로드될 수도 있다.In one embodiment, native program instructions for creating virtual machine 218 are downloaded from remote server to native instruction memory 206 of device 102 via I / O interface 214. For example, referring to FIG. 1, the remote server 104 downloads native program instructions to the device 102 over the wireless network 108. In another embodiment, local workstation 116 downloads native program instructions to device 102 via link 120. In a similar manner, non-native program instructions may also be downloaded to the device 102.

디바이스 (102) 의 구성은 연속전달을 제공하는 가상머신을 생성하기에 적합한 단지 일 구성일 뿐이라는 것을 유의해야 한다. 또한 본 발명의 범위 내에서 다른 디바이스 구성을 사용하여 가상머신을 생성하는 것도 가능하다. 또한, 설명된 가상머신이 무선 디바이스 (102) 에 구현되어 있는 것으로 도시되었지만, 내장된 프로세서 및 제한된 메모리 자원을 가지는 가상적인 임의의 타입의 디바이스에도 가상 머신을 구현하는 것이 가능하다.It should be noted that the configuration of device 102 is just one configuration suitable for creating a virtual machine that provides continuous delivery. It is also possible to create virtual machines using other device configurations within the scope of the present invention. In addition, although the described virtual machine is shown implemented in the wireless device 102, it is possible to implement the virtual machine in virtually any type of device with an embedded processor and limited memory resources.

도 3 은 연속전달을 제공하기 위한 연속 블록을 생성하는 가상머신 (218) 에 의해 사용되는 무선 디바이스 (102) 의 메모리 자원의 세부도를 도시한다. 메모리 자원은, 연속 블록이 생성되기 전에 도면부호 (302) 에 도시되고, 연속 블록이 생성된 후에 도면부호 (304) 에 도시되는 스택 메모리 (216) 를 포함한다. 일 실시형태에서, 연속 블록은 힙 메모리 (210) 에 생성 및/또는 저장될 수도 있다. 스택 프레그먼트 (306) 는 현재 연속 생성 콘텍스트에 관련된 정보를 포함하는 것으로 정의된다.3 shows a detailed view of the memory resources of the wireless device 102 used by the virtual machine 218 to create a continuous block for providing continuous delivery. The memory resource includes stack memory 216, shown at 302 before the contiguous block is created, and at 304 after the contiguous block is generated. In one embodiment, contiguous blocks may be created and / or stored in heap memory 210. Stack fragment 306 is defined to contain information related to the current successive generation context.

도 4 는 도 3 에 도시된 연속 블록을 평가하는 가상머신 (218) 에 의해 사용되는 무선 디바이스 (102) 의 메모리 자원의 세부도를 도시한다. 스택 메모리 (216) 는 연속 블록이 평가되기 전에 도면부호 (402) 에 도시되고, 연속 블록이 평가된 후에 도면부호 (404) 에 도시된다.FIG. 4 shows a detailed view of the memory resources of the wireless device 102 used by the virtual machine 218 to evaluate the continuous blocks shown in FIG. 3. Stack memory 216 is shown at 402 before the contiguous block is evaluated, and at 404 after the contiguous block is evaluated.

도 5 는 무선 디바이스 (102) 와 같은 자원 제한된 디바이스용 연속전달을 제공하는 가상머신을 동작하는 방법 500 의 일 실시형태를 도시한다. 명확하게 하기 위해, 방법 500 의 설명은 도 3 및 4 에 도시된 메모리 자원, 및 도 1 및 2 에 도시된 구조를 참조한다. 또한, 연속전달을 제공하는 가상머신을 생성하기 위한 네이티브 프로그램 명령이 네이티브 프로그램 메모리 (206) 에 저장된다고 가정할 것이다. 비-네이티브 프로그램 명령을 포함하는, 예를 들어, 애플리케이션 (112) 과 같은 애플리케이션은 해석된 프로그램 메모리 (208) 에 저장된다고 또한 가정한다. 비-네이티브 프로그램 명령은 다른 시스템용으로 생성되었고 디바이스 (102) 와 직접 호환되지는 않는다. 그러나, 비-네이티브 프로그램 명령은 디바이스 (102) 의 유저에게 바람직한 기능성을 제공한다. 따라서, 원하는 기능성을 달성하기 위해 비-네이티브 프로그램 명령을 해석하고 실행하는 가상머신을 생성하는 것은 디바이스 (102) 의 유저에게 이익이 된다. 또한, 가상머신은 디바이스 (102) 의 제한된 메모리 자원을 효율적으로 이용하기 위해 연속전달의 하나 이상의 실시형태를 제공하도록 동작한다.5 illustrates one embodiment of a method 500 for operating a virtual machine that provides continuous delivery for a resource limited device, such as the wireless device 102. For clarity, the description of method 500 refers to the memory resources shown in FIGS. 3 and 4, and the structure shown in FIGS. 1 and 2. It will also be assumed that native program instructions for creating a virtual machine that provides continuous delivery are stored in native program memory 206. It is also assumed that an application, such as, for example, application 112 that includes non-native program instructions, is stored in interpreted program memory 208. Non-native program instructions have been generated for other systems and are not directly compatible with device 102. However, non-native program instructions provide desirable functionality to the user of device 102. Thus, creating a virtual machine that interprets and executes non-native program instructions to achieve the desired functionality is a benefit to the user of device 102. The virtual machine also operates to provide one or more embodiments of continuous delivery to efficiently utilize the limited memory resources of the device 102.

블록 (502) 에서, 가상머신을 생성하는 네이티브 프로그램 명령은 네이티브 메모리에 저장된다. 예를 들어, 가상머신은 채널 (106) 및 인터페이스 (214) 를 통하여 무선 네트워크 (108) 로부터 디바이스 (102) 로 다운로드될 수도 있다. 다른 실시형태에서, 가상머신은 링크 (120) 및 인터페이스 (214) 를 통하여 로컬 워크스테이션 (116) 으로부터 디바이스 (102) 로 다운로드될 수도 있다. 다른 실시형태에서, 네이티브 명령 메모리는, 메모리 카드와 같은 디바이스 (102) 에 플러그되는 메모리 디바이스를 포함할 수도 있으며, 가상머신은 그 메모리 디바이스에 저장된다. 또 다른 실시형태에서, 가상머신은 디바이스 (102) 의 제조 동안 메모리 (206) 에 저장된다.In block 502, native program instructions that create a virtual machine are stored in native memory. For example, the virtual machine may be downloaded from the wireless network 108 to the device 102 via the channel 106 and the interface 214. In another embodiment, the virtual machine may be downloaded from the local workstation 116 to the device 102 via the link 120 and the interface 214. In another embodiment, the native instruction memory may include a memory device that is plugged into the device 102, such as a memory card, wherein the virtual machine is stored on that memory device. In yet another embodiment, the virtual machine is stored in the memory 206 during manufacture of the device 102.

블록 (504) 에서, 상이한 시스템 상에서 구동하도록 설계된 애플리케이션을 나타내는 비-네이티브 프로그램 명령은 해석된 명령 메모리에 저장된다. 예를 들어, 비-네이티브 명령은 무선 네트워크 (108) 를 통하여 네트워크 서버 (104) 로부터 디바이스 (102) 의 해석된 명령 메모리 (208) 에 다운로드될 수도 있다. 다른 실시형태에서, 비-네이티브 명령은 디바이스 (102) 에 플러그된 메모리 디바이스 상에 포함되거나, 로컬 워크스테이션 (116) 으로부터 다운로드된다.In block 504, non-native program instructions representing an application designed to run on a different system are stored in the interpreted instruction memory. For example, non-native instructions may be downloaded from the network server 104 to the interpreted instruction memory 208 of the device 102 via the wireless network 108. In other embodiments, non-native instructions are included on or downloaded from the memory device plugged into device 102 or from local workstation 116.

블록 (506) 에서, 가상머신은 활성화된다. 예를 들어, 프로세싱 로직 (202) 은 내부 버스 (204) 를 통하여 네이티브 명령 메모리 (206) 로부터 네이티브 명령을 검색하고, 그 명령들을 실행하기 시작한다. 네이티브 명령을 실행함으로써, 프로세싱 로직은 가상머신 (218) 을 생성하도록 동작한다.At block 506, the virtual machine is activated. For example, processing logic 202 retrieves native instructions from native instruction memory 206 via internal bus 204 and begins executing those instructions. By executing a native instruction, processing logic operates to create a virtual machine 218.

블록 (508) 에서, 가상머신은 해석된 명령 메모리의 비-네이티브 명령을 해석하기 시작한다. 예를 들어, 가상머신 (218) 은 내부 버스 (204) 를 통하여 메모리 (208) 로부터 비-네이티브 명령을 검색한다. 가상머신은 이들 명령어를 해석하고 실행한다. 일 실시형태에서, 가상머신은 임시 저장 영역으로서 스택 메모리 (216) 또는 힙 메모리 (210) 를 사용한다. 다른 실시형태에서, 스택 메모리 (216) 는 프로세싱 로직 (202) 에 의해 사용되는 임의의 스택 메모리와는 상이할 수도 있는 가상머신에 전용된 스택 메모리이다.At block 508, the virtual machine begins to interpret non-native instructions in the interpreted instruction memory. For example, virtual machine 218 retrieves non-native instructions from memory 208 via internal bus 204. The virtual machine interprets these commands and executes them. In one embodiment, the virtual machine uses stack memory 216 or heap memory 210 as temporary storage area. In another embodiment, stack memory 216 is a stack memory dedicated to a virtual machine, which may be different from any stack memory used by processing logic 202.

블록 (510) 에서, 가상머신은 비-네이티브 명령의 해석 동안에 콘텍스트 생성 트리거를 인카운터한다. 예를 들어, 가상머신이 해석할 하나 이상의 선택된 비-네이티브 명령을 인카운터하는 경우에 콘텍스트 생성 트리거가 발생할 수도 있다. 다른 실시형태에서, 가상머신이 비-네이티브 명령과 연관된 프로그램 마커를 인카운터하는 경우에 트리거가 발생할 수도 있다. 트리거가 인카운터된 경우, 스택 (216) 은 도면부호 (302) 에 도시된 바와 같이 나타난다.At block 510, the virtual machine counts a context creation trigger during the interpretation of the non-native instruction. For example, a context generation trigger may occur when the virtual machine counts one or more selected non-native instructions to interpret. In another embodiment, a trigger may occur if the virtual machine counts a program marker associated with a non-native instruction. If the trigger has been counted, the stack 216 appears as shown at 302.

블록 (512) 에서, 도 3 에 도시된 바와 같이, 콘텍스트 생성 트리거에 응답하여, 가상머신은 연속 블록을 생성하도록 동작한다. 연속 블록은 활성화 기록 (즉, 코드 포인터 등) 에 포함된 정보를 포함하는 블록 헤더 및 스택 프레그먼트 (306) 를 포함한다. 스택 프레그먼트 (306) 는 스택 (216) 의 일부분의 복사본을 나타낸다. 예를 들어, 스택 프레그먼트 (306) 내의 정보는 현재 스택 베이스 (308) 로부터 현재 스택 탑 (310) 으로 확장하는 스택 (216) 의 일부분이다. 그 후, 스택 프레그먼트 (306) 는 연속 블록 내로 복사된다. 일 실시형태에서, 그 후, 연속 블록은 도면부호 (304) 에 도시된 바와 같이 스택 (216) 상에 저장된다. 따라서, 방법 500 의 제 1 부분은 콘텍스트 생성 트리거의 인카운터에 응답하여 스택 프레그먼트 (306) 를 포함하는 연속 블록을 생성하도록 동작한다.At block 512, in response to the context creation trigger, as shown in FIG. 3, the virtual machine operates to generate a continuous block. The contiguous block includes a block header and stack fragment 306 that includes information included in the activation record (ie, code pointer, etc.). Stack fragment 306 represents a copy of a portion of stack 216. For example, the information in stack fragment 306 is the portion of stack 216 that extends from current stack base 308 to current stack top 310. Thereafter, the stack fragment 306 is copied into a continuous block. In one embodiment, the continuous block is then stored on the stack 216 as shown at 304. Thus, the first portion of method 500 operates to generate a contiguous block that includes stack fragment 306 in response to an encoder of the context creation trigger.

방법 500 의 나머지 부분은 가상머신이 연속성을 평가하도록 동작하는 방법을 설명한다.The remainder of method 500 describes how the virtual machine operates to evaluate continuity.

블록 (514) 에서, 가상머신은 연속 블록이 생성된 후 잠시 동안 발생할 수도 있는 연속성 평가 명령을 인카운터한다. 블록 (516) 에서, 가상머신은 예를 들어, 도 4 에 도시된 바와 같이 스택 (216) 으로부터 연속 블록을 검색한다.In block 514, the virtual machine counts continuity assessment instructions that may occur for a while after the continuous block is created. At block 516, the virtual machine retrieves a contiguous block from stack 216, for example, as shown in FIG. 4.

블록 (518) 에서, 연속 블록 내에 저장된 스택 프레그먼트 (306) 는 스택 상으로 푸쉬 백된다. 예를 들어, 도 4 를 참조하여, 도면부호 (404) 의 스택 도면에 의해 도시된 바와 같이, 스택 프레그먼트 (306) 는 스택 (216) 상으로 푸쉬된다. 본 단계를 수행함에 있어, 새로운 스택 탑 및 새로운 스택 베이스가 결정된다.At block 518, the stack fragment 306 stored in the continuous block is pushed back onto the stack. For example, referring to FIG. 4, as shown by the stack diagram of 404, the stack fragment 306 is pushed onto the stack 216. In performing this step, a new stack top and a new stack base are determined.

블록 (520) 에서, 연속 블록에 저장된 코드 포인터와 연관된 프로그램 코드로 점프함으로써 연속성이 평가된다. 예를 들어, 연속 블록과 연관된 블록 헤더는 연속성이 평가되는 경우 점프되는 코드 포인터를 포함한다. 따라서, 방법 500 은 메모리 제한된 무선 디바이스에 구현된 가상머신의 연속 전달을 제공한다. 네스트 (nest) 된 연속전달을 제공하기 위해 본 발명의 범위 내에서 상술한 프로세스를 확장하는 것이 또한 가능하다는 것을 유의해야 한다.At block 520, continuity is evaluated by jumping to program code associated with the code pointer stored in the continuous block. For example, a block header associated with a contiguous block contains a code pointer that jumps when continuity is evaluated. Thus, method 500 provides for continuous delivery of a virtual machine implemented in a memory limited wireless device. It should be noted that it is also possible to extend the above-described process within the scope of the present invention to provide nested continuous delivery.

방법 500 은 예시적인 것이고, 여기에서 설명된 연속전달의 다양한 실시형태의 동작을 한정하지 아니한다. 예를 들어, 설명된 방법 단계의 어떤 것이라도 전환, 부가 또는 삭제하는 것은 당업자에게 명백할 것이다. 또한, 설명된 방법 단계들은 설명된 실시형태들의 범위로부터 일탈하지 아니하고 조합, 재배열 또는 재정렬될 수도 있다.Method 500 is illustrative and does not limit the operation of the various embodiments of continuous delivery described herein. For example, it will be apparent to one skilled in the art to convert, add or delete any of the described method steps. In addition, the described method steps may be combined, rearranged, or rearranged without departing from the scope of the described embodiments.

도 6 은 연속전달을 수행하는 가상머신의 하나 이상의 실시형태를 구현하기에 적합한 제한된 메모리 자원을 가지는 무선 디바이스를 포함하는 데이터 네트워크 (600) 을 도시한다. 무선 디바이스는 무선 전화기 (602), 개인용 정보 단말기 (PDA ; 604), 페이저/이메일 디바이스 (606) 및 태블릿 컴퓨터 (608) 를 포함한다. 소형, 경량으로 인해, 디바이스들은 내장된 프로세서를 이용하고 제한된 메모리 자원을 가진다.6 illustrates a data network 600 including a wireless device having limited memory resources suitable for implementing one or more embodiments of a virtual machine that performs continuous delivery. The wireless device includes a wireless telephone 602, a personal digital assistant (PDA) 604, a pager / email device 606 and a tablet computer 608. Due to their small size and light weight, devices use an embedded processor and have limited memory resources.

디바이스들 (602, 604, 606 및 608) 은 무선 통신 채널 (610) 을 사용하여 무선 네트워크 서버 (612) 와 무선 데이터 네트워크 (614) 를 통하여 통신하는 회로를 포함한다. 무선 통신 채널 (610) 은 예를 들어, 위성 통신 채널, 지상 통신 채널, 또는 임의의 다른 타입의 무선 주파수 (RF) 또는 전자기 통신 채널들을 포함할 수도 있다. 무선 데이터 네트워크 (614) 는 선택된 통신 채널 (610) 로 동작할 수 있는 임의의 적합한 네트워크일 수도 있다.Devices 602, 604, 606, and 608 include circuitry that communicates with a wireless network server 612 via a wireless data network 614 using a wireless communication channel 610. The wireless communication channel 610 may include, for example, a satellite communication channel, a terrestrial communication channel, or any other type of radio frequency (RF) or electromagnetic communication channels. The wireless data network 614 may be any suitable network capable of operating in the selected communication channel 610.

또한, 무선 디바이스들 (602, 604, 606 및 608) 은 유선 통신 채널 (616) 을 통하여 워크스테이션 (618) 과 통신하는 회로를 포함한다. 워크스테이션 (618) 은 유선 데이터 네트워크 (624) 를 사용하여 유선 통신 채널 (622) 을 통해 네트워크 서버 (620) 와 통신하기 위한 로직을 포함한다. 또한, 워크스테이션 (618) 은 무선 통신 채널 (626) 및 무선 네트워크 (614) 를 사용하여 무선 네트워크 서버 (612) 와 통신하기 위한 로직을 포함한다.In addition, the wireless devices 602, 604, 606, and 608 include circuitry that communicates with the workstation 618 via a wired communication channel 616. Workstation 618 includes logic for communicating with network server 620 over wired communication channel 622 using wired data network 624. Workstation 618 also includes logic for communicating with wireless network server 612 using wireless communication channel 626 and wireless network 614.

네트워크 (600) 의 동작 동안, 무선 디바이스들 (602, 604, 606 및 608) 은 연속전달을 수행하도록 구성된 가상머신의 하나 이상의 실시형태를 포함한다. 예를 들어, 가상머신은 각 디바이스가 제조된 경우에 무선 디바이스에 통합될 수도 있다. 다른 실시형태에서, 가상머신은 무선 디바이스에 플러그되는 메모리 카드 (도시되지 않음) 상에 저장될 수도 있어, 무선 디바이스가 메모리 카드로부터 명령을 검색하고 가상머신을 동작하게 한다. 따라서, 가상머신을 포함하는 프로그램 명령은 컴퓨터 판독가능 매체에 저장된다. 가상적인 임의의 타입의 컴퓨터 판독가능 매체는, 무선 디바이스에 의해 실행되는 경우, 설명된 연속전달을 수행하는 가상머신의 하나 이상의 실시형태를 생성하는 프로그램 명령을 저장하도록 사용될 수도 있다.During operation of the network 600, the wireless devices 602, 604, 606, and 608 include one or more embodiments of a virtual machine configured to perform continuous delivery. For example, the virtual machine may be integrated into the wireless device when each device is manufactured. In another embodiment, the virtual machine may be stored on a memory card (not shown) that plugs into the wireless device, allowing the wireless device to retrieve commands from the memory card and operate the virtual machine. Thus, program instructions, including the virtual machine, are stored on a computer readable medium. Virtually any type of computer readable medium may be used to store program instructions that, when executed by a wireless device, generate one or more embodiments of a virtual machine that performs the described continuous delivery.

본 발명에 포함된 하나 이상의 실시형태에서, 방법 및 장치는 자원 제한된 디바이스용 연속전달을 수행하는 가상머신을 제공한다. 따라서, 방법 및 장치의 하나 이상의 실시형태가 예시되고 설명되었지만, 그 본질적인 특성 또는 정신를 벗어나지 않고도 다양한 변형이 이루어질 수 있다. 따라서, 본 개시와 설명은 예시적인 것이며, 후술할 청구항에 밝힐 본 발명의 범위를 한정하고자 하는 것은 아니다.In one or more embodiments included in the present invention, the methods and apparatus provide a virtual machine for performing continuous delivery for resource constrained devices. Thus, while one or more embodiments of the methods and apparatus have been illustrated and described, various modifications may be made without departing from the essential characteristics or spirit thereof. Accordingly, the present disclosure and description are exemplary and are not intended to limit the scope of the invention as set forth in the claims below.

Claims (15)

무선 디바이스에서 스택 메모리를 사용하는 가상머신의 연속전달 (continuation passing) 을 제공하기 위한 방법으로서,A method for providing continuation passing of a virtual machine using stack memory in a wireless device, 콘텍스트 생성 트리거를 인카운터 (encounter) 하는 단계;Encountering the context creation trigger; 상기 콘텍스트 생성 트리거를 인카운트하는 단계에 응답하여,In response to counting the context creation trigger, 연속 블록을 구성하는 단계로서, 상기 연속 블록은 블록 헤더와 스택 프레그먼트 (fragment) 를 포함하고, 상기 스택 프래그먼트는 최신 스택 탑 (top) 어드레스와 최신 바텀 (bottom) 어드레스의 범위의 상기 스택 메모리를 포함하는 상기 연속 블록을 구성하는 단계;Constructing a contiguous block, the contiguous block comprising a block header and a stack fragment, wherein the stack fragment includes the stack memory in a range of a newest stack top address and a newest bottom address; Constructing the continuous block comprising a; 상기 연속 블록을 상기 스택 메모리로 푸싱하는 단계;Pushing the contiguous block into the stack memory; 상기 연속 블록을 평가하기 위한 평가 명령을 인카운터하는 단계; 및Encouraging an evaluation instruction for evaluating the contiguous block; And 상기 평가 명령을 인카운트하는 단계에 응답하여,In response to acknowledging the evaluation command, 상기 스택 메모리로부터 상기 연속 블록을 팝핑 (popping) 하는 단계;Popping the contiguous block from the stack memory; 상기 연속 블록의 상기 스택 프래그먼트를 상기 스택 메모리로 푸싱하는 단계;Pushing the stack fragment of the contiguous block into the stack memory; 상기 최신 스택 탑 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 시작으로 설정하는 단계;Setting the latest stack top address to the beginning of the stack fragment of the stack memory; 상기 최신 스택 바텀 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 끝으로 설정하는 단계; 및Setting the latest stack bottom address to the end of the stack fragment of the stack memory; And 연속성을 평가하기 위하여 선택된 프로그램 코드로 점프하는 단계를 포함하는, 가상머신 동작 방법.Jumping to a selected program code to evaluate continuity. 제 1 항에 있어서,The method of claim 1, 상기 콘텍스트 생성 트리거는 선택된 프로그램 명령을 포함하는, 가상머신 동작 방법.And the context creation trigger comprises a selected program command. 제 1 항에 있어서,The method of claim 1, 상기 콘텍스트 생성 트리거는 프로그램 명령과 연관된 프로그램 마커를 포함하는, 가상머신 동작 방법.And the context creation trigger comprises a program marker associated with a program command. 삭제delete 삭제delete 내장 프로세서를 가지는 무선 디바이스에서의 사용을 위한, 정보를 푸시 (push) 하고 팝 (pop) 하기 위해 스택 메모리를 사용하는 가상머신을 포함하는 컴퓨터-판독가능 기록매체로서, A computer-readable recording medium including a virtual machine that uses a stack memory to push and pop information for use in a wireless device having an embedded processor, comprising: 콘텍스트 생성 트리거를 인카운터하기 위한 로직;Logic for encouraging a context creation trigger; 연속 블록을 구성하고, 상기 연속 블록은 블록 헤더와 스택 프레그먼트 (fragment) 를 포함하고, 상기 스택 프래그먼트는 최신 스택 탑 (top) 어드레스와 최신 바텀 (bottom) 어드레스의 범위의 상기 스택 메모리를 포함하는 상기 연속 블록을 구성하고 상기 연속 블록을 상기 스택 메모리로 푸싱하여, 상기 콘텍스트 생성 트리거를 인카운트하는 것에 응답하는 로직;Constitute a contiguous block, the contiguous block comprising a block header and a stack fragment, the stack fragment including the stack memory in a range of a latest stack top address and a latest bottom address Logic to construct the contiguous block and to push the contiguous block into the stack memory to count the context generation trigger; 상기 연속 블록을 평가하기 위한 평가 명령을 인카운터하는 로직; 및Logic for counting an evaluation command to evaluate the continuous block; And 상기 스택 메모리로부터 상기 연속 블록을 팝핑 (popping) 하고, 상기 연속 블록의 상기 스택 프래그먼트를 상기 스택 메모리로 푸싱하고, 상기 최신 스택 탑 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 시작으로 설정하고, 및 상기 최신 스택 바텀 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 끝으로 설정하고, 연속성을 평가하기 위하여 선택된 프로그램 코드로 점프하여, 상기 평가 명령을 인카운트하는 것에 응답하는 로직을 포함하는 가상머신을 포함하는, 컴퓨터-판독가능 기록매체.Popping the contiguous block from the stack memory, pushing the stack fragment of the contiguous block into the stack memory, setting the latest stack top address to the beginning of the stack fragment of the stack memory, and A virtual machine including logic responsive to setting an up-to-date stack bottom address to the end of the stack fragment of the stack memory, jumping to a program code selected for evaluating continuity, and counting the evaluation instruction, Computer-readable recording medium. 제 6 항에 있어서,The method of claim 6, 상기 콘텍스트 생성 트리거는 콘텍스트 평가 명령을 포함하는 가상머신을 포함하는, 컴퓨터-판독가능 기록매체.And the context creation trigger comprises a virtual machine that includes a context assessment command. 제 6 항에 있어서,The method of claim 6, 상기 콘텍스트 생성 트리거는 프로그램 명령에 연관된 프로그램 마커를 포함하는 가상머신을 포함하는, 컴퓨터-판독가능 기록매체.And the context creation trigger comprises a virtual machine including a program marker associated with a program instruction. 삭제delete 삭제delete 스택 메모리를 이용하여, 프로세싱 로직에 의해 실행되는 경우, 연속전달을 수행하고 가상머신을 제공하는 명령들을 포함하는 컴퓨터-판독가능 기록 매체로서,A computer-readable recording medium comprising instructions for performing continuous delivery and providing a virtual machine, when executed by processing logic using a stack memory, comprising: 상기 명령들은,The commands are 콘텍스트 생성 트리거를 인카운터하기 위한 명령;Instructions for counting a context creation trigger; 연속 블록을 구성하고, 상기 연속 블록은 블록 헤더와 스택 프레그먼트 (fragment) 를 포함하고, 상기 스택 프래그먼트는 최신 스택 탑 (top) 어드레스와 최신 바텀 (bottom) 어드레스의 범위의 상기 스택 메모리를 포함하는 상기 연속 블록을 구성하고 상기 연속 블록을 상기 스택 메모리로 푸싱하여, 상기 콘텍스트 생성 트리거를 인카운트하는 것에 응답하는 명령;Constitute a contiguous block, the contiguous block comprising a block header and a stack fragment, the stack fragment including the stack memory in a range of a latest stack top address and a latest bottom address Constructing the contiguous block and pushing the contiguous block into the stack memory to respond to counting the context generation trigger; 상기 연속 블록을 평가하기 위한 평가 명령을 인카운터하는 명령; 및Instructions for evaluating an evaluation command for evaluating the contiguous block; And 상기 스택 메모리로부터 상기 연속 블록을 팝핑 (popping) 하고, 상기 연속 블록의 상기 스택 프래그먼트를 상기 스택 메모리로 푸싱하고, 상기 최신 스택 탑 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 시작으로 설정하고, 및 상기 최신 스택 바텀 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 끝으로 설정하고, 연속성을 평가하기 위하여 선택된 프로그램 코드로 점프하여, 상기 평가 명령을 인카운트하는 것에 응답하는 명령을 포함하는, 컴퓨터-판독가능 기록매체.Popping the contiguous block from the stack memory, pushing the stack fragment of the contiguous block into the stack memory, setting the latest stack top address to the beginning of the stack fragment of the stack memory, and And setting a latest stack bottom address to the end of the stack fragment of the stack memory and jumping to the program code selected for evaluating continuity, responsive to enumerating the evaluation instruction. media. 내장 프로세서를 가지는 무선 디바이스에서의 사용을 위한 가상머신을 포함하는 컴퓨터-판독가능 기록매체로서,A computer-readable recording medium comprising a virtual machine for use in a wireless device having an embedded processor, comprising: 상기 가상 머신은,The virtual machine, 콘텍스트 생성 트리거를 인카운터하는 수단;Means for counting a context creation trigger; 연속 블록을 구성하고, 상기 연속 블록은 블록 헤더와 스택 프레그먼트 (fragment) 를 포함하고, 상기 스택 프래그먼트는 최신 스택 탑 (top) 어드레스와 최신 바텀 (bottom) 어드레스의 범위의 상기 스택 메모리를 포함하는 상기 연속 블록을 구성하고 상기 연속 블록을 상기 스택 메모리로 푸싱하여, 상기 콘텍스트 생성 트리거를 인카운트하는 것에 응답하는 수단;Constitute a contiguous block, the contiguous block comprising a block header and a stack fragment, the stack fragment including the stack memory in a range of a latest stack top address and a latest bottom address Means for constructing the contiguous block and pushing the contiguous block to the stack memory to account for the context generation trigger; 상기 연속 블록을 평가하기 위한 평가 명령을 인카운터하는 수단;Means for counting an evaluation command to evaluate the continuous block; 상기 스택 메모리로부터 상기 연속 블록을 팝핑 (popping) 하여 상기 평가 명령을 인카운트하는 것에 응답하는 수단;Means for responding to counting the evaluation command by popping the contiguous block from the stack memory; 상기 연속 블록의 상기 스택 프래그먼트를 상기 스택 메모리로 푸싱하는 수단;Means for pushing the stack fragment of the contiguous block into the stack memory; 상기 최신 스택 탑 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 시작으로 설정하는 수단; Means for setting the latest stack top address to the beginning of the stack fragment of the stack memory; 상기 최신 스택 바텀 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 끝으로 설정하는 수단; 및Means for setting the latest stack bottom address to the end of the stack fragment of the stack memory; And 연속성을 평가하기 위하여 선택된 프로그램 코드로 점프하는 수단을 포함하는, 컴퓨터-판독가능 기록매체.Means for jumping to a selected program code to assess continuity. 삭제delete 삭제delete 내장된 프로세서를 가지는 무선 디바이스로서,A wireless device with an embedded processor, 정보를 푸시하고 팝하기 위한 로직을 포함하는 스택 메모리; 및A stack memory containing logic to push and pop information; And 연속전달을 수행하도록 동작하는 가상머신을 포함하며,A virtual machine operative to perform continuous delivery, 상기 가상머신은,The virtual machine, 콘텍스트 생성 트리거를 인카운터하기 위한 로직;Logic for encouraging a context creation trigger; 연속 블록을 구성하고, 상기 연속 블록은 블록 헤더와 스택 프레그먼트 (fragment) 를 포함하고, 상기 스택 프래그먼트는 최신 스택 탑 (top) 어드레스와 최신 바텀 (bottom) 어드레스의 범위의 상기 스택 메모리를 포함하는 상기 연속 블록을 구성하고 상기 연속 블록을 상기 스택 메모리로 푸싱하여, 상기 콘텍스트 생성 트리거를 인카운트하는 것에 응답하는 로직;Constitute a contiguous block, the contiguous block comprising a block header and a stack fragment, the stack fragment including the stack memory in a range of a latest stack top address and a latest bottom address Logic to construct the contiguous block and to push the contiguous block into the stack memory to count the context generation trigger; 상기 연속 블록을 평가하기 위한 평가 명령을 인카운터하는 로직; 및Logic for counting an evaluation command to evaluate the continuous block; And 상기 스택 메모리로부터 상기 연속 블록을 팝핑 (popping) 하고, 상기 연속 블록의 상기 스택 프래그먼트를 상기 스택 메모리로 푸싱하고, 상기 최신 스택 탑 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 시작으로 설정하고, 및 상기 최신 스택 바텀 어드레스를 상기 스택 메모리의 상기 스택 프래그먼트의 끝으로 설정하고, 연속성을 평가하기 위하여 선택된 프로그램 코드로 점프하여, 상기 평가 명령을 인카운트하는 것에 응답하는 로직을 포함하는, 무선 디바이스.Popping the contiguous block from the stack memory, pushing the stack fragment of the contiguous block into the stack memory, setting the latest stack top address to the beginning of the stack fragment of the stack memory, and Logic to set a latest stack bottom address to the end of the stack fragment of the stack memory, and jump to a program code selected to evaluate continuity, responsive to counting the evaluation command.
KR1020067004663A 2003-09-10 2004-08-25 Method and apparatus for continuation-passing in a virtual machine KR101164465B1 (en)

Applications Claiming Priority (3)

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
PCT/US2004/027720 WO2005026881A2 (en) 2003-09-10 2004-08-25 Method and apparatus for continuation-passing in a virtual machine

Publications (2)

Publication Number Publication Date
KR20060120638A KR20060120638A (en) 2006-11-27
KR101164465B1 true KR101164465B1 (en) 2012-08-06

Family

ID=34227011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067004663A KR101164465B1 (en) 2003-09-10 2004-08-25 Method and apparatus for continuation-passing in a virtual machine

Country Status (6)

Country Link
US (1) US7114153B2 (en)
EP (1) EP1665043A4 (en)
JP (1) JP2007505395A (en)
KR (1) KR101164465B1 (en)
CN (1) CN100470481C (en)
WO (1) WO2005026881A2 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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 (en) * 2010-05-07 2010-09-15 沈阳理工大学 Single stack design method of virtual machine
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
EP3427208A1 (en) 2016-06-30 2019-01-16 Copper LLC Smart data cable for point of sale systems
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
US11321261B1 (en) * 2020-12-10 2022-05-03 Copper Inc. Data processing systems and methods for transmitting and modifying data via a smart data cable
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20030033344A1 (en) * 2001-08-06 2003-02-13 International Business Machines Corporation Method and apparatus for suspending a software virtual machine

Family Cites Families (3)

* Cited by examiner, † Cited by third party
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
KR100529416B1 (en) * 1996-01-24 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 Method and apparatus of instruction folding for a stack-based machine
JPH11296381A (en) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd Virtual machine and compiler

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20030033344A1 (en) * 2001-08-06 2003-02-13 International Business Machines Corporation Method and apparatus for suspending a software virtual machine

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIEB, R et al., "Representing control in the presense of first-class continuations", SIGPLAN NOTICES USA, vol.25, no.6, June 1990.*

Also Published As

Publication number Publication date
EP1665043A2 (en) 2006-06-07
US7114153B2 (en) 2006-09-26
KR20060120638A (en) 2006-11-27
US20050055663A1 (en) 2005-03-10
CN1864136A (en) 2006-11-15
EP1665043A4 (en) 2008-10-08
WO2005026881A2 (en) 2005-03-24
JP2007505395A (en) 2007-03-08
WO2005026881A3 (en) 2006-02-16
CN100470481C (en) 2009-03-18

Similar Documents

Publication Publication Date Title
US7146613B2 (en) JAVA DSP acceleration by byte-code optimization
US6519594B1 (en) Computer-implemented sharing of java classes for increased memory efficiency and communication method
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
US5794049A (en) Computer system and method for executing architecture specific code with reduced run-time memory space requirements
KR101164465B1 (en) Method and apparatus for continuation-passing in a virtual machine
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
CN107861742A (en) The operation method and terminal device of a kind of program
WO2021027772A1 (en) Method for switching running of application and device
KR20050010851A (en) System for multimedia rendering in a portable device
US10891214B2 (en) Transferring a debug configuration amongst carrier threads for debugging a carried thread
CN102388363A (en) Application of platform dependent routines in virtual machines by embedding native code in class files
JP2005501334A (en) A framework for generating Java macro instructions in a Java computing environment
US10296363B2 (en) Tuning a virtual machine startup parameter
US6636964B1 (en) Method and apparatus for loading an object-oriented operating system by providing an initial execution environment and migrating to a core execution environment thereafter
JP2005501331A (en) Framework for generating Java macro instructions for instantiating Java objects
KR20090122703A (en) Server and method for providing converting contents
US8615736B2 (en) Module facility for JAVASCRIPT language
CN111290746A (en) Object access method, device, equipment and storage medium
CN116643778B (en) Application program optimization method and electronic equipment
CN116107764B (en) Data processing method and system
WO2021121188A1 (en) Configuration file processing method, apparatus and system, and storage medium
US10891213B2 (en) Converting between a carried thread and a carrier thread for debugging the carried thread
KR20150017598A (en) Apparatus and method for controlling a system call in a portable terminal
CN117435206A (en) Operation system deployment device and operation system deployment method
CN115454439A (en) Compiling optimization method and device, electronic equipment and computer readable medium

Legal Events

Date Code Title Description
G170 Publication of correction
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee