KR101164465B1 - Method and apparatus for continuation-passing in a virtual machine - Google Patents
Method and apparatus for continuation-passing in a virtual machine Download PDFInfo
- 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
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)
- 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
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
일 실시형태에서, 또한, 디바이스 (102) 는 다이렉트 링크 (120) 를 통하여 로컬 워크스테이션 (116) 과 같은 로컬 시스템에 직접 연결된다. 본 다이렉트 링크 (120) 는 디바이스 (102) 가 데이터 및/또는 프로그램을 로컬 워크스테이션 (116) 과 교환하게 한다. 일 실시형태에서, 로컬 워크스테이션 (116) 은 다이렉트 링크 (120) 를 사용하여 디바이스 (102) 로 가상머신 (118) 을 다운로드한다. 가상머신 (118) 은 가상머신 (114) 과 동일할 수도 있고, 양자 모두 연속전달의 하나 이상의 실시형태를 제공하도록 동작한다.In one embodiment,
일 실시형태에서, 디바이스 (102) 는 내장된 프로세서, 메모리 및 다양한 인터페이스를 포함하는 내장된 시스템을 포함하므로, 디바이스 (102) 가 서버 (104) 로부터 다운로드된 애플리케이션 (110) 및/또는 가상머신 (114) 을 저장, 로드 및 실행할 수도 있다. 애플리케이션 (110) 및 가상머신 (114) 은, 예를 들어, 디바이스 특정 자원에 대한 일반화된 호출을 제공함으로써, 디바이스의 동작을 단순화하는데 사용되는 디바이스 (102) 에서 실행되는 런타임 환경과 상호작용할 수도 있다. 그러한 런타임 환경의 하나는 미합중국, 캘리포니아, 샌디에고 소재의 퀄컴사에 의해 개발된 Binary Runtime Environment for WirelessTM (BREWTM) 소프트웨어 플랫폼이다.In one embodiment, the
상이한 컴퓨팅 시스템에 대해 개발된 소프트웨어를 디바이스 (102) 가 용이하게 실행하도록 가상머신 (114) 은 서버 (104) 로부터 디바이스 (102) 로 다운로드될 수도 있다. 예를 들어, 애플리케이션 (112) 은 디바이스 (102) 와 상이한 타겟 디바이스 또는 시스템에 대해 기입된 비-네이티브 프로그램 명령을 포함할 수도 있다. 가상머신 (114) 은 타겟 시스템 상에서 실행될 수 있도록 설계된 (애플리케이션 (112) 과 같은) 타겟 애플리케이션들이 디바이스 (102) 에서 또한 실행될 수도 있기 위해 타겟 시스템의 환경을 시뮬레이팅하도록 동작한다. 예를 들어, 일 실시형태에서, 가상머신 (114) 은 디바이스 (102) 에서 자바 (JAVA) 애플리케이션들이 다운로드되고 실행될 수도 있기 위해 자바 시스템 환경을 제공하도록 동작한다. 하나 이상의 실시형태에서, 가상머신 (114) 은 이러한 비-네이티브 명령들의 실행 동안 연속전달을 제공하기 위한 방법 및 장치를 포함한다.The virtual machine 114 may be downloaded from the
로컬 워크스테이션 (116) 으로부터 디바이스 (102) 로 다운로드된 가상머신 (118) 은 가상머신 (114) 과 동일할 수도 있고, 따라서, 또한 연속전달의 하나 이상의 실시형태를 제공하도록 동작된다. 하나의 실시형태에서, 가상머신 (118) 은 플로피 디스크와 같은 컴퓨터 판독가능 매체 상에 제공되고, 디바이스 (102) 로의 송신을 위해 시스템 (116) 상에 로드된다. 다른 실시형태에서, 가상머신은 메모리 카드 (도시되지 않음) 와 같은 컴퓨터 판독가능한 메모리 디바이스 상에 저장될 수도 있고, 디바이스 (102) 에 직접 플러그될 수도 있으므로, 가상머신은 디바이스 (102) 상에서 실행될 수도 있다. 따라서, 디바이스 (102) 는 무선 송신, 유선 송신으로 , 또는 메모리 디바이스로부터 직접 검색함으로써 가상머신을 수신할 수도 있다.The
디바이스 (102) 가 휴대용이고 제한된 메모리 자원을 가지기 때문에, 연속전달의 하나 이상의 실시형태로 가상머신을 구동시키는데 특히 매우 적합하다. 예를 들어, 디바이스 (102) 는 제한된 메모리 용량을 가지기 때문에, 연속전달을 포함한 가상머신은 사용가능한 메모리를 효율적으로 사용하고, 비-네이티브 프로그램 명령의 고속 및 효율적인 프로그램 해석 및 실행을 제공하도록 동작한다.Because
도 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
디바이스 (102) 의 동작 동안, 프로세싱 로직 (202) 은 네이티브 명령 메모리 (206) 에 저장된 프로그램 명령을 실행한다. 하나 이상의 실시형태에서, 프로세싱 로직 (202) 은 CPU, 게이트 어레이, 하드웨어 로직, 소프트웨어 또는 하드웨어와 소프트웨어의 임의의 조합을 포함한다. 따라서, 프로세싱 로직 (202) 은 일반적으로 네이티브 명령 메모리 (206) 에 저장된 기계 판독가능한 명령을 실행하기 위한 로직을 포함한다.During operation of
네이티브 명령 메모리 (206) 는 RAM, ROM, FLASH, EEROM, 또는 다른 임의의 적합한 타입의 메모리, 또는 이들의 임의의 조합을 포함한다. 일 실시형태에서, 네이티브 명령 메모리 (206) 는 디바이스 (102) 내부에 위치되고, 다른 실시형태에서, 네이티브 명령 메모리 (206) 는 선택적으로 디바이스 (102) 에 부착됨으로써 내부 버스 (204) 에 연결될 수도 있는 휴대용 메모리 카드 또는 메모리 디바이스를 포함한다. 따라서, 네이티브 명령 메모리 (206) 는 프로세싱 로직 (202) 에 의해 실행될 수도 있는 명령을 저장할 수 있는 가상의 임의의 타입의 메모리를 포함한다.
유저 인터페이스 (212) 는 예를 들어, 키패드, 포인팅 디바이스, 터치 패드, 또는 음성 명령을 수신하고 프로세싱하는 오디오 회로와 같은 다른 입력 메카니즘으로부터의 유저 입력을 수신한다. 또한, 유저 인터페이스 (212) 는 디스플레이, LED, 오디오 스피커 또는 다른 타입의 시각 또는 청각 인디케이터 (indicator) 와 같은 다양한 출력 메카니즘으로 출력을 제공할 수도 있다. 따라서, 유저 인터페이스 (212) 는 임의의 조합의 하드웨어 및/또는 소프트웨어를 포함하여, 디바이스 (102) 가 유저 입력을 수신하고 시각 정보 또는 청각 인디케이터를 유저에 출력하게 한다.
I/O 인터페이스 (214) 는 디바이스 (102) 와 외부 디바이스, 시스템, 및/또는 네트워크 사이에서 정보를 송신 및 수신하도록 동작한다. 예를 들어, 일 실시형태에서, I/O 인터페이스 (214) 는 예를 들어, 통신 링크 (106) 를 사용하여 무선 데이터 네트워크를 통해 정보를 송신하고 수신하도록 동작하는 무선 송수신기 (transceiver) 회로 (도시되지 않음) 를 포함한다. 예를 들어, 송수신기는 프로세싱 로직 (202) 으로부터 수신된 정보를 변조하고, 변조된 정보를 무선 송신에 적합한 고주파 신호로 변환하는 회로를 포함한다. 또한 유사하게, 송수신기는 수신된 고주파 통신 신호를 프로세싱 로직 (202) 에 의한 복조 및 후속 프로세싱에 적합한 신호로 변환하는 회로를 포함한다.I /
다른 실시형태에서, I/O 인터페이스 (214) 는 전화선과 같은 유선 통신 링크를 통하여 정보를 송신 및 수신하고, 인터넷과 같은 공중 데이터 네트워크 상의 원격 시스템과 통신하도록 동작하는 송수신기를 포함한다.In another embodiment, I /
또 다른 실시형태에서, I/O 인터페이스 (214) 는 링크 (120) 를 사용하여, 로컬 워크스테이션 (116) 과 같은 로컬 디바이스들과 통신하도록 동작하는 회로를 포함한다. 또한 I/O 인터페이스 (214) 는 프린터 또는 다른 로컬 컴퓨터, 또는 플로피 디스크 또는 메모리 카드와 같은 디바이스와 통신하는 회로를 포함한다. 따라서, I/O 인터페이스 (214) 는 임의의 타입의 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 디바이스 (102) 가 다른 로컬 또는 원격 위치된 디바이스들 또는 시스템들과 통신하게 할 수도 있다.In yet another embodiment, I /
디바이스 (102) 의 동작 동안, 네이티브 명령 메모리 (206) 에 저장된 네이티브 프로그램 명령이 프로세싱 로직 (202) 에 의해 실행된다. 일 실시형태에서, 프로세싱 로직 (202) 에 의한 네이티브 프로그램 명령의 실행으로 인해 가상머신 (218) 이 생성된다. 가상머신 (218) 은 해석된 명령 메모리 (208) 에 저장된 비-네이티브 프로그램 명령을 해석하도록 동작한다. 예를 들어, 비-네이티브 프로그램 명령을 가지는 애플리케이션 (112) 과 같은 애플리케이션들은 무선 네트워크를 통하여 디바이스 (102) 로 다운로드되고, 해석된 명령 메모리 (208) 에 저장될 수도 있다.During operation of
명령 실행을 보조하기 위해, 가상머신 (218) 은 프로그램 데이터 또는 명령을 임시적으로 저장하기 위해 스택 메모리 (216) 를 이용한다. 예를 들어, 가상머신 (218) 은 상수, 변수, 프로그램 어드레스, 포인터, 명령 또는 다른 정보 아이템을 스택 메모리 (216) 에 저장할 수도 있다. 다른 실시형태에서, 가상머신 (218) 은 힙 메모리 (210) 에 임시적으로 정보를 저장할 수도 있다. 힙 메모리는 프로세싱 로직 (202) 에 의한 정보의 저장 및 검색에 적합한 가상적인 임의의 타입의 메모리를 포함한다. 스택 메모리 (216) 는 가상머신 (218) 에 의한 사용에 전용될 수도 있고, 또한 명령 실행 동안 프로세싱 로직 (202) 과 공유될 수도 있다.To aid in instruction execution,
일 실시형태에서, 프로세싱 로직 (202) 은 네이티브 명령 메모리 (206) 로부터 내부 버스 (204) 를 통하여 네이티브 명령을 검색한다. 네이티브 프로그램 명령의 실행으로 인해 가상머신 (218) 이 생성된다. 그 후, 가상머신 (218) 은 해석된 명령 메모리 (208) 에 저장된 비-네이티브 명령을 내부 버스 (204) 를 통하여 검색하고 실행한다. 따라서, 디바이스 (102) 는, 선택된 기능성을 유저에게 제공하기 위해 디바이스 (102) 가 비-네이티브 프로그램 코드를 구동시키게 하는 가상머신 (218) 을 생성하도록 동작한다. 예를 들어, 디바이스 유저는 디바이스 (102) 의 하드웨어 또는 소프트웨어 구성 어느 것과도 호환되지 않는 자바 애플리케이션을 다운로드하고 구동시키고자 할 수도 있다. 가상머신 (218) 은 자바 시스템 환경을 제공하도록 동작함으로써, 자바 애플리케이션이 디바이스 (102) 에서 구동하게 한다. 또한, 가상머신 (218) 은 연속전달의 하나 이상의 실시형태를 제공하여, 디바이스 (102) 의 제한된 메모리 자원의 효율적인 사용 및 비-네이티브 명령의 고속 해석 및 실행을 제공하도록 동작한다.In one embodiment,
일 실시형태에서, 가상머신 (218) 을 생성하기 위한 네이티브 프로그램 명령은 I/O 인터페이스 (214) 를 통하여 원격 서버로부터 디바이스 (102) 의 네이티브 명령 메모리 (206) 로 다운로드된다. 예를 들어, 도 1 을 참조하면, 원격 서버 (104) 는 네이티브 프로그램 명령을 디바이스 (102) 로 무선 네트워크 (108) 를 통하여 다운로드한다. 다른 실시형태에서, 로컬 워크스테이션 (116) 은 네이티브 프로그램 명령을 링크 (120) 를 통하여 디바이스 (102) 로 다운로드한다. 유사한 방식으로, 비-네이티브 프로그램 명령 또한 디바이스 (102) 로 다운로드될 수도 있다.In one embodiment, native program instructions for creating
디바이스 (102) 의 구성은 연속전달을 제공하는 가상머신을 생성하기에 적합한 단지 일 구성일 뿐이라는 것을 유의해야 한다. 또한 본 발명의 범위 내에서 다른 디바이스 구성을 사용하여 가상머신을 생성하는 것도 가능하다. 또한, 설명된 가상머신이 무선 디바이스 (102) 에 구현되어 있는 것으로 도시되었지만, 내장된 프로세서 및 제한된 메모리 자원을 가지는 가상적인 임의의 타입의 디바이스에도 가상 머신을 구현하는 것이 가능하다.It should be noted that the configuration of
도 3 은 연속전달을 제공하기 위한 연속 블록을 생성하는 가상머신 (218) 에 의해 사용되는 무선 디바이스 (102) 의 메모리 자원의 세부도를 도시한다. 메모리 자원은, 연속 블록이 생성되기 전에 도면부호 (302) 에 도시되고, 연속 블록이 생성된 후에 도면부호 (304) 에 도시되는 스택 메모리 (216) 를 포함한다. 일 실시형태에서, 연속 블록은 힙 메모리 (210) 에 생성 및/또는 저장될 수도 있다. 스택 프레그먼트 (306) 는 현재 연속 생성 콘텍스트에 관련된 정보를 포함하는 것으로 정의된다.3 shows a detailed view of the memory resources of the
도 4 는 도 3 에 도시된 연속 블록을 평가하는 가상머신 (218) 에 의해 사용되는 무선 디바이스 (102) 의 메모리 자원의 세부도를 도시한다. 스택 메모리 (216) 는 연속 블록이 평가되기 전에 도면부호 (402) 에 도시되고, 연속 블록이 평가된 후에 도면부호 (404) 에 도시된다.FIG. 4 shows a detailed view of the memory resources of the
도 5 는 무선 디바이스 (102) 와 같은 자원 제한된 디바이스용 연속전달을 제공하는 가상머신을 동작하는 방법 500 의 일 실시형태를 도시한다. 명확하게 하기 위해, 방법 500 의 설명은 도 3 및 4 에 도시된 메모리 자원, 및 도 1 및 2 에 도시된 구조를 참조한다. 또한, 연속전달을 제공하는 가상머신을 생성하기 위한 네이티브 프로그램 명령이 네이티브 프로그램 메모리 (206) 에 저장된다고 가정할 것이다. 비-네이티브 프로그램 명령을 포함하는, 예를 들어, 애플리케이션 (112) 과 같은 애플리케이션은 해석된 프로그램 메모리 (208) 에 저장된다고 또한 가정한다. 비-네이티브 프로그램 명령은 다른 시스템용으로 생성되었고 디바이스 (102) 와 직접 호환되지는 않는다. 그러나, 비-네이티브 프로그램 명령은 디바이스 (102) 의 유저에게 바람직한 기능성을 제공한다. 따라서, 원하는 기능성을 달성하기 위해 비-네이티브 프로그램 명령을 해석하고 실행하는 가상머신을 생성하는 것은 디바이스 (102) 의 유저에게 이익이 된다. 또한, 가상머신은 디바이스 (102) 의 제한된 메모리 자원을 효율적으로 이용하기 위해 연속전달의 하나 이상의 실시형태를 제공하도록 동작한다.5 illustrates one embodiment of a
블록 (502) 에서, 가상머신을 생성하는 네이티브 프로그램 명령은 네이티브 메모리에 저장된다. 예를 들어, 가상머신은 채널 (106) 및 인터페이스 (214) 를 통하여 무선 네트워크 (108) 로부터 디바이스 (102) 로 다운로드될 수도 있다. 다른 실시형태에서, 가상머신은 링크 (120) 및 인터페이스 (214) 를 통하여 로컬 워크스테이션 (116) 으로부터 디바이스 (102) 로 다운로드될 수도 있다. 다른 실시형태에서, 네이티브 명령 메모리는, 메모리 카드와 같은 디바이스 (102) 에 플러그되는 메모리 디바이스를 포함할 수도 있으며, 가상머신은 그 메모리 디바이스에 저장된다. 또 다른 실시형태에서, 가상머신은 디바이스 (102) 의 제조 동안 메모리 (206) 에 저장된다.In
블록 (504) 에서, 상이한 시스템 상에서 구동하도록 설계된 애플리케이션을 나타내는 비-네이티브 프로그램 명령은 해석된 명령 메모리에 저장된다. 예를 들어, 비-네이티브 명령은 무선 네트워크 (108) 를 통하여 네트워크 서버 (104) 로부터 디바이스 (102) 의 해석된 명령 메모리 (208) 에 다운로드될 수도 있다. 다른 실시형태에서, 비-네이티브 명령은 디바이스 (102) 에 플러그된 메모리 디바이스 상에 포함되거나, 로컬 워크스테이션 (116) 으로부터 다운로드된다.In
블록 (506) 에서, 가상머신은 활성화된다. 예를 들어, 프로세싱 로직 (202) 은 내부 버스 (204) 를 통하여 네이티브 명령 메모리 (206) 로부터 네이티브 명령을 검색하고, 그 명령들을 실행하기 시작한다. 네이티브 명령을 실행함으로써, 프로세싱 로직은 가상머신 (218) 을 생성하도록 동작한다.At
블록 (508) 에서, 가상머신은 해석된 명령 메모리의 비-네이티브 명령을 해석하기 시작한다. 예를 들어, 가상머신 (218) 은 내부 버스 (204) 를 통하여 메모리 (208) 로부터 비-네이티브 명령을 검색한다. 가상머신은 이들 명령어를 해석하고 실행한다. 일 실시형태에서, 가상머신은 임시 저장 영역으로서 스택 메모리 (216) 또는 힙 메모리 (210) 를 사용한다. 다른 실시형태에서, 스택 메모리 (216) 는 프로세싱 로직 (202) 에 의해 사용되는 임의의 스택 메모리와는 상이할 수도 있는 가상머신에 전용된 스택 메모리이다.At
블록 (510) 에서, 가상머신은 비-네이티브 명령의 해석 동안에 콘텍스트 생성 트리거를 인카운터한다. 예를 들어, 가상머신이 해석할 하나 이상의 선택된 비-네이티브 명령을 인카운터하는 경우에 콘텍스트 생성 트리거가 발생할 수도 있다. 다른 실시형태에서, 가상머신이 비-네이티브 명령과 연관된 프로그램 마커를 인카운터하는 경우에 트리거가 발생할 수도 있다. 트리거가 인카운터된 경우, 스택 (216) 은 도면부호 (302) 에 도시된 바와 같이 나타난다.At
블록 (512) 에서, 도 3 에 도시된 바와 같이, 콘텍스트 생성 트리거에 응답하여, 가상머신은 연속 블록을 생성하도록 동작한다. 연속 블록은 활성화 기록 (즉, 코드 포인터 등) 에 포함된 정보를 포함하는 블록 헤더 및 스택 프레그먼트 (306) 를 포함한다. 스택 프레그먼트 (306) 는 스택 (216) 의 일부분의 복사본을 나타낸다. 예를 들어, 스택 프레그먼트 (306) 내의 정보는 현재 스택 베이스 (308) 로부터 현재 스택 탑 (310) 으로 확장하는 스택 (216) 의 일부분이다. 그 후, 스택 프레그먼트 (306) 는 연속 블록 내로 복사된다. 일 실시형태에서, 그 후, 연속 블록은 도면부호 (304) 에 도시된 바와 같이 스택 (216) 상에 저장된다. 따라서, 방법 500 의 제 1 부분은 콘텍스트 생성 트리거의 인카운터에 응답하여 스택 프레그먼트 (306) 를 포함하는 연속 블록을 생성하도록 동작한다.At
방법 500 의 나머지 부분은 가상머신이 연속성을 평가하도록 동작하는 방법을 설명한다.The remainder of
블록 (514) 에서, 가상머신은 연속 블록이 생성된 후 잠시 동안 발생할 수도 있는 연속성 평가 명령을 인카운터한다. 블록 (516) 에서, 가상머신은 예를 들어, 도 4 에 도시된 바와 같이 스택 (216) 으로부터 연속 블록을 검색한다.In
블록 (518) 에서, 연속 블록 내에 저장된 스택 프레그먼트 (306) 는 스택 상으로 푸쉬 백된다. 예를 들어, 도 4 를 참조하여, 도면부호 (404) 의 스택 도면에 의해 도시된 바와 같이, 스택 프레그먼트 (306) 는 스택 (216) 상으로 푸쉬된다. 본 단계를 수행함에 있어, 새로운 스택 탑 및 새로운 스택 베이스가 결정된다.At
블록 (520) 에서, 연속 블록에 저장된 코드 포인터와 연관된 프로그램 코드로 점프함으로써 연속성이 평가된다. 예를 들어, 연속 블록과 연관된 블록 헤더는 연속성이 평가되는 경우 점프되는 코드 포인터를 포함한다. 따라서, 방법 500 은 메모리 제한된 무선 디바이스에 구현된 가상머신의 연속 전달을 제공한다. 네스트 (nest) 된 연속전달을 제공하기 위해 본 발명의 범위 내에서 상술한 프로세스를 확장하는 것이 또한 가능하다는 것을 유의해야 한다.At
방법 500 은 예시적인 것이고, 여기에서 설명된 연속전달의 다양한 실시형태의 동작을 한정하지 아니한다. 예를 들어, 설명된 방법 단계의 어떤 것이라도 전환, 부가 또는 삭제하는 것은 당업자에게 명백할 것이다. 또한, 설명된 방법 단계들은 설명된 실시형태들의 범위로부터 일탈하지 아니하고 조합, 재배열 또는 재정렬될 수도 있다.
도 6 은 연속전달을 수행하는 가상머신의 하나 이상의 실시형태를 구현하기에 적합한 제한된 메모리 자원을 가지는 무선 디바이스를 포함하는 데이터 네트워크 (600) 을 도시한다. 무선 디바이스는 무선 전화기 (602), 개인용 정보 단말기 (PDA ; 604), 페이저/이메일 디바이스 (606) 및 태블릿 컴퓨터 (608) 를 포함한다. 소형, 경량으로 인해, 디바이스들은 내장된 프로세서를 이용하고 제한된 메모리 자원을 가진다.6 illustrates a
디바이스들 (602, 604, 606 및 608) 은 무선 통신 채널 (610) 을 사용하여 무선 네트워크 서버 (612) 와 무선 데이터 네트워크 (614) 를 통하여 통신하는 회로를 포함한다. 무선 통신 채널 (610) 은 예를 들어, 위성 통신 채널, 지상 통신 채널, 또는 임의의 다른 타입의 무선 주파수 (RF) 또는 전자기 통신 채널들을 포함할 수도 있다. 무선 데이터 네트워크 (614) 는 선택된 통신 채널 (610) 로 동작할 수 있는 임의의 적합한 네트워크일 수도 있다.
또한, 무선 디바이스들 (602, 604, 606 및 608) 은 유선 통신 채널 (616) 을 통하여 워크스테이션 (618) 과 통신하는 회로를 포함한다. 워크스테이션 (618) 은 유선 데이터 네트워크 (624) 를 사용하여 유선 통신 채널 (622) 을 통해 네트워크 서버 (620) 와 통신하기 위한 로직을 포함한다. 또한, 워크스테이션 (618) 은 무선 통신 채널 (626) 및 무선 네트워크 (614) 를 사용하여 무선 네트워크 서버 (612) 와 통신하기 위한 로직을 포함한다.In addition, the
네트워크 (600) 의 동작 동안, 무선 디바이스들 (602, 604, 606 및 608) 은 연속전달을 수행하도록 구성된 가상머신의 하나 이상의 실시형태를 포함한다. 예를 들어, 가상머신은 각 디바이스가 제조된 경우에 무선 디바이스에 통합될 수도 있다. 다른 실시형태에서, 가상머신은 무선 디바이스에 플러그되는 메모리 카드 (도시되지 않음) 상에 저장될 수도 있어, 무선 디바이스가 메모리 카드로부터 명령을 검색하고 가상머신을 동작하게 한다. 따라서, 가상머신을 포함하는 프로그램 명령은 컴퓨터 판독가능 매체에 저장된다. 가상적인 임의의 타입의 컴퓨터 판독가능 매체는, 무선 디바이스에 의해 실행되는 경우, 설명된 연속전달을 수행하는 가상머신의 하나 이상의 실시형태를 생성하는 프로그램 명령을 저장하도록 사용될 수도 있다.During operation of the
본 발명에 포함된 하나 이상의 실시형태에서, 방법 및 장치는 자원 제한된 디바이스용 연속전달을 수행하는 가상머신을 제공한다. 따라서, 방법 및 장치의 하나 이상의 실시형태가 예시되고 설명되었지만, 그 본질적인 특성 또는 정신를 벗어나지 않고도 다양한 변형이 이루어질 수 있다. 따라서, 본 개시와 설명은 예시적인 것이며, 후술할 청구항에 밝힐 본 발명의 범위를 한정하고자 하는 것은 아니다.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)
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)
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)
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)
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 |
-
2003
- 2003-09-10 US US10/659,829 patent/US7114153B2/en active Active
-
2004
- 2004-08-25 CN CNB2004800286997A patent/CN100470481C/en not_active Expired - Fee Related
- 2004-08-25 WO PCT/US2004/027720 patent/WO2005026881A2/en active Search and Examination
- 2004-08-25 EP EP04782241A patent/EP1665043A4/en not_active Withdrawn
- 2004-08-25 KR KR1020067004663A patent/KR101164465B1/en not_active IP Right Cessation
- 2004-08-25 JP JP2006526127A patent/JP2007505395A/en active Pending
Patent Citations (3)
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)
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 |