KR100264940B1 - 감소된 런-타임 메모리 공간의 요구를 가지고 네트웍 모빌 코드를 실행하기 위한 컴퓨터 시스템 및 방법 - Google Patents
감소된 런-타임 메모리 공간의 요구를 가지고 네트웍 모빌 코드를 실행하기 위한 컴퓨터 시스템 및 방법 Download PDFInfo
- Publication number
- KR100264940B1 KR100264940B1 KR1019970023206A KR19970023206A KR100264940B1 KR 100264940 B1 KR100264940 B1 KR 100264940B1 KR 1019970023206 A KR1019970023206 A KR 1019970023206A KR 19970023206 A KR19970023206 A KR 19970023206A KR 100264940 B1 KR100264940 B1 KR 100264940B1
- Authority
- KR
- South Korea
- Prior art keywords
- methods
- run
- invoked
- time memory
- ones
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
본 발명은 메소드들을 가지는 프로그램들이 제공된 컴퓨터 네트웍 상의 클라이언트 컴퓨터 시스템 및 관련 방법에 관한 것이다. 클라이언트 컴퓨터는 감소된 메모리 공간의 요구들을 가지고 프로그램들을 실행할 수 있다. 특히, 네트웍 통신 인터페이스는 프로그램들의 메소드들을 받고 네트웍 통신 관리자는 런-타임 메모리 내의 사용가능한 공간에 압축이 안된 메소드들을 그들이 받아들였을 때 로드한다. 실행 제어기는 프로그램들의 실행 동안에 메소드들이 각기 다른 시간에 인보크 및 인보크되지 않게 되도록 프로그램들의 실행을 제어한다. 압축기는 인보크되지 아니한 압축이 안된 메소드들 중의 압축가능한 것들을 메모리에 압축하여 런-타임 메모리에서 공간이 사용가능하게 만든다. 또한 코드 압축기는 메소드들 중의 압축해제가 가능한 것들을 런-타임 메모리 내의 사용가능한 공간으로 압축해제하여 그들이 인보크될 수 있도록 한다.
Description
이제 컴퓨터 시스템들은 그 코드가 아키텍쳐 중립(architecture neutral (AN)) 이진 포맷으로 된, 이하에서 AN 코드라고 함, 프로그램들의 특성들을 이용하기 위하여 만들어지고 있으며 구성되어지고 있다. 그러므로, 이들 프로그램들의 AN 코드는 컴퓨터 시스템의 특별한 아키텍쳐나 플랫폼에 독립이다.
이 문서의 목적상 아키텍쳐(architecture)라는 용어는 일 군의 컴퓨터 모델들의 운용 특성을 의미하는 것으로 정의된다. 특별한 아키텍쳐들의 예들은 매킨토시 컴퓨터들, DOS 또는 윈도즈 운영체제들을 사용하는 IBM PC 호환 컴퓨터들, 솔라리스 운영체제에서 동작되는 선 마이크로시스템즈 컴퓨터들, 그리고 유닉스 운영체제를 사용하는 컴퓨터 시스템을 포함한다.
이 문서의 목적상 아키텍쳐 스페시픽(architecture specific (AS))이라는 용어는 어떤 프로그램들의 코드가 오로지 특별한 컴퓨터 아키텍쳐를 가지고 있는 컴퓨터 시스템들 상에서 만의 실행을 위한 이진 포맷으로 되어 있어야 한다는, 이하에서 AS 코드라고 함, 요구를 의미하는 것으로 정의된다. 그러므로, 전통적인 프로그래밍 언어(예, C 언어)로 쓰여진 그리고 특정의 아키텍쳐(예, IBM 호환 PC)를 위하여 컴파일된 코드를 가지고 있는 프로그램들은 오직 그 아키텍쳐 또는 그 아키텍쳐의 에뮬레이터들 상에서만 수행될 수 있다.
이 문서의 목적상 아키텍쳐 중립(architecture neutral(AN))이라는 용어는 그의 컴파일된 코드가 다른 아키텍쳐들을 가지는 다양한 컴퓨터 시스템들 상에서 수행될 수 있는 프로그램들을 의미하는 것으로 정의된다. 예를 들어, 특정의 아키텍쳐를 가지는 컴퓨터 시스템은 자바(Java) (선 마이크로시스템즈의 상표) 가상 머신 모듈을 가지고 구성될 수 있다. 자바 가상 머신 모듈은 자바 프로그래밍 언어로 쓰여진 코드를 가진 프로그램들의 실행을 가능하게 하며 자바 가상 머신의 명령어 세트를 위하여 ,이하에서 자바 바이트코드(Java bytecode)라고 불리는, 바이트코드로 컴파일된다. 자바 바이트코드는 컴퓨터 시스템의 특정 아키텍쳐에 독립적이다.
AN 코드를 가진 프로그램의 중요한 특징은 그들의 이식성을 포함한다. 예를 들어, AN 코드에 있는 프로그램들은 컴퓨터 시스템의 특별한 아키텍쳐에 관계없이 AN 코드를 실행하기 위하여 구성된 어떠한 컴퓨터 시스템에서도 실행될 수 있으므로, 이 프로그램들은 한 컴퓨터 시스템에서 다른 것으로 네트웍 상에서 쉽게 전송될 수 있다. 예를 들어, 자바 바이트코드로 컴파일된 프로그램들은 자바 가상 머신 모듈을 가지고 있는 어떠한 컴퓨터 시스템 상에서도 실행될 수 있으며 핫자바(HotJava) (선 마이크로시스템즈의 상표) 네트웍 통신 관리자를 사용하여 한 컴퓨터 시스템에서 다른 것으로 쉽게 전송될 수 있다.
더욱이, 자바 바이트코드로 컴파일된 프로그램들의 이식성과 관련한 다른 중요한 특징은 그 프로그램들의 검증성(verifiability) 이다. 특히 자바 가상 머신 모듈은 이 프로그램들이 미리 정의된 무결성 기준을 만족하는지를 쉽게 검증할 수 있다. 그 무결성 기준은 자바 바이트코드가 자바 가상 머신 모듈의 스택을 언더플로(underflow) 또는 오버플로(overflow) 할 수 없도록 하며 자바 바이트코드에 있는 모든 명령어들이 그 데이터-코드 타입(type)이 그 명령어들을 위한 데이터-코드 타입 제한들과 합치되는 데이터-코드만 사용하도록 하는 것을 보장하는 스택 및 데이터-코드 타입 사용 제한들을 포함한다. 결과적으로, 자바 바이트코드에 있는 프로그램은 객체 포인터들을 모조할 수 없으며 일반적으로 사용자가 그것에게 명시적으로 사용을 인가해준 것들 이외의 시스템 자원들을 액세스할 수 없다.
이러한 이유들로, 컴퓨터 시스템들은 네트웍 상에서 받은 AN 코드로 된 프로그램들의 실행을 위하여 구성되어지고 있다. 사실상, 어떤 경우들에는, 그런 컴퓨터 시스템들은 프로그램들이 컴퓨터 시스템의 런-타임(즉, 실행-시간) 메모리(예, 랜덤 액세스 메모리(RAM))로 직접 로드되기 때문에 보조 기억장치(예, 하드 디스크) 마저도 요구하지 않을 수 있다. 결과적으로, 그런 컴퓨터 시스템의 사용자는 현재 소프트웨어 제품들의 전형적인 소프트웨어 구입, 설치, 구성 그리고 업그레이드의 사이클로부터 자유로워진다.
앞에서 설명한 AN 코드의 특징들은 네트웍으로 연결된 그리고 요구에 대하여 AN 코드로 로드된 작고 저렴한 컴퓨터 시스템들의 사용에 있어서 특별히 매력이 있다. 예를 들어, 이런 종류의 컴퓨터 시스템들은 비디오 게임, 개인 디지털 보조장치(personal digital assistants(PDAs)), 셀룰러 폰, 또는 다른 유사한 컴퓨터 시스템들이나 컴퓨터로 작동되는 장치들일 수 있다.
그러나 불행하게도, AN 코드로 된 프로그램들은 AS 코드로 된 동일한 프로그램들보다 실행 속도가 늦다. 예를 들어, 자바 가상 머신 모듈에 의하여 실행된 자바 바이트코드(Java bytecode)로 된 프로그램들은 AS 코드로 된 동등한 프로그램보다 전형적으로 2.5 내지 20배나 느리다. 그러므로, 컴퓨터 시스템의 사용자는 AS 코드가 컴퓨터 시스템의 특수한 아키텍쳐 상에서 실행될 수 있도록 프로그램의 AS 코드를 네트웍 상에서 받는 것이 바람직하다는 것을 알게 될 것이다. 그러나, 이 프로그램들이 컴퓨터 시스템에 안전하게 전송될 수 있다는 것을 보장하기 위하여, 네트웍은 폐쇄된 혹은 신뢰된 것이어야만 하거나 또는 이 프로그램들은 확인될 수 있는 디지털 서명(digital signature)을 내장하고 있어야만 할 것이다.
또한, AN으로부터 생성된 AS 코드는 원래의 AN 코드에 비하여 훨씬 크다. 예를 들어, 자바 바이트코드로부터 생성된 AS 코드는 전형적으로 자바 바이트코드 크기의 2 내지 5배가 된다. 그러므로, 고정 크기의 런-타임 메모리의 양은 AN 코드보다 현격히 적은 컴파일된 AS 코드를 가질 수 있다. 그러나, 앞에서 기술하였듯이, AN 코드보다는 그것으로부터 생성된 AS 코드가 훨씬 빠르고 적절한 성능을 얻을 수 있는 유일한 방법일 수 있다.
앞에서 설명한 그런 컴퓨터 시스템들에 있어서, 가격이란 매우 중요하다. 사실상, 그런 컴퓨터 시스템을 구축하는 데에 있어서 가장 중요한 비용중의 하나는 로드된 프로그램들을 실행하기 위하여 요구되는 런-타임(run-time) 메모리의 양이다. 그러므로 이런 컴퓨터 시스템들에 의하여 요구되는 런-타임 메모리의 양을 감소시키는 것이 매우 중요한데 그것은 그런 감소가 강력한 경쟁력 있는 이득을 주기 때문이다.
또한, 위에서 설명한 타입의 컴퓨터 시스템들에 있어서, 보조 기억장치로 페이지(page)하는 것이 불가능 할 수 있다. 이 경우 네트웍을 통하여 받은 AN 또는 AS 코드는 런-타임 메모리에 캐쉬(cache)될 수 있고 런-타임 메모리 내의 그의 공간이 요구될 때 플러쉬(flush)될 수 있다. 그러나, 플러쉬된 프로그램의 실행에 계속되어야 한다면, 원래의 AN 코드는 다시 네트웍을 통하여 다운로드되어야 한다. 이것은 프로그램의 실행 속도에 중대한 영향을 준다. 또한, 보조 기억장치로 페이지가 가능한 시스템에서도 조차, 보조 기억장치로부터 As 코드를 검색하기 위하여 필요한 시간은 너무 소모적이다.
본 발명에서는, 런-타임 메모리에서의 코드의 저장장치 비용을 줄이기 위하여 네트웍 상에서 받은 프로그램의 코드의 압축 그리고 압축해제가 사용된다. 이것은 코드를 플러쉬하고 그것을 다시 검색하는 것보다 훨씬 빠르기 때문에, 코드의 실행 속도는 압축과 압축해제에 의하여 크게 영향을 받지 아니한다. 또한 본 발명은 실행 속도를 얻으면서 런-타임 메모리 공간에 대한 요구의 감소를 가능하게 하려는 과제를 달성한다.
도 1은 본 발명을 포함하는 클라이언트 컴퓨터 시스템의 블록도.
도 2는 클라이언트 컴퓨터 시스템의 동작에 관한 기능적인 블록도.
도 3은 클라이언트 컴퓨터 시스템의 압축 방법에 관한 흐름도.
도 4는 클라이언트 컴퓨터 시스템의 압축해제 방법에 관한 흐름도.
도 5는 클라이언트 컴퓨터 시스템의 대안적인 실시 예에 관한 블록도.
도 6은 클라이언트 컴퓨터 시스템의 대안적인 실시 예의 동작에 관한 기능적인 블록도.
* 도면의 주요 부분에 대한 부호의 설명
102 : 클라이언트 컴퓨터 104 : 서버 컴퓨터
138 : 운영 체제 140 : 네트웍 통신 관리자
142 : 가상 머신 모듈 146 : 코드 압축기
147 : AN 코드 148 : AS 코드
152 : 기준들 153 : 실행 제어기
요약해서, 본 발명은 컴퓨터 네트웍 상에서 메소드들을 가지는 프로그램들을 제공하는 클라이언트 컴퓨터 시스템 및 관련 방법에 관한 것이다. 클라이언트 컴퓨터는 감소된 메모리 공간의 요구들을 가지고 프로그램들을 실행할 수 있다. 클라이언트 컴퓨터 시스템은 런타임 메모리, 통신 인터페이스, 네트웍 통신 관리자, 실행 제어기, 그리고 코드 압축기를 포함한다.
네트웍 통신 인터페이스는 프로그램들의 메소드들을 받으며 네트웍 통신 관리자는 압축이 안된 메소드들을 그들이 받아들여졌을 때 런-타임 메모리 내의 사용가능한 공간에 로드한다. 실행 제어기는 메소드들이 각기 다른 시간에서 인보크되고 인보크되지 않도록 프로그램의 실행을 제어한다.
압축기는 인보크되지 아니한 압축이 안된 프로그램들 중의 압축가능한 것들을 런-타임 메모리에 압축한다. 그 결과, 공간이 런-타임 메모리에서 사용가능하게 만들어진다. 또한 코드 압축기는 압축된 메소드들 중의 압축해제가 가능한 것들을 런-타임 메모리 내의 사용가능한 공간으로 압축해제하여 그들이 인보크될 수 있도록 한다.
한 실시 예에서, 압축기는 압축된 메소드들 중에서 압축해제할 수 있는 것들을 그들이 인보크되는 즉시 압축해제한다.
다른 실시 예에서, 압축기는 압축된 메소드들 중에서 압축해제할 수 있는 것들을 미리 정해진 시간 간격 뒤에 압축해제한다.
다른 실시 예에서, 압축기는 압축이 안된 메소드들 중에서 압축가능한 것들을 그들이 더 이상 인보크되지 않게 되는 즉시 압축한다.
또다른 실시 예에서, 압축기는 압축이 안된 메소드들 중에서 압축가능한 것들을 런-타임 메모리에 있는 공간이 필요로 되어지지만 사용가능하지 아니할 때 압축을 한다. 또한 이 실시 예에서, 클라이언트 컴퓨터 시스템은 현재 인보크되지 아니한 메소드들을 가장 적게 최근에 인보크된 메소드로부터 가장 많이 최근에 인보크된 메소드까지의 순으로 그것들을 나열하는 최근 가장 적게 인보크된 리스트를 더 포함할 수 있다. 결과적으로, 압축이 안된 메소드들 중에서 압축가능한 것들은 런-타임 메모리에서 공간이 필요로 되어지나 사용불가능할 때 최근에 가장 적게 인보크된 리스트에 있는 최근에 가장 적게 인보크된 메소드들이다.
또다른 실시 예에서, 압축기는 런-타임 메모리 내의 공간이 필요로 되어지나 사용불가능할 때 압축된 메소드들 중에서 플러쉬가 가능한 것들의 압축된 아키텍쳐 스페시픽 코드를 런-타임 메모리로부터 플러쉬한다.
상기 실시 예에 대한 대안으로써, 클라이언트 컴퓨터 시스템은 보조기억장치를 포함할 수 있다. 이 경우, 압축기는 런-타임 메모리에서 공간이 필요로 되어지나 사용불가능할 때 압축된 메소드들 중에서 저장가능한 것들을 보조 기억장치에 저장한다. 또 압축기는 압축해제되어야 하는 압축된 메소드들 중에서 검색가능한 것들을 보조 기억장치로부터 검색한다.
본 발명의 부가적인 목적들과 특징들은 후술의 상세한 설명 및 첨부된 청구범위들로부터 도면들과 관련하여 이해될 때 더욱 명백해 질 것이다.
도 1과 관련하여, 본 발명에 따른 컴퓨터 네트웍(100)이 보여진다. 그것은 아나 또는 그 이상의 컴퓨터 클라이언트 시스템들(102), 하나 또는 그 이상의 서버 컴퓨터 시스템들(104), 그리고 네트웍 통신 연결(106)을 포함한다.
클라이언트 컴퓨터 시스템들(102)은 네트웍 통신 연결(106)을 통하여 서버 컴퓨터 시스템들(104)로 연결된다. 네트웍 통신 연결은 협역 또는 광역 네트웍, 인터넷 또는 어떤 다른 형태의 네트웍 통신 연결일 수 있다.
각 서버 컴퓨터 시스템(104)은 중앙처리장치(CPU), 사용자 인터페이스(112), 네트웍 통신 인터페이스(116), 그리고 메모리(118)를 포함한다. 네트웍 통신 인터페이스는 각 서버 컴퓨터 시스템이 네트웍 통신 연결(106)을 통하여 클라이언트 컴퓨터 시스템들(102)과 통신할 수 있게 해준다.
각 서버 컴퓨터 시스템(104)의 메모리(118)는 운영체제(120), 네트웍 통신 관리자(122), 그리고 프로그램들(145)을 저장한다. 운영체제와 통신 관리자는 모두 CPU(120) 상에서 수행된다. 운영체제는 사용자 인터페이스(112)를 가지고 사용자에 의하여 이슈되거나(issued) 또는 클라이언트 컴퓨터 시스템들(102)로부터 네트웍 통신 연결(106)을 통하여 네트웍 통신 인터페이스(116)에 의하여 수신된 명령어들에 응답하여 네트웍 통신 관리자의 수행을 제어하고 관리한다.
프로그램들 145는 메소드들 147을 포함한다. 이 문서의 목적상, 프로그램의 실행 동안 각기 다른 시간에 인보크(invoke) 및 인보크되지 아니하는 프로그램의 이산적인 단편(fragment) 또는 부분(portion)이 메소드(method)라고 간주된다.
각 서버 컴퓨터 시스템(104)의 메소드들(147)은 클라이언트 컴퓨터 시스템들(102)의 특정의 아키텍쳐(즉, 플랫폼)에 독립인 아키텍쳐 중립(AN) 코드를 가지고 있다. 이 프로그램들은 특별한 프로그래밍 언어로부터 AN 코드로 컴파일된다. 바람직한 실시 예에서, 이 프로그램들은 자바 프로그래밍 언어로 쓰여지며 자바 바이트코드로 컴파일된다. 더욱이, 이 프로그램들은 객체지향 방식으로 프로그램된 소프트웨어 프로그램들을 형성하는 객체 클래스들에 포함된다.
한편, 각 서버 컴퓨터 시스템의 메소드들(148)은 아키텍쳐 스페시픽(AS) 코드를 가지고 있는데 그것은 클라이언트 컴퓨터 시스템(102)의 특수한 아키텍쳐를 위하여 컴파일된다. 앞에서 암시했듯이, 이런 종류의 메소드들은 그들이 AN 코드로 된 동일한 메소드들보다 빠르다는 면에서 바람직하다. 나중에 더욱 상세히 설명되겠지만, 네트웍(100)은 폐쇄된 또는 신뢰된 것이어서 이 프로그램들이 높은 정도의 신뢰성을 가지고 클라이언트 컴퓨터들(102)에 안전하게 전송될 수 있도록 하거나 이 프로그램들이 확인될 수 있는 디지털 서명을 내장하는 것이 바람직하다.
뒤에서 더욱 상세하게 설명되듯이, 메소드들(147 그리고/또는)은 사용자의 요구 시에 네트웍 통신 관리자(122)를 사용하여 클라이언트 컴퓨터 시스템들(102)로 전송된다. 그러므로, 이 메소드들의 코드는 네트웍 모빌 코드(network mobil code) 라고 여겨진다.
각 클라이언트 컴퓨터 시스템(102)은 비디오 게임, 개인 디지털 보조장치(PDA), 셀룰러 폰, 데스크탑 컴퓨터, 또는 다른 컴퓨터 시스템이나 적은 양의 런-타임 메모리를 요구하는 컴퓨터에 의해 작동되는 장치일 수 있다. 더욱이, 각 클라이언트 컴퓨터 시스템은 중앙처리장치(CPU)(126), 사용자 인터페이스(128), 네트웍 통신 인터페이스(132), 읽기 전용 메모리(ROM)(134), 그리고 런-타임 랜덤 액세스 메모리(RAM)(136)를 포함한다. 네트웍 통신 인터페이스는 클라이언트 컴퓨터로 하여금 네트웍 통신 연결(106)을 통하여 서버 컴퓨터 시스템들(104)과 통신하도록 해준다.
각 클라이언트 시스템(102)의 RAM(136)은 ROM(134)로부터 모두 로드된 운영체제 138, 네트웍 통신 관리자(140), 가상 머신 모듈(142), 그리고 코드 압축기 (146)를 저장한다. 또한 RAM은 AN 코드를 포함하는 메소드들(147) 그리고/또는 서버 컴퓨터 시스템들(104)로부터 다운로드된 아키텍쳐에 특수한(AS) 코드를 포함하는 메소드(148)를 가지는 프로그램들(145)을 저장한다. 운영시스템, 네트웍 통신 관리자, 가상 머신 모듈, 컴파일러, 압축기, 그리고 프로그램들은 모두 CPU(126) 상에서 실행된다. 운영체제는 네트웍 통신 관리자, 가상 머신 모듈, 코드 컴파일러, 코드 압축기, 그리고 사용자 인터페이스(128)를 가지고 사용자에 의하여 발생된 명령어들에 응하는 프로그램들을 제어하고 관리한다.
앞에서 암시되었듯이, 메소드들(147 그리고/또는 148)은 사용자의 요구 시에 서버 컴퓨터 시스템들(104)로부터 받아들여졌다. 이 메소드들은 네트웍 통신 관리자(122)를 사용하여 얻어지는데 그것은, 바람직한 실시 예에, 핫자바(HotJava) 통신 관리자이다. 그리고는 네트웍 통신관리자는 이 메소드들을 RAM(136)에 로드한다.
가상 머신 모듈(142)의 코드 확인자(151)는 로드된 메소드들(147)의 AN 코드가 미리 정의된 무결성 기준을 만족시키는 지를 확인한다. 앞에서 언급했듯이, 이것은 로드된 메소드들이 가상 머신 모듈의 스택을 오버플로우하거나 언더플로우 할 수 없도록 하고 또한 모든 명령어들이 그 데이터 타입이 그 명령어들을 위한 데이터 타입 제한들과 합치하는 데이터만을 사용하도록 하기 위하여 스택 및 데이터 타입 사용 제한들을 포함한다.
그러나, AS 코드를 가진 수신된 메소드들(148)의 경우, 코드 확인자는 그들의 무결성을 직접 확인하기 위하여 사용될 수 없다. 그러므로, 무결성을 직접 확인하기 위해서는, 네트웍(100)은 폐쇄된 또는 신뢰된 것이어서 이 메소드들이 높은 정도의 신뢰성을 가지고 클라이언트 컴퓨터들(102)에 안전하게 전송될 수 있도록 할 수 있다. 다른 방안으로, 만약 네트웍(100)이 안전하지 아니하다면, 이 프로그램들은 디지털 서명을 내장하여 네트웍 통신 관리자(140)가 그들이 신뢰성 있는 근원지로부터 온 것이라는 것을 확인하게 할 수 있다.
가상 머신 모듈(142)의 실행 제어기(153)는 프로그램들(145)의 실행을 제어한다. 특히, 실행 제어기는 클라이언트 컴퓨터(102)의 특정의 아키텍쳐 상에서의 실행을 위하여 메소드들(147)의 AN 코드를 인터프리트하고 또한 이들 메소드들이 특정의 아키텍쳐 상에서 실행될 AS 코드를 포함하는 메소드(148)를 호출할 수 있게 한다. 프로그램들의 실행 동안 생성된 실행 데이터(149)는 RAM(136)에 저장된다. 또한, 만약 네트웍 통신 관리자 (140), 코드 컴파일러(144), 그리고/또는 코드 압축기(146)가 AN 코드로 되었다면, 실행 제어기는 그들의 실행도 역시 제어한다.
또한 클라이언트 컴퓨터 시스템(102)의 RAM 공간 요구들을 낮게 유지하기 위하여, 코드 압축기(146)는 다양한 시간에 메소드들(147 그리고/또는 148)의 코드를 RAM(136)에 압축 및 압축해제한다. 이것은 RAM(136)에 저장되어 있고 사용자 인터페이스(128)를 가지고 사용자에 의하여 입력된 미리 정의된 압축 및 압축해제 기준(152 및 154)을 각각 만족하기 때문에 압축 및 압축해제가 가능한 메소드들을 위하여 이루어진다. 압축 및 압축해제 기준은 뒤에서 더 자세히 설명도리 것이며, 그들은, 본 발명의 어떤 실시 예에서는, 미리 정의된 한 세트의 메모리 관리 기법으로부터 (사용자 인터페이스(128)를 사용하여) 선택 가능 또는 조정 가능하다.
메소드들(147 그리고/또는 148)의 저장장치 및 인보케이션(invocation) 상태는 메소드 상태 데이터 구조들(155)로 유지된다. 메소드 상태 데이터 구조들은 네트웍 통신 관리자(140), 실행 관리자(153), 그리고 코드 압축기(146)에 의하여 갱신된다.
도 2는 RAM(136) 내에 메소드들(147 그리고/또는 148)을 압축 및 압축해제하는 경우에 있어서의 클라이언트 컴퓨터 시스템들(102) 각각의 동작에 관한 기능적인 블록도 이다. 부가적으로, 도 3 및 도4는 각각 바람직한 압축 및 압축해제 방법들(300 및 400)을 보여준다.
도 1내지 도3과 관련하여, 사용자가 클라이언트 컴퓨터 시스템들(104) 중 하나의 프로그램들(145) 중 하나의 실행을 요구했을 때, 사용자의 클라이언트 컴퓨터 시스템(102)은 서버 컴퓨터 시스템으로부터 요구된 프로그램들을 얻는다(도 3의 단계 302). 이것은 사용자가 사용자 인터페이스(128)를 가지고 서버 컴퓨터 시스템으로부터 프로그램을 다운로드하여 실행하도록 하는 명령어를 발함으로써 이루어진다. 응답으로서, 운영체제(120)는 그런 요구가 만들어졌다는 것을 나타내는 메시지를 생성하는 네트웍 통신 관리자(140)를 호출한다. 그러면 네트웍 통신 인터페이스(132)는 그 메시지를 서버 컴퓨터 시스템으로 전송한다.
서버 컴퓨터 시스템(104)의 네트웍 통신 인터페이스(116)는 전송된 메시지를 받는다. 응답으로서, 서버 컴퓨터 시스템의 네트웍 통신 관리자(122)는 요구된 프로그램(145)의 메소드(147 그리고/또는 148)를 네트웍 통신 인터페이스에게 제공하여 그것이 메소드를 사용자의 클라이언트 컴퓨터 시스템(102)에게 전송하도록 한다.
전송된 메소드들(147 그리고/또는 148)은 사용자의 클라이언트 컴퓨터 시스템(102)의 네트웍 통신 인터페이스(132)에 의하여 받아들여진다. 응답으로서, 네트웍 통신 관리자(140)는 받은 메소드들의 저장을 위하여 RAM(136) 내에 충분한 공간이 사용가능한지의 여부를 결정한다(도 3의 결정단계 304). 만약 있으면, 네트웍 통신 관리자는 압축이 안된 이 메소드들의 코드를 RAM 내의 사용가능한 공간으로 로드한다(도 3의 단계306). 결과적으로, 이 메소드들은 이전에 로드된 다른 프로그램들(145)의 메소드들(147 그리고/또는 148)과 함께 RAM에 로드된다. 이 메소드들을 로딩하는 때에, 네트웍 통신 관리자는 메소드들 및 이 메소드들에 의하여 점유된 RAM(136) 내의 메모리 공간에 대한 상응하는 포인터들을 식별하기 위하여 메소드 상태 데이터 구조들(155)의 메소드 저장 상태 테이블(200)을 갱신한다. 또한 네트웍 통신 관리자는 메소드들의 코드가 압축이 안되었다는 것(U)을 나타내기 위하여 메소드 상태 테이블을 갱신한다.
그리고는 네트웍 통신 관리자(140)는 가상 머신 모듈(142)의 코드 확인자(151)를 인보크한다. 응답으로서, 코드 확인자는 이제 바로 전에 로드된 메소드들(147)의 AN 코드가 앞에서 설명한 미리 결정된 무결성 기준과 합치되는 것을 확인한다(도 3의 단계 307).
메소드들(147 그리고/또는 148)이 바로 전에 로드된 프로그램(145)은 이전에 로드된 프로그램들(145) 중의 어느 것과 함께 실행 제어기의 제어 하에 실행된다(도 3의 단계 314). 프로그램들이 실행될 때, 그들의 메소드들은 그들의 실행 동안 각기 다른 시간에 인보크되고 인보크되지 않는다. 앞에서 언급하였듯이, 실행 제어기는 메소드들(147)의 AN 코드를 사용자의 클라이언트 컴퓨터 시스템(102)의 특수한 아키텍쳐 상에서의 실행을 위하여 인터프리트되며 이 프로그램들이 그 특수한 아키텍쳐 상에서의 실행을 위하여 AS 코드를 포함하는 메소드들(148)을 호출할 수 있게 한다.
로드된 메소드들(147 그리고/또는 148)의 각각은 그것이 데이터를 기다려야만 하거나, 슬립(sleep)에 들어 있거나 하는 등의 이유로 다양한 시간에서 인보크되지 아니할 수 있다. 프로그램 실행 제어기가 이러한 것이 발생했다고 판단을 하면, 그것은 현재 인보크되지 않았다는 것을 나타내기 위하여 프로그램 상태 데이터 구조들(155)의 최근 가장 적게 인보크된 (LRI) 리스트(202)에 메소드들을 추가한다. LRI 리스트에 있는 메소드들은 최근에 가장 많이 인보크된 것으로부터 최근 가장 적게 인보크된 것까지의 순으로 나열되어 있다.
앞에서 암시했듯이, RAM(136)의 공간 요구들을 감소시키기 위하여, 미리 정의된 압축 기준(152)이 만족된 로드된 메소드(147 그리고/또는 148) 각각의 코드는 코드 압축기(146)에 의하여 압축된다. 바람직한 실시 예에서, 압축 기준(152)은 (1) RAM(136)에서의 공간이 요구되지만 사용불가능할 때, 그리고 (2) 메소드가 아직 그의 압축된 코드를 가지지 아니한 LRI 리스트(202) 내의 최근에 가장 적게 인보크된 메소드일 때 압축된다는 것을 특정한다.
네트웍 통신 관리자(140)가 RAM(136) 내의 공간이 서버 컴퓨터 시스템들(104)로부터 받은 하나 또는 그 이상의 메소드들(147 그리고/또는 148)을 로드하기 위하여 사용될 수 없다고 판단할 때(도 3의 결정단계 304), 그것은 코드 압축기(146)를 인보크한다. 응답으로서, 코드 압축기는 충분한 공간이 사용가능하게 만들어 질 때까지 코드가 아직 압축되지 아니한 LRI 리스트(202) 내의 최근에 가장 적게 인보크된 메소드(들)의 코드를 압축한다(도 3의 단계 316). 또한 코드 압축기는 그 메소드(들)의 압축된 코드의 메모리 공간(들)에 대한 상응하는 포인터(들)를 식별하기 위하여 그리고 메소드(들)의 코드가 압축되었다는 것(C)을 나타내기 위하여 메소드 저장 상태 테이블(200)을 갱신한다. 그리고 네트웍 통신 관리자는, 앞에서 설명된 데로, 공간이 사용가능하게 된 메소드(들)를 그 이용가능한 공간으로 로드한다(도 3의 단계306).
코드 압축기(146)는 관련 기술분야의 당업자들에게 잘 알려진 어떤 한 빠른 데이터 압축 기법을 사용할 수 있다. 또한, 코드 압축기는 메소드들(147) 의 AN 코드 및 메소드들(148)의 AS 코드의 최적 압축을 위하여 별도의 압축 기법을 사용할 수도 있다.
또한, 로드된 메소드들(147 그리고/또는 148)이 인보크된 동안, 그들은 실행 데이터를 생성한다. 실행 제어기(153)에 의하여 인보크될 것으로 결정된(도 3의 결정 단계 320) 그리고 실행 데이터를 저장하기 위하여 RAM(136) 내의 공간이 사용가능한(도 3의 단계 322) 이 메소드들의 어느 하나에 대하여, 실행 제어기는 그 실행 데이터를 RAM에 저장한다(도3의 단계324).
그러나, 실행 제어기(153)에 의하여 인보크된 것으로 결정된(도 3의 결정 단계 320) 그리고 실행 데이터를 저장하기 위하여 RAM(136) 내의 공간이 필요하지만 사용불가능한(도 3의 단계 322) 로드된 메소드들(147 그리고/또는 148)의 어느 하나에 대하여, 실행 제어기는 코드 압축기(146)를 인보크한다. RAM 내의 공간이 요구되는 앞의 경우에서처럼, 코드 압축기는 충분한 공간이 사용가능하게 만들어질 때까지 코드가 아직 압축되지 아니한 LRI 리스트(202) 내의 최근에 가장 적게 실행된 메소드(들)의 코드를 압축한다(도 3의 단계 326). 그리고 앞에서 설명되었듯이, 코드 압축기는 그 메소드(들)의 압축된 코드의 메모리 공간(들)에 대한 상응하는 포인터(들)를 식별하기 위하여 그리고 메소드(들)의 코드가 압축되었다는 것(C)을 나타내기 위하여 메소드 저장 상태 테이블(200)을 갱신한다. 그리고 실행 제어기는 실행 데이터를 앞에서 설명된 데로, RAM 내의 이용가능하게 된 공간에 저장하며(도 3의 단계 324), 실행 데이터가 저장된 메소(들)를 가지고 프로그램의 실행을 계속한다(도 3의 단계 314).
또한, 도 1,도 2, 그리고 도 4와 관련하여, RAM(136) 내의 공간이 사용가능할 때, 압축된 그리고 미리 결정된 압축해제 기준(154)이 만족되는 각 로드된 메소드(147 그리고/또는 148)는 코드 압축기(146)에 의하여 압축해제된다. 바람직한 실시 예에서, 압축해제가 가능한 메소드의 코드를 압축해제하기 위한 미리 정의된 압축해제 기준은 단순히 메소드의 코드가 압축되고 또 메소드가 다시 인보크되어야 할 때 압축해제되어야 한다는 것을 특정한다.
그러므로, 실행 제어기(153)가 로드된 메소드들(147 그리고/또는 148) 중의 하나가 인보크되어야 하는 것으로 결정할 때마다(도 4의 결정 단계 402), 이 메소드의 코드가 압축되어 있는 지를 결정한다(도 4의 결정 단계 404). 이 결정은 메소드 저장 상태 테이블(200)로부터 결정된다. 만약 메소드의 코드가 압축된 것이 아니면, 메소드는 실행 제어기에 의하여 인보크된다(도 4의 단계 406). 그것이 더 이상 인보크되지 아니하면, 그의 코드는 코드 압축기(146)에 의하여 앞에서 설명한 방식으로 압축될 수 있다.
그러나, 만약 인보크될 메소드(147 또는 148)의 코드가 압축되면, 실행 제어기는 그 메소드의 코드를 압축해제하기 위하여 코드 압축기(146)를 인보크한다. 코드 압축기는 메소드의 코드를 압축해제하기 위하여 RAM(136) 내에 충분한 사용가능한 공간이 있는지를 결정한다(도 4의 결정 단계 408). 만약 사용가능한 충분한 공간이 있으면, 코드 압축기는 사용가능한 공간 내의 메소드의 코드를 압축해제한다(도 4의 단계 410). 그렇게 하는 때에, 그것은 압축이 안된 코드의 메모리 공간(들)에 대한 상응하는 포인터(들)를 식별하기 위하여 그리고 메소드의 코드가 지금 압축이 안되었다는 것(U)을 나타내기 위하여 메소드 저장 상태 테이블(200)을 갱신한다.
그러나, 만약 사용가능한 충분한 공간이 없다면, 코드 압축기(146)는 공간이 사용가능하게 만들어질 때까지 코드가 압축이 안된 LRE 리스트(202) 내의 최근에 가장 적게 실행된 메소드(들)의 코드를 압축한다(도 4의 단계 412). 이것은 앞에서 기술한 방식으로 이루어진다. 공간이 사용가능하게 만들어진 후에, 압축해제된 메소드(147 또는 148)들의 코드는 사용가능한 공간 내의 코드 압축기에 의해서 압축해제되고 그리고 앞에서 설명된 방식으로 실행 제어기(153)에 의하여 인보크된다(도 4의 단계 410 및 406).
앞의 관점에서, 본 발명은 실행 속도를 얻으면서 런-타임 메모리 공간에 대한 감소를 가능하게 한다는 것이 명백하다. 이것은 로드된 메소드들(147 그리고/또는 148)을 압축함으로써, 그들이 RAM(136)으로부터 플러쉬되고 RAM 내의 공간이 필요로 되어질 때 서버 컴퓨터 시스템(104)으로부터 다시 다운로드될 필요가 없다는 사실 때문이다. 그러나, 당업자들은 다른 대안적인 실시 예들이 비슷한 이익들을 제공하기 위하여 구현될 수 있다는 것을 인식할 수 있을 것이다.
특히, 앞에서 설명된 압축 기준(152)은 압축이 안된 코드를 가진 최근에 가장 적게 실행된 메소드(들)(147 그리고/또는 148)의 코드가 RAM(136) 내의 공간이 요구되어 지지만 사용불가능할 때 압축될 것이라는 것을 명시했다. 그러나, 압축 기준은 사용자에 의하여 다양한 범위의 선택사양으로부터 선택될 수 있으며 사용자의 클라이언트 컴퓨터 시스템(102)에 특수한 많은 조건들에 종속 될 수 있다. 예를 들어, 압축 기준은 단순히 메소드들 각각의 코드가 프로그램이 더 이상 인보크되지 않게 되자마자 압축되어야 한다는 것을 명시할 수 도 있다. 또는, 어떤 메소드들의 코드가 시간이 허락하는 한 늦추어져서 압축되어야 한다는 것을 명시할 수도 있다. 앞 설명의 어떤 것에 대한 부가적인 변형으로서, 압축 기준은 특정의 크기 및 타입의 메소드들의 코드만이 압축되어야 한다는 것만을 명시할 수 있다.
또한, 앞서 기술되었듯이, 압축해제 기준(154)은 코드가 압축된 코드인 메소드(147 또는 148)가 그 메소드가 인보크되어야 하는 즉시 그의 압축해제된 코드를 가질 것이라고 명시했다. 그러나, 압축해제 기준은 압축된 코드가 미리 정의된 시간 간격이 지난 후에 압축해제된다는 것을 명시할 수 있다. 이 경우, 데이터 압축기는 시간 간격을 관리하기 위하여 타이머를 포함할 것이다. 한 예에서, 이 기법은 메소드가 이 시간 간격동안 압축되고 그것이 깨어나게 되기(awakened) 바로 전에 압축해제되도록 주어진 시간 간격 동안 잠자도록(sleep) 놓여지는 메소드를 위하여 사용될 수 있다. 또는, 다른 예에서, 그 기법은 메소드가 압축되는 시간 간격이 언제 데이터가 메소드를 위하여 사용가능하게 될 것인지를 예측하도록 선택되는 상황하에서 데이터를 기다리고 있는 메소드를 위하여 사용될 수 있다.
다른 실시 예에서, 압축 기준(152)은 언제 로드된 메소드들(147 그리고/또는 148)이 RAM(136)으로부터 플러쉬될 것인지를 명시하는 플러슁(flushing) 기준을 포함할 수 있다. 예를 들어, 플러슁 기준은 RAM 내에 인보크되지 아니한 그리고 압축되지 아니한 로드된 메소드들이 더 이상 존재하지 않는다면, 압축된 코드와 함께 LRI 리스트(202) 내의 최근에 가장 적게 실행된 메소드(들)는 플러쉬될 수 있고 그리고 충분한 공간이 사용가능하게 만들어 질 때까지 RAM(136)으로부터 플러쉬된다는 것을 나타낼 수 있다. 결과적으로, 메소드가 RAM으로부터 플러쉬되고 그리고 다시 실행되어야 할 때, 네트웍 통신 관리자(140)는 앞에서 설명된 방식으로 프로그램을 공급한 서버 컴퓨터 시스템(104)으로부터 메소드를 다시 다운로드 받아야 한다. 실행 제어기(153)는 어떤 플러쉬된 메소드들에 대한 참조를 제거함으로써 프로그램 저장 상태 테이블(200)을 갱신한다.
로드된 메소드들(147 그리고/또는 148)을 RAM으로부터의 플러슁(flushing)이 실행 속도의 측면에서 소모적이므로, 도 5 및 도 6에서 보여지는 바와 같이, 그렇지 않으면 플러쉬될 메소드들을 저장하기 위하여 보조 기억장치(500)가 사용될 수 있다. 이 경우, 앞에서 논의된 압축 기준(152)은 바로 앞에서 설명된 플러슁 기준과 비슷한 보조 기억장치 기준을 포함할 수 있고 보조 기억장치 기준을 만족하여 저장가능 상태인 메소드들을 저장하기 위하여 사용된다. 그러나, 이 경우, 코드 압축기(146)는 보조 기억장치에 있는 이 메소드들을 지정하기 위하여 메소드 저장 상태 테이블(200) 내의 포인터들을 갱신할 것이다. 또한, 코드가 압축되어 있고, 보조 기억장치에 저장되어있고, 그리고 압축해제되어야 하는 검색가능한 메소드들에 대하여, 그 메소드들의 코드는 보조 기억장치로부터 검색될 것이며 그리고 앞에서 설명한 방식대로 RAM(136) 내에 압축해제될 것이다.
또한, 클라이언트 컴퓨터(102)가 보조 기억장치(500)를 포함하는(예, 네트웍으로 연결된 데스크톱 컴퓨터) 실시 예에서, 메소드들(147 그리고/또는 148)은 서버 컴퓨터 시스템(104)으로부터 보조 기억장치로 다운로드될 수 있다. 그러면, 이 메소드들은 서버 컴퓨터 시스템들(104)로부터가 아니라 보조 기억장치로부터 직접 RAM(136)으로 로드될 수 있을 것이다. 부가적으로, 그런 실시 예에서, 운영체제(138), 네트웍 통신 관리자(140), 가상 머신 모듈(142), 그리고 코드 압축기(146)는 보조 기억장치에 저장될 수 있고 거기로부터 RAM으로 로드될 수 있다.
또다른 실시 예에서, 운영체제(138), 네트웍 통신 관리자(140), 가상 머신 모듈(142), 그리고 코드 압축기(146)는 서버 컴퓨터 시스템들(104) 중의 하나로부터 클라이언트 컴퓨터 시스템(102)의 RAM(136)으로 다운로드될 수 있다. 이것은 서버 컴퓨터 시스템의 메소드들(147 그리고/또는 148)을 위하여 앞에서 설명했던 것과 비슷한 방식으로 이루어진다.
또다른 실시 예에서, 가상 머신 모듈(142)은 실질적으로 하나의 실리콘 칩 상에서 구현될 수 있으며 클라이언트 컴퓨터 시스템(102)의 CPU(126)으로서 역할을 할 수 있다. 이 경우, AN 코드를 가지고 있는 메소드들(147)은 특수한 아키텍쳐를 위하여 인터프리트되지 않고 그 대신에 직접 실행된다. 이 실시 예에서, AS 코드를 가진 메소드들(148)은 사용되지 않을 것이다.
마지막으로, 본 발명이 몇 개의 특수한 실시 예와 관련하여 설명되었지만, 이 설명은 본 발명의 예시적인 것이며 본 발명을 한정하는 것으로 해석되지 아니한다. 첨부된 청구범위에 의하여 정의된 본 발명의 진정한 정신과 범위를 일탈하지 아니하고 당해 기술분야의 당업자들에게 다양한 변경들이 일어날 수 있다.
이상에서 살펴본 바와 같이, 본 발명은 기존의 기술에 의한 경우에 비하여 적은 런-타임 메모리 공간을 가지고도 프로그램들의 실행을 가능하게 한다. 따라서, 컴퓨터 시스템을 구축하는 데에 있어서 가장 중요한 비용중의 하나인 런타임 메모리의 양을 줄임으로써 가격 경쟁력에서 매우 유리한 효과가 있다. 또한 본 발명은 실행 속도를 얻으면서 런-타임 메모리 공간에 대한 감소를 가능하게 한다.
Claims (17)
- 프로그램들이 메소드들로 주어진 컴퓨터 네트웍에서, 감소된 런-타임 메모리 공간 요구들을 가지고 프로그램들을 실행하기 위한 클라이언트 컴퓨터 시스템에 있어서,런-타임 메모리;상기 메소드들을 검색하는 네트웍 통신 인터페이스;압축이 안된 상기 메소드들을 그들이 받아들여졌을 때 런-타임 메모리 내의 사용가능한 공간으로 로드하는 네트웍 통신 관리자;상기 프로그램들의 실행을 제어하는 실행 제어기, 그것에 의하여 상기 메소드들은 각 다른 시간에 인보크(invoke) 및 인보크되지 아니하며; 그리고압축기를 포함하며, 상기 압축기는(A) 인보크되지 아니한 상기 압축이 안된 메소드들 중에서 압축가능한 것들을 상기 런-타임 메모리에 압축하고, 그것에 의하여 공간이 런-타임 메모리에서 사용가능하게 만들어지며, 그리고(B) 상기 압축된 메소드들 중에서 압축해제가 가능한 것들이 인보크될 수 있도록 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들을 상기 런-타임 메모리의 사용가능한 공간으로 압축해제하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서,상기 압축기가 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들이 인보크되어야 하는 즉시 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들을 압축해제하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서,상기 압축기가 미리 정의된 시간 간격 후에 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들을 압축해제하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항, 제 2항 또는 제 3항에 있어서,상기 압축기가 상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들이 더 이상 인보크되지 아니하는 즉시 상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들을 압축하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항, 제 2항 또는 제 3항에 있어서,상기 압축기가 상기 런-타임 메모리 내이 공간이 요구되어지나 사용가능하지 아니할 때 상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들을 압축하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항 내지 제 5항 중의 어느 한 항에 있어서,현재 인보크되지 아니한 상기 메소드들을 최근에 가장 적게 인보크된 메소드에서 최근에 가장 많이 인보크된 메소드의 순으로 나열하는 최근에 가장 적게 인보크된 리스트를 더 포함하며;상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들이 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 압축이 안된 최근에 가장 적게 실행된 리스트 내의 상기 최근에 가장 적게 인보크된 메소드들인 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항 내지 제 6항 중의 어느 한 항에 있어서상기 메소드들이 클라이언트 컴퓨터 시스템의 아키텍쳐에 독립인 아키텍쳐 중립 코드로 된 메소드들을 포함하며; 그리고상기 클라이언트 컴퓨터 시스템이 상기 실행 제어기를 포함하며 상기 아키텍쳐 중립 코드로 된 상기 메소드들의 실행을 가능하게 하는 가상 머신 모듈을 더 포함하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항 내지 제 7항 중의 어느 한 항에 있어서,상기 압축기가 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 압축된 메소드들 중에서 플러쉬될 수 있는(flushable) 것들을 상기 런-타임 메모리로부터 플러쉬하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 제 1항 내지 제 8항 중의 어느 한 항에 있어서,보조 기억장치를 더 포함하며;상기 압축기가(A) 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 압축된 메소드들 중에서 저장가능한 것들을 상기 보조 기억장치에 저장하며, 그리고(B) 압축해제 되어야할 상기 압축된 메소드들 중에서 검색가능한 것들을 상기 보조 기억장치로부터 검색하는 것을 특징으로 하는 클라이언트 컴퓨터 시스템.
- 프로그램들이 메소드들로 주어진 컴퓨터 네트웍에서, 감소된 런-타임 메모리 공간 요구들을 가지고 상기 프로그램들을 실행하는 방법에 있어서,런-타임 메모리를 제공하는 단계;메소드들을 받아들이는 단계;상기 압축이 안된 메소드들을 그들이 받아들여졌을 때 상기 런-타임 메모리 내의 사용가능한 공간으로 로딩하는 단계;상기 프로그램들을 수행하는 단계, 그것에 의해 상기 메소드들은 각 다른 시간에서 인보크 및 인보크되지 아니하며;인보크되지 아니한 상기 압축이 안된 메소드들 중에서 압축가능한 것들을 상기 런-타임 메모리에 압축하는 단계, 그것에 의하여 상기 런-타임 메모리에서 공간이 사용가능하게 만들어지며; 그리고상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들이 인보크될 수 있도록 상기 압축된 메소드들 중에서 압축해제가 가능한 것들을 상기 런-타임 메모리의 사용가능한 공간으로 압축해제하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 10항에 있어서,상기 압축해제 단계가 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들이 인보크되어야 하는 즉시 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들을 압축해제하는 것을 포함하는 것을 특징으로 하는 방법.
- 제 10항에 있어서,상기 압축해제 단계가 미리 정의된 시간 간격 후에 상기 압축된 메소드들 중에서 상기 압축해제가 가능한 것들을 압축해제하는 것을 포함하는 것을 특징으로 방법.
- 제 10항, 제 11항 또는 제 12항에 있어서,상기 압축 단계가 상기 압축된 메소드들 중에서 상기 압축가능한 것들이 더 이상 인보크되지 아니하는 즉시 상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들을 압축하는 것을 포함하는 것을 특징으로 하는 방법.
- 제 10항, 제 11항 또는 제 12항에 있어서,상기 압축 단계가 상기 런-타임 메모리 내의 공간이 요구되어지나 사용가능하지 아니할 때 상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들을 압축하는 것을 포함하는 것을 특징으로 하는 방법.
- 제 10항 내지 제 14항 중의 어느 한 항에 있어서,현재 인보크되지 아니한 상기 메소드들을 최근에 가장 적게 인보크된 메소드에서 최근에 가장 많이 인보크된 메소드의 순으로 나열하는 최근에 가장 적게 인보크된 리스트를 제공하는 단계를 더 포함하며;상기 압축이 안된 메소드들 중에서 상기 압축가능한 것들은 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 압축이 안된 상기 최근에 가장 적게 인보크된 리스트 내의 상기 최근에 가장 적게 인보크된 메소드들인 것을 특징으로 하는 방법.
- 제 10항 내지 제 15항 중의 어느 한 항에 있어서,상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 압축된 프로그램들 중에서 플러쉬될 수 있는(flushable) 것들을 상기 런-타임 메모리로부터 플러쉬하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 10항 내지 제 16항 중의 어느 한 항에 있어서,보조 기억장치를 제공하는 단계;상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 압축된 메소드들 중에서 저장가능한 것들을 상기 보조 기억장치에 저장하는 단계; 그리고압축해제되어야 할 상기 압축된 메소드들 중에서 검색가능한 것들을 상기 보조 기억장치로부터 검색하는 단계를 더 포함하는 것을 특징으로 하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/658,472 | 1996-06-05 | ||
US08/658,472 US5859982A (en) | 1996-06-05 | 1996-06-05 | Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements |
US8/658472 | 1996-06-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR980004098A KR980004098A (ko) | 1998-03-30 |
KR100264940B1 true KR100264940B1 (ko) | 2000-10-02 |
Family
ID=24641373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970023206A KR100264940B1 (ko) | 1996-06-05 | 1997-06-05 | 감소된 런-타임 메모리 공간의 요구를 가지고 네트웍 모빌 코드를 실행하기 위한 컴퓨터 시스템 및 방법 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5859982A (ko) |
EP (1) | EP0811911B1 (ko) |
JP (1) | JP3210606B2 (ko) |
KR (1) | KR100264940B1 (ko) |
CN (1) | CN1097770C (ko) |
DE (1) | DE69740171D1 (ko) |
SG (1) | SG74592A1 (ko) |
TW (1) | TW424195B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100319755B1 (ko) * | 1999-12-02 | 2002-01-05 | 오길록 | 내장형 자바가상머신을 위한 바이트코드 압축 방법 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7043537B1 (en) * | 1997-09-05 | 2006-05-09 | Cisco Technology, Inc | System and method for remote device management |
JPH11296381A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
FR2777673B1 (fr) * | 1998-04-15 | 2001-09-21 | Bull Cp8 | Dispositif de traitement de l'information comprenant des moyens pour gerer une memoire virtuelle, et procede de stockage d'informations associe |
US6397385B1 (en) * | 1999-07-16 | 2002-05-28 | Excel Switching Corporation | Method and apparatus for in service software upgrade for expandable telecommunications system |
GB9921720D0 (en) | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
AU1632001A (en) * | 1999-10-22 | 2001-05-08 | General Instrument Corporation | Management of volatile and non-volatile memory resources in digital communications terminals |
US6629227B1 (en) | 2000-05-04 | 2003-09-30 | Scientific-Atlanta, Inc. | System and method for a communication terminal to manage memory and maintain a current application version for multiple applications |
JP4568963B2 (ja) | 2000-06-08 | 2010-10-27 | ソニー株式会社 | 情報処理装置、情報通信システム |
US20020026474A1 (en) * | 2000-08-28 | 2002-02-28 | Wang Lawrence C. | Thin client for wireless device using java interface |
FR2817055B1 (fr) * | 2000-11-22 | 2003-02-14 | Gemplus Card Int | Execution d'une application dans un objet electronique portable a faible capacite de memoire |
US20040015960A1 (en) * | 2001-03-16 | 2004-01-22 | Sanjay Wanchoo | Method for loading and executing an application in an embedded environment |
JP2002318696A (ja) | 2001-04-23 | 2002-10-31 | Mitsubishi Electric Corp | プログラム実行装置および方法 |
US6895463B2 (en) | 2001-10-30 | 2005-05-17 | Pioneer Digital Technologies, Inc. | Method and apparatus for efficiently running an execution image using volatile and non-volatile memory |
US7269671B2 (en) | 2002-06-04 | 2007-09-11 | Georgia Tech Research Corporation | Systems, methods and computer program products for leakage-proof program partitioning |
GB2403033A (en) * | 2003-06-18 | 2004-12-22 | Research In Motion Ltd | PDA software compression |
EP1665040A2 (en) * | 2003-09-17 | 2006-06-07 | Research In Motion Limited | System and method for dynamic version management of applications |
CA2540519C (en) * | 2003-10-02 | 2011-04-19 | Research In Motion Limited | System and method for flexible application hosting on a wireless device |
JP4638250B2 (ja) * | 2005-02-03 | 2011-02-23 | 三菱電機株式会社 | プログラムコード生成支援装置及び方法並びにプログラムコード生成支援方法のプログラム |
EP1872526A4 (en) * | 2005-04-18 | 2008-05-21 | Research In Motion Ltd | SYSTEM AND METHOD FOR SERVICE CUSTOMIZATION FOR APPLICATIONS |
US8566481B2 (en) | 2009-06-10 | 2013-10-22 | Cisco Technology, Inc. | Managing configuration data |
US20110022986A1 (en) * | 2009-07-23 | 2011-01-27 | Research In Motion Limited | Method and device for application archiving |
KR102114388B1 (ko) * | 2013-10-18 | 2020-06-05 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1341310C (en) * | 1988-07-15 | 2001-10-23 | Robert Filepp | Interactive computer network and method of operation |
US5280613A (en) * | 1990-06-25 | 1994-01-18 | Hewlett-Packard Company | ANDF installer using the HPcode-Plus compiler intermediate language |
JPH04105129A (ja) * | 1990-08-24 | 1992-04-07 | Nec Corp | プログラム実行方式 |
US5307413A (en) * | 1991-07-19 | 1994-04-26 | Process Software Corporation | Method and apparatus for adding data compression and other services in a computer network |
DE69432199T2 (de) * | 1993-05-24 | 2004-01-08 | Sun Microsystems, Inc., Mountain View | Graphische Benutzerschnittstelle mit Verfahren zur Schnittstellebildung mit fernsteuernden Einrichtungen |
US5603031A (en) * | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5497494A (en) * | 1993-07-23 | 1996-03-05 | International Business Machines Corporation | Method for saving and restoring the state of a CPU executing code in protected mode |
US5432937A (en) * | 1993-08-20 | 1995-07-11 | Next Computer, Inc. | Method and apparatus for architecture independent executable files |
GB2284492B (en) * | 1993-12-06 | 1998-05-13 | Graeme Roy Smith | Improvements to computer control units |
US5682550A (en) * | 1995-06-07 | 1997-10-28 | International Business Machines Corporation | System for restricting user access to default work area settings upon restoration from nonvolatile memory where the settings are independent of the restored state information |
US5734822A (en) * | 1995-12-29 | 1998-03-31 | Powertv, Inc. | Apparatus and method for preprocessing computer programs prior to transmission across a network |
-
1996
- 1996-06-05 US US08/658,472 patent/US5859982A/en not_active Expired - Lifetime
-
1997
- 1997-06-04 EP EP97303814A patent/EP0811911B1/en not_active Expired - Lifetime
- 1997-06-04 TW TW086107707A patent/TW424195B/zh not_active IP Right Cessation
- 1997-06-04 DE DE69740171T patent/DE69740171D1/de not_active Expired - Lifetime
- 1997-06-05 SG SG1997001929A patent/SG74592A1/en unknown
- 1997-06-05 KR KR1019970023206A patent/KR100264940B1/ko not_active IP Right Cessation
- 1997-06-05 CN CN97115954A patent/CN1097770C/zh not_active Expired - Fee Related
- 1997-06-05 JP JP18427797A patent/JP3210606B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100319755B1 (ko) * | 1999-12-02 | 2002-01-05 | 오길록 | 내장형 자바가상머신을 위한 바이트코드 압축 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP0811911A3 (en) | 1999-03-10 |
JPH10228380A (ja) | 1998-08-25 |
EP0811911A2 (en) | 1997-12-10 |
JP3210606B2 (ja) | 2001-09-17 |
KR980004098A (ko) | 1998-03-30 |
US5859982A (en) | 1999-01-12 |
TW424195B (en) | 2001-03-01 |
EP0811911B1 (en) | 2011-04-13 |
SG74592A1 (en) | 2000-08-22 |
CN1097770C (zh) | 2003-01-01 |
DE69740171D1 (de) | 2011-05-26 |
CN1174358A (zh) | 1998-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100528844B1 (ko) | 감소된런-타임메모리공간의요구를가지고아키텍쳐스페시픽코드를실행하기위한컴퓨터시스템및방법 | |
KR100264940B1 (ko) | 감소된 런-타임 메모리 공간의 요구를 가지고 네트웍 모빌 코드를 실행하기 위한 컴퓨터 시스템 및 방법 | |
KR100453723B1 (ko) | 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법 | |
US7174544B2 (en) | JAVA compile-on-demand service system for accelerating processing speed of JAVA program in data processing system and method thereof | |
US6430570B1 (en) | Java application manager for embedded device | |
EP1011043A2 (en) | Method and apparatus for loading a java application program | |
EP1398697A2 (en) | Extending operating system functionality for an application | |
US7506323B2 (en) | Program execution processing terminal device, program execution processing method, and program | |
WO2002075531A1 (en) | Method for loading and executing an application in an embedded environment | |
US7506310B2 (en) | Method and system for caching managed code for efficient execution on resource-constrained devices | |
US6636885B1 (en) | System using interface class in client computer to resolve references and retrieve delayed class applet from server | |
US20140173635A1 (en) | System and method for adding local resources for use by a mobile agent object | |
US20040260911A1 (en) | Unresolved instruction resolution | |
EP1632853A1 (en) | Method of running an application, apparatus implementing the method and computer program product | |
CN116661844A (zh) | 配置文件处理方法、应用程序更新方法、装置、服务器 | |
JP2003256219A (ja) | 組込み機器におけるプログラム実行方法 | |
KR20050048109A (ko) | 모바일 디바이스의 메모리 확장을 위한 자원관리시스템 | |
JP2003256218A (ja) | 組込み機器におけるプログラム実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20060525 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |