KR100453723B1 - 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법 - Google Patents

감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법 Download PDF

Info

Publication number
KR100453723B1
KR100453723B1 KR1019970023204A KR19970023204A KR100453723B1 KR 100453723 B1 KR100453723 B1 KR 100453723B1 KR 1019970023204 A KR1019970023204 A KR 1019970023204A KR 19970023204 A KR19970023204 A KR 19970023204A KR 100453723 B1 KR100453723 B1 KR 100453723B1
Authority
KR
South Korea
Prior art keywords
run
data
execution
threads
executable
Prior art date
Application number
KR1019970023204A
Other languages
English (en)
Other versions
KR980004056A (ko
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 KR980004056A publication Critical patent/KR980004056A/ko
Application granted granted Critical
Publication of KR100453723B1 publication Critical patent/KR100453723B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 감소된 메모리 공간의 요구들을 가지고 다수의 실행 쓰레드들을 실행하기 위한 컴퓨터 시스템 및 관련 방법에 관한 것이다. 그 컴퓨터 시스템은 메모리, 실행 제어기, 그리고 데이터 압축기를 포함한다. 실행 제어기는 쓰레드들이 다른 시간에 실행가능 및 실행불가능하도록 쓰레드의 실행을 제어한다. 실행 제어기는 또한 실행 데이터가 생성되었을 때 런-타임 때에 사용가능한 공간에 있는 압축이 안된 쓰레드들의 메모리 실행 데이터를 저장한다. 데이터 압축기는 실행불가능한 쓰레드들 중의 압축가능한 것들의 압축이 안된 실행 데이터를 압축한다. 결과적으로, 공간은 런-타임 메모리에서 사용가능하게 된다. 또한 데이터 압축기는 쓰레드들 중의 압축해제가 가능한 것들의 압축된 실행 데이터를 런-타임 메모리에서 사용가능한 공간으로 압축해제를 하여 쓰레드들 중의 압축해제가 가능한 것들이 실행가능하게 된 후에 실행될 수 있도록 할 수 있다.

Description

감소된 런-타임 메모리 공간의 요구를 가지고 실행 쓰레드들을 실행하기 위한 컴퓨터 시스템 및 방법{COMPUTER SYSTEM AND METHOD FOR EXECUTING THREADS OF EXECUTION WITH REDUCED RUN-TIME MEMORY SPACE REQUIREMENTS}
이제 컴퓨터 시스템들은 그 코드가 아키텍쳐 중립(architecture neutral (AN)) 이진 포맷으로 된, 이하에서 AN 코드라고 함, 프로그램들의 특성들을 이용하기 위하여 만들어지고 있으며 구성되어지고 있다. 그러므로, 이들 프로그램의 AN 코드는 컴퓨터 시스템의 특별한 아키텍쳐나 플랫폼에 독립이다.
이 문서의 목적상 아키텍쳐(architecture)라는 용어는 일 군의 컴퓨터 모델들의 운영(operating) 특성을 의미하는 것으로 정의된다. 특별한 아키텍쳐들의 예들은 매킨토시 컴퓨터들, DOS 또는 윈도즈 운영체제들을 사용하는 IBM PC 호환 컴퓨터들, 솔라리스(solaris) 운영체제에서 동작되는 선 마이크로시스템즈 컴퓨터들, 그리고 유닉스 운영체제를 사용하는 컴퓨터 시스템을 포함한다.
이 문서의 목적상 아키텍쳐 스페시픽(architecture specific (AS))이라는 용어는 어떤 프로그램들의 코드가 오로지 특별한 컴퓨터 아키텍쳐를 가지고 있는 컴퓨터 시스템들 상에서 만의 실행을 위한 이진 포맷으로 되어 있어야 한다는, 이하에서 AS 코드라고 함, 요구를 의미하는 것으로 정의된다. 그러므로, 전통적인 프로그래밍 언어(예, 80486 어셈블러 언어)로 쓰여진 그리고 특정의 아키텍쳐(예, IBM 호환 PC)를 위하여 컴파일된 코드를 가지고 있는 프로그램들은 오직 그 아키텍쳐 또는 그 아키텍쳐의 에뮬레이터들 상에서만 수행될 수 있다.
이 문서의 목적상 아키텍쳐 중립(architecture neutral(AN))이라는 용어는그의 컴파일된 코드가 다른 아키텍쳐들을 가지는 다양한 컴퓨터 시스템들 상에서 수행될 수 있는 프로그램들을 의미하는 것으로 정의된다. 예를 들어, 특정의 아키텍쳐를 가지는 컴퓨터 시스템은 자바(Java) (선 마이크로시스템즈의 상표) 가상 머신 모듈을 가지고 구성될 수 있다. 자바 가상 머신 모듈은 자바 프로그래밍 언어로 쓰여진 코드를 가진 프로그램들의 실행을 가능하게 하며 자바 가상 머신의 명령어 세트를 위하여, 이하에서 자바 바이트코드(Java bytecode)라고 불리는, 바이트코드로 컴파일된다. 자바 바이트코드는 컴퓨터 시스템의 특정 아키텍쳐에 독립적이다.
AN 코드를 가진 프로그램의 중요한 특징은 그들의 이식성(portability)을 포함한다. 예를 들어, AN 코드에 있는 프로그램들은 컴퓨터 시스템의 특별한 아키텍쳐에 관계없이 AN 코드를 실행하기 위하여 구성된 어떠한 컴퓨터 시스템에서도 실행될 수 있으므로, 이 프로그램들은 한 컴퓨터 시스템에서 다른 것으로 네트워크 상에서 쉽게 전송될 수 있다. 예를 들어, 자바 바이트코드로 컴파일된 프로그램들은 자바 가상 머신 모듈을 가지고 있는 어떠한 컴퓨터 시스템 상에서도 실행될 수 있으며 핫자바(HotJava)(선 마이크로시스템즈의 상표) 네트워크 통신 관리자를 사용하여 한 컴퓨터 시스템에서 다른 것으로 쉽게 전송될 수 있다.
더욱이, 자바 바이트코드로 컴파일된 프로그램들의 이식성과 관련한 다른 중요한 특징은 그 프로그램들의 검증성(verifiability)이다. 특히, 자바 가상 머신 모듈은 이 프로그램들이 미리 정의된 무결성 기준을 만족하는지를 쉽게 검증할 수 있다. 그 무결성 기준은 자바 바이트코드가 자바 가상 머신 모듈의 스택을 언더플로(underflow) 또는 오버플로(overflow) 할 수 없도록 하며 자바 바이트코드에 있는 모든 명령어들이 그 데이터 타입(type)이 그 명령어들을 위한 데이터 타입 제한들과 합치되는 데이터만 사용하도록 하는 것을 보장하는 스택 및 데이터 타입 사용 제한들을 포함한다. 결과적으로, 자바 바이트코드에 있는 프로그램은 객체 포인터들을 모조할 수 없으며 일반적으로 사용자가 그것에게 명시적으로 사용을 인가해준 것들 이외의 시스템 자원들을 액세스할 수 없다.
이러한 이유들로, 컴퓨터 시스템들은 네트워크 상에서 받은 AN 코드로 컴파일된 프로그램들의 실행을 위하여 구성되어지고 있다. 사실상, 어떤 경우들에는, 그런 컴퓨터 시스템들은 프로그램들이 컴퓨터 시스템의 런-타임(즉, 실행-시간) 메모리(예, 랜덤 액세스 메모리(RAM))로 직접 로드되기 때문에 보조 기억장치(예, 하드 디스크) 마저도 요구하지 않을 수 있다. 결과적으로, 그런 컴퓨터 시스템의 사용자는 현재 소프트웨어 제품들의 전형적인 소프트웨어 구입, 설치, 구성 그리고 업그레이드의 사이클로부터 자유로워진다.
더욱이, 많은 소프트웨어 프로그램들(즉, 애플리케이션들)은 실행의 많은 쓰레드들을 가지고 실행될 수 있다. 쓰레드들은 더욱 응답력이 좋고, 더욱 빠른 등의 프로그램들을 만들기 위하여 사용될 수 있다.
앞의 관점에서, AN 코드에 있는 멀티 쓰레드된(multi threaded) 프로그램들은 네트워크로 연결된 그리고 요구에 대하여 AN 코드로 로드된 저렴한 컴퓨터 시스템에서의 사용에 특별히 매력이 있다. 예를 들어, 이런 종류의 컴퓨터 시스템들은 비디오 게임들, 개인 디지털 보조장치들(personal digital assistants(PDAs)), 셀룰러 폰들, 또는 다른 유사한 컴퓨터 시스템들이나 컴퓨터로 작동되는 장치들일 수 있다.
그런 컴퓨터 시스템들에 있어서, 저렴한 가격이란 매우 중요하다. 사실상, 그런 컴퓨터 시스템을 구축하는 데에 있어서 가장 중요한 비용중의 하나는 소프트웨어 하부 구조와 프로그램들을 실행하기 위하여 요구되는 런-타임(즉, 런-타임) 메모리의 양이다. 이것은 소프트웨어 하부 구조와 프로그램들의 코드를 저장하기 위하여 필요로 되어지는 정적 메모리와 구별되어야 한다. 바로 앞에서 설명된 여러 종류의 컴퓨터 시스템들에 의하여 요구되는 런-타임 메모리의 양을 감소시키는 것이 매우 중요한데 그것은 그런 감소가 강력한 경쟁력 있는 이득을 주기 때문이다.
특히, 멀티 쓰레드된 환경들에서는, 하나의 쓰레드는 전형적으로 쓰레드를 실행하기 위하여 필요한 실행 데이터를 저장하기 위한 런-타임(즉, 런-타임) 메모리의 하나 또는 그 이상의 개인적 영역들(즉, 범위들)을 사용하는 부분에서 구현된다. 이 개인적 영역들은 전형적으로 스택들, 힙들(heaps), 또는 개인적인 쓰레드 로컬 변수들의 형태이며 쓰레드의 런타임 저장장치 비용을 나타낸다. 그러므로, 프로그램의 런타임 저장장치 비용은 모든 그의 쓰레드들의 런-타임 저장비용들의 합계를 나타내는데 프로그램의 정적 저장장치 비용은 그의 코드를 저장하기 위하여 사용되는 메모리의 양이다. 그러므로 프로그램을 지원하기 위하여 필요한 컴퓨터 시스템의 저장장치 요구를 감소시키기 위하여 각 쓰레드의 평균 런타임 비용을 감소시키는 것이 바람직스럽다.
본 발명의 부가적인 목적들과 특징들은 후술의 상세한 설명 및 첨부된 청구범위들로부터 도면들과 관련하여 이해될 때 더욱 명백해 질 것이다.
본 발명은 감소된 런-타임 메모리 공간 요구들을 가지고 멀티 쓰레드된(multi threaded) 환경에서 프로그램들을 실행하기 위한 컴퓨터 시스템들 및 방법들에 관한 것이다. 특히, 본 발명은 메모리 공간 요구들을 감소시키기 위하여 쓰레드들이 실행불가능일 때 그 쓰레드들의 실행 데이터가 압축되는 환경 하에서 실행쓰레드들을 실행하기 위한 컴퓨터 시스템들 및 방법들과 관련이 있다.
도 1은 본 발명을 포함하는 컴퓨터 네트워크의 블록도.
도 2는 컴퓨터 네트워크에서 클라이언트 컴퓨터 시스템의 동작에 관한 기능적인 블록도.
도 3은 클라이언트 컴퓨터 시스템의 동작에 관한 흐름도.
도 4는 본 발명을 작동시키는 컴퓨터 네트워크의 대안적인 실시예에 관한 블록도.
도 5는 컴퓨터 네트워크의 대안적인 실시예에서의 클라이언트 컴퓨터 시스템의 동작에 관한 기능적인 블록도.
* 도면의 주요 부분에 대한 부호의 설명 *
102 : 클라이언트 컴퓨터 104 : 서버 컴퓨터
124 : 쓰레드 저장장치 데이터 구조 136 : RAM
142 : 가상 머신 모듈 147 : 프로그램
153 : 실행 제어기 157 : 압축이 안된 데이터 저장소
158 : 압축된 데이터 저장소 210 : 쓰레드 저장 상태 테이블
요약하면, 본 발명은 감소된 런-타임 메모리 공간 요구들을 가지고 다수의 실행의 쓰레드들을 실행하기 위한 컴퓨터 시스템들 및 관련 방법이다. 컴퓨터 시스템은 런타임 메모리, 실행 제어기, 그리고 데이터 압축기를 포함한다.
실행 제어기는 쓰레드들이 다른 시간에 실행가능 및 실행불가능하도록 쓰레드들의 실행을 제어한다. 실행 제어기는 또한 실행 데이터가 생성되었을 때 런-타임시에 사용가능한 공간에 있는 압축이 안된 쓰레드들의 메모리 실행 데이터를 저장한다. 데이터 압축기는 실행불가능한 쓰레드들 중의 압축가능한 것들의 압축이 안된 실행 데이터를 압축한다. 결과적으로, 공간은 런-타임 메모리에서 사용가능하게 된다. 또한 데이터 압축기는 쓰레드들 중의 압축해제가 가능한 것들의 압축된 실행 데이터를 런-타임 메모리 내의 사용가능한 공간으로 압축해제를 하여 쓰레드들 중의 압축해제가 가능한 것들이 실행가능하게 된 후에 실행될 수 있도록 할수 있다.
한 실시예에서, 데이터 압축기는 쓰레드들 중의 압축해제할 수 있는 것들의 압축된 실행 데이터를 그들이 실행가능하게 되자마자 압축해제한다.
다른 실시예에서, 데이터 압축기는 쓰레드들 중의 압축해제할 수 있는 것들의 압축된 실행 데이터를 미리 정해진 시간 간격 뒤에 압축해제한다.
다른 실시예에서, 데이터 압축기는 쓰레드들 중의 압축가능한 것들의 압축이 안된 실행 데이터를 그들이 실행불가능하게 되자마자 압축한다.
또다른 실시예에서, 데이터 압축기는 쓰레드들 중의 압축가능한 것들의 압축이 안된 실행 데이터를 런-타임 메모리에 있는 공간이 필요로 되어지지만 이용 불가능할 때에 압축을 한다. 이 실시예에서, 컴퓨터 시스템은 현재 실행불가능한 쓰레드 중에서 가장 적게 최근에 실행된 쓰레드로부터 가장 많이 최근에 실행된 쓰레드까지의 순으로 그것들을 나열하는 최근 가장 적게 실행된 리스트를 더 포함할 수 있다. 쓰레드들 중에서 압축가능한 것들은 런-타임 메모리에서 공간이 필요로 되어지나 이용 불가능할 때 압축안된 실행 데이터를 가진 최근에 가장 적게 실행된 리스트에 있는 최근에 가장 적게 실행된 쓰레드들이다.
또다른 실시예에서, 컴퓨터 시스템은 또한 보조기억장치를 포함한다. 이 실시예에서, 데이터 압축기는 런-타임 메모리에서 공간이 필요로 되어지나 사용불가능할 때 실행불가능한 쓰레드들 중에서 저장가능한 것들의 압축된 실행 데이터 또는 그의 부분들을 보조 기억장치에 저장한다. 그러면 데이터 압축기는 그의 압축된 실행 데이터가 런-타임 메모리에 압축해제되어야 하는 쓰레드들의 실행 데이터들 중에서 검색가능한 것들의 압축된 실행 데이터 또는 그의 부분들을 보조 기억장치로부터 검색한다.
도 1과 관련하여, 본 발명에 따른 컴퓨터 네트워크(100)가 보여진다. 그것은 아나 또는 그 이상의 클라이언트 컴퓨터 시스템들(102), 하나 또는 그 이상의 서버 컴퓨터 시스템들(104), 그리고 네트워크 통신 연결(106)을 포함한다.
클라이언트 컴퓨터 시스템들(102)은 네트워크 통신 연결(106)을 통하여 서버 컴퓨터 시스템들(104)로 연결된다. 네트워크 통신 연결은 협역 또는 광역 네트워크, 인터넷 또는 어떤 다른 형태의 네트워크 통신 연결일 수 있다.
각 서버 컴퓨터 시스템(104)은 중앙처리장치(CPU), 사용자 인터페이스(112), 네트워크 통신 인터페이스(116), 그리고 메모리(118)를 포함한다. 네트워크 통신 인터페이스는 각 서버 컴퓨터 시스템이 네트워크 통신 연결(106)을 통하여 클라이언트 컴퓨터 시스템들(102)과 통신할 수 있게 해준다.
각 서버 컴퓨터 시스템(104)의 메모리(118)는 운영체제(120), 네트워크 통신 관리자 (또는 서버)(122), 그리고 멀티 쓰레드된 프로그램들(즉, 메소드들)(147 및/또는148)을 저장한다. 운영체제와 통신 관리자는 모두 CPU(120) 상에서 수행된다. 운영체제는 사용자 인터페이스(112)를 가지고 사용자에 의하여 이슈되거나(issued) 또는 클라이언트 컴퓨터 시스템들(102)로부터 네트워크 통신 연결(106)을 통하여 네트워크 통신 인터페이스(116)에 의하여 수신된 명령어들에 응답하여 네트워크 통신 관리자의 수행을 제어하고 관리한다.
각 서버 컴퓨터 시스템(104)의 프로그램들(147)은 클라이언트 컴퓨터 시스템들(102)의 특정의 아키텍쳐(즉, 플랫폼)에 독립인 아키텍쳐 중립(AN) 코드를 가지고 있다. 이 프로그램들은 특별한 프로그래밍 언어로부터 AN 코드로 컴파일된다. 바람직한 실시예에서, 이 프로그램들은 자바 프로그래밍 언어로 쓰여지며 자바 바이트코드로 컴파일된다. 더욱이, 이 프로그램들은 객체지향 방식으로 프로그램된 소프트웨어 애플리케이션들을 형성하는 객체 클래스들에 포함된다.
프로그램들(147)과 달리, 각 서버 컴퓨터 시스템의 프로그램들(148)은 클라이언트 컴퓨터 시스템(102)의 특정의 아키텍쳐를 위하여 아키텍쳐에 특수한(AS) 코드로 컴파일하다. 뒤에서 더욱 상세하게 설명되겠지만, 네트워크(100)는 폐쇄된 또는 신뢰된 네트워크이어서 거기에서 이 프로그램들이 클라이언트 컴퓨터(102)로 고정도의 신뢰도를 가지고 전송될 수 있게 하거나 또는 이 프로그램들이 검증될 수 있는 디지털 서명들을 내장하고 있을 것이 바람직하다.
뒤에서 더욱 상세하게 설명되듯이, 프로그램들(147 및/또는 148)은 사용자의 요구 시에 네트워크 통신 관리자(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), 그리고 데이터 압축기 (140)를 저장한다. 또한 RAM은 프로그램(147)을 AN 코드에 저장하며 프로그램(148)을 서버 컴퓨터들(104)로부터 다운로드된 아키텍쳐에 특수한(AS) 코드에 저장한다. 운영시스템, 네트워크 통신 관리자, 가상 머신 모듈, 데이터 압축기, 그리고 프로그램들은 모두 CPU(126) 상에서 실행된다. 운영체제는 네트워크 통신 관리자, 가상 머신 모듈, 데이터 압축기, 그리고 사용자 인터페이스(128)를 가지고 사용자에 의하여 발생된 명령어들에 응하는 프로그램들을 제어하고 관리한다.
앞에서 암시되었듯이, 프로그램(147 및/또는 148)은 사용자의 요구 시에 서버 컴퓨터 시스템들(104)로부터 받아들여졌다. 이 프로그램들은 네트워크 통신 관리자(140)를 사용하여 얻어지는데 그것은, 바람직한 실시예에서, 핫자바(HotJava) 통신 관리자이다. 그리고는 네트워크 통신 관리자는 이 프로그램들을 RAM(136)에 로드한다.
AN 코드에 프로그램들(147)이 로드된 경우, 가상 머신 모듈(142)의 코드 확인기(151)는 로드된 프로그램들의 AN 코드가 미리 정의된 무결성 기준을 만족시키는 지를 확인한다. 앞에서 언급했듯이, 이것은 로드된 프로그램들이 가상 머신 모듈의 스택을 오버플로우하거나 언더플로우 할 수 없도록 하고, 또한 모든 명령어프로그램들이 그 데이터 타입이 그들 프로그램 명령어들을 위한 데이터 타입 제한들과 합치하는 데이터만을 사용하도록 하기 위하여 스택 및 데이터 타입 사용 제한들을 포함한다.
그러나, 프로그램들(148)이 AS 코드로 로드된 경우, 코드 확인기(151)는 그들의 무결성을 직접 확인하기 위하여 사용될 수 없다. 그러므로, 그들의 무결성을 직접 확인하기 위해서는, 네트워크(100)가 폐쇄되거나 신뢰된 네트워크이어서 그 안에서 이 프로그램들이 높은 정도의 신뢰성을 가지고 클라이언트 컴퓨터(102)로 안전하게 전달되도록 할 수 있다. 다른 방안으로, 만약 네트워크(100)가 안전하지 않다면, 이 프로그램들은 디지털 서명을 내장하여 네트워크 통신 관리자(140)가 그들이 신뢰된 근원으로부터의 것이라는 것을 확인하게 할 수 있다.
가상 머신 모듈(142)의 실행 제어기(153)는 프로그램(147 및/또는 148)의, 그들이 로드되었을 때, 실행을 제어한다. 특히, 실행 제어기는 클라이언트 컴퓨터(102)의 특정의 아키텍쳐 상에서의 실행을 위하여 프로그램들(147)의 AN 코드를 인터프리트하고 또한 이들 프로그램들이 특정의 아키텍쳐 상에서 실행될 AS 코드를 가진 프로그램(148)을 호출할 수 있게 한다. 또한, 만약 네트워크 통신 관리자 (140), 및/또는 데이터 압축기(146)가 AN 코드로 컴파일된다면, 실행 제어기는 그들의 실행도 역시 제어한다.
막 로드된 프로그램(147 그리고/148)은 멀티 쓰레드된 것이므로, 실행 제어기 153은 이 프로그램들을 위한 실행의 쓰레드들을 생성한다. 이 쓰레드들의 실행은, 로드된 다른 프로그램(147 및/또는 148)의 쓰레드들과 함께, 실행 제어기에 의해서 제어된다.
가상 머신 모듈(142)은 클라이언트 컴퓨터 시스템(102)의 특정의 아키텍쳐를 위한 AS 코드로 컴파일된다. 가상 머신 모듈은 C 언어로 쓰여지고 AS 코드로 컴파일된 자바 가상 머신 모듈일 수 있다.
또한, 클라이언트 컴퓨터 시스템들(102)의 RAM 공간 요구를 낮게 유지하기 위하여, 데이터 압축기(146)는 그들의 실행 동안에 다양한 시간에 RAM(136)으로 쓰레드들의 실행 데이터를 압축하고 압축해제를 한다. 각 쓰레드의 실행 데이터는 그것이 압축이 안된 것이면 RAM에 있는 압축이 안된 데이터 저장소(158)에 그리고 그것이 압축된 것이면 RAM에 있는 압축된 데이터 저장소(157)에 저장된다. 쓰레드들의 실행 및 저장 상태는 쓰레드 실행 및 저장 상태 저장 구조들(155)에 유지된다. 쓰레드들의 실행 데이터는 그들이 RAM(136)에 저장된 미리 정의된 압축 및 압축해제 기준(152 및 154)을 만족하기 때문에 각각 압축 가능 및 압축 불가능인 쓰레드들을 위하여 압축 및 압축해제된다. 본 발명의 어떤 실시예에서, 다음에 더욱 상세히 설명되겠지만, 압축 및 압축해제 기준은 미리 정의된 메모리 관리 기법들로부터 (사용자 인터페이스(128)를 사용하여) 사용자가 선택 및/또는 조절할 수 있다.
바람직한 실시예에서, 미리 정의된 압축 기준(152)은 [ⅰ] RAM(136)에서의 공간이 요구되지만 사용불가능할 때, 그리고 [ⅱ] 압축가능한 쓰레드가 압축된 그의 실행 데이터를 아직 가지지 아니한 쓰레드들 중에서 최근에 가장 적게 실행되었을 때에 압축되도록 지정한다. 물론, 바람직한 실시예에서, 압축해제가 가능한 쓰레드들의 실행 데이터를 압축해제하기 위한 미리 정의된 압축해제 기준(154)은 단순히 압축해제가 가능한 쓰레드의 실행 데이터가 압축되고 또한 압축가능한 쓰레드가 실행가능하게 되었을 때에 압축해제되도록 지정한다.
도 2와 관련하여, 쓰레드들의 각각(200)은 AS 코드(ASC) 및 AN 코드(ANC) 스택을 가지고 실행 제어기(153)에 의하여 구현된다. 특히, 실행 제어기는 ASC 스택에 그의 AS 코드를 실행하기 위한 실행 데이터를 저장한다. 이와 비슷하게, 실행 제어기는 ANC 스택에 쓰레드의 ANC 코드 및 AN 코드에 의하여 호출되는 어떤 AS 코드를 저장한다. 가상 머신 모듈(142)이 C 언어로 쓰여지고 AS 코드로 쓰여진 경우에는, 각 ASC 스택은, C로 쓰여진 프로그램들의 구현에서 전형적으로 사용되는, 고정된 크기의 연속 스택(예, 128K)일 수 있다. 더욱이, 프로그램들(147)이 자바 바이트코드로 컴파일된 경우, ANC 스택은 RAM 공간의 요구들에 따라 확장되거나 축소될 수 있는(예, 적어도 4K이며 4K 단위로 증가 또는 감소되는) 가변 크기의 비연속 자바 스택이다.
쓰레드들 각각(200)의 ASC 및 ANC를 생성하기 위하여, 압축이 안된 데이터 저장소(158)는 ASC 메모리 영역들(204)의 풀(202) 및 ANC 메모리 영역들(208)의 풀(206)을 포함한다. 또한, 쓰레드 저장장치 상태 데이터 구조들(155)은 쓰레드 저장 상태 테이블(210), ASC 메모리 영역들(204)의 프리 리스트(free list)(212), 그리고 ANC 메모리 영역들(208)의 프리 리스트(214)를 포함한다. 프리 리스트들 각각은 사용가능한(예, 프리) ASC 및 ANC 메모리 영역들 그리고 이용가능한 메모리 영역들에 대한 상응하는 포인터들을 나열한다.
도 3은 앞에서 설명한 바람직한 압축 및 압축해제 기준(152,154)에 따라서 본 발명의 압축 및 압축해제 방법(300)에 관한 플로우 차트이다. 도2 및 3과 관련하여, 쓰레드들(200) 중의 하나가 실행 제어기(153)에 의하여 생성되었을 때(도3의 단계 302), 쓰레드를 구현하기 위하여 압축이 안된 데이터 저장소(158)에 이용가능한 메모리 영역이 있는지를 결정한다(도 3의 단계 304). 이것은 프리 리스트들(212,214)로부터 이용가능한 ASC 메모리 영역(204) 및 이용가능한 ANC 메모리 영역(208)이 있는 지의 여부를 결정함으로써 이루어진다.
만약 메모리 영역이 이용가능하면, 실행 제어기(153)는 압축이 안된 실행 데이터가 생성되는 시간에 쓰레드(200)를 구현하기 위하여 메모리 공간을 할당하고 거기에 압축이 안된 실행 데이터를 저장한다(도 3의 단계 306). 즉, ASC 메모리 영역(204) 및 ANC 메모리 영역(208) 모두가 이용가능하다면, 실행 제어기는 이용가능한 ASC 및 ANC 메모리 영역을 쓰레드의 ASC 및 ANC 스택들로서 할당하고 그들 안에 쓰레드의 압축이 안된 실행 데이터를 저장한다. 그렇게 하는 동안, 실행 제어기는 쓰레드를 식별하기 위하여 쓰레드 저장 상태 테이블(210)을 갱신하고, ASC 스택을 형성하는 ASC 메모리 영역을 할당하고, 그리고 ANC 스택을 형성하는 ANC 메모리 영역을 할당한다. 또한, 실행 제어기는 각각 ASC 및 ANC 스택들의 바닥들에 대한 포인터들로서 역할을 하는 ASC 및 ANC 메모리 영역들에 대한 포인터들을 식별하기 위하여 쓰레드 저장 상태 테이블을 갱신한다. 이와 비슷하게, 실행 제어기는 각각 ASC 및 ANC 스택들의 탑(top)들에 대한 포인터들로서 역할을 하는 ASC 및 ANC 메모리 영역들에 있는 실행 데이터의 끝에 대한 포인터들을 식별하기 위하여 쓰레드 저장 상태 테이블을 갱신한다. 그러므로 할당된 ASC 및 ANC 메모리 영역들은 함께 쓰레드의 메모리 공간을 제공한다. 또한 실행 제어기는 쓰레드의 메모리 공간에 있는 실행 데이터가 압축이 안되었다는 것(U)을 나타내기 위하여 쓰레드 저장장치의 상태 테이블을 갱신하고 그에 상응하는 프리 리스트들로부터 할당된 ASC 및 ANC 메모리 영역을 제거한다.
쓰레드들(200)의 각각은 시간에 따라 실행가능(즉, 사용가능하거나 또는 수행가능) 및 실행불가능일 수 있다. 쓰레드는 현재 슬립(sleep)에 있기 때문에 실행불가능하거나, 데이터를 기다리고 있거나, 스케쥴되어 있거나 하는 등의 것일 수 있다. 쓰레드 상태 데이터 구조들(155)은 현재 실행불가능한 각 쓰레드들을 나열하는 LRE 리스트(216)를 포함한다. LRE는 최근에 가장 적게 실행된 것으로부터 최근에 가장 많이 실행된 것까지의 순으로 쓰레드들을 나열한다.
그러나, 압축안된 데이터 저장소(120)에 있는 메모리 공간이 쓰레드(200)를 구현하기 위하여 사용할 수 없다면, 실행 제어기(153)는 데이터 압축기(146)를 인보크(invoke) 한다. 데이터 압축기는 LRE 리스트에 나열된 최근에 가장 적게 실행된 쓰레드의 실행 데이터를 압축하며 그것을 압축된 데이터 저장소(157)에 놓는다(도 3의 단계 308).
특히, 쓰레드 저장 상태 테이블(210)에서 쓰레드에게로 할당된 것으로 인식된 ASC 및 ANC 메모리 영역들에 있는 압축된 실행 데이터는 압축된 데이터 저장소(157)에 있는 상응하는 압축 데이터(CD) 메모리 영역들(218)에 있게 된다. 또한 데이터 압축기는 쓰레드의 ASC 및 ANC 스택들을 이루는 상응하는 CD 메모리 영역들, CD 메모리 영역들에 대한 상응하는 포인터들, 그리고 CD 메모리 영역 내의 압축된 실행 데이터의 끝단에 대한 상응하는 포인터들을 식별하기 위하여 쓰레드 저장 상태 테이블을 갱신한다. 그것은 또한 쓰레드의 메모리 공간이 압축되었음(C)을 나타내기 위하여 쓰레드 저장 상태 테이블을 갱신한다. 데이터 압축기(146)는 당해 기술 분야에서 널리 알려진 어떠한 빠른 데이터 압축 기법도 사용할 수 있다.
생성된 쓰레드(200)가 실행가능인 동안, 실행 제어기(153)가 배치되어 실행동안 생성된 압축되지 않은 실행 데이터를 적절한 시간에 ASC 및 ANC로부터 제거한다. 그렇게 하는 동안, 실행 제어기는 포인터를 ASC 및 ANC 스택의 톱(top)으로 갱신한다.
또한, 이러한 과정(도 3의 단계 310)이 수행되는 동안, 실행 제어기(153)는 실행 동안 쓰레드가 메모리 공간을 더 요구하면(도 3의 단계 312) 메모리 공간을 생성된 쓰레드에게 할당하기 위하여 앞에서 설명한 것과 비슷한 방식으로 쓰레드의 메모리 공간의 크기를 증가시킨다(단계 304-308). 특히, 쓰레드가 아키텍쳐 중립 언어에서 쓰레드를 수행하기 위한 실행 데이터를 저장하기 위하여 부가적인 메모리 공간을 요구할 때마다, ANC 스택의 크기는 압축 안된 데이터 저장소의 다른 부분(120)을 거기에 할당함으로써 증가되어야 한다. 그러는 중에, 실행 제어기는 ANC 스택의 부분으로서 할당된 ANC 메모리 영역을 식별하고, 할당된 ANC 메모리 영역에 대한 포인터를 식별하고, 그리고 ANC 스택의 톱(top)에 대한 포인터로서 역할을 하는 할당된 ANC 메모리 영역에 있는 실행 데이터의 끝에 대한 포인터를 식별하기 위하여 쓰레드 저장 상태 테이블(210)을 갱신함으로써 프리 리스트(212)에 나열된 다른 ANC 메모리 영역(208)을 쓰레드에 할당한다. 또한, 실행 제어기는 리스트로부터 할당된 ANC 메모리 영역을 제거한다(또는 만약 사용가능한 ANC 메모리 영역의 일부분만이 쓰레드에게 할당되었다면 그의 사이즈를 줄인다).
이와 유사하게, 쓰레드(200)가 실행가능한 동안(도 3의 단계 310), 그것이 그의 메모리 공간의 부분을 더 이상 요구하지 아니하는 때마다(도 3의 단계 314), 쓰레드의 메모리 공간은 필요로 하지 아니하는 부분을 할당해제(deallocating)함으로써 감소된다(도 3의 단계 316). 특히, ANC 스택의 크기는 실행동안에 그것의 적은 것이 쓰레드에 의하여 요구될 때마다 감소된다. 예를 들어, 만약 메모리가 4K 바이트 블록들로 할당된다면, 쓰레드에 의하여 사용된 ANC 스택의 부분은 하나의 4K 바이트 블록의 할당해제를 가능하게 하는 것으로써 충분히 감소시키게 되고(즉, ANC 스택의 톱에 대한 포인터가 ANC 스택 앞부분의 4K 블록에 있는 위치를 가리킨다), 그러면 ANC의 크기는 하나의 4K 바이트 블록씩 감소된다. 이것은 더 이상 필요하지 않은 ANC 스택의 ANC 메모리 영역(208)을 할당해제함으로써 이루어진다. 이 ANC 메모리 영역을 할당해제하는데 있어서, 실행 제어기는 쓰레드 저장 상태 테이블(210)을 갱신하여 ANC 메모리 영역이 그것으로부터 제거되며 더 이상 ANC 스택의 부분으로서 인식되지 않도록 한다.
쓰레드(200)가 실행불가능하게 되면(도 3의 단계 310), 실행 제어기 153은 그것을 LRE 리스트(216)의 끝에 추가한다(도 3의 단계 318). 이 쓰레드가 여전히 실행불가능한 동안에는(도 3의 단계 320), 실행 제어기는 그 메모리 공간의 어떤 것이 다른 쓰레드에 의하여 요구되고 있는지를 결정한다(도 3의 단계 322). 이것은, 앞에서도 언급하였듯이, 다른 쓰레드가 생성되었거나(도 3의 단계 302) 또는 부가적인 메모리 공간을 요구할 때(도 3의 단계 312), 압축이 안된 데이터 저장소(120)에 그 다른 쓰레드를 위하여 이용가능한 충분한 메모리 공간이 없고, 그리고 그의 메모리 공간이 요구되는 쓰레드가 아직 압축된 실행 데이터를 갖고 있지 아니한 LRE 리스트(216)에서 최근에 가장 적게 실행된 쓰레드일 경우에 발생한다.
만약 메모리 공간이 다른 쓰레드에 의하여 요구된다면, 메모리 공간을 필요로 하는 쓰레드(200)의 실행 데이터가 앞에서 설명된 방식(도 3의 단계 308)으로 데이터 압축기에 의하여 압축된다(도 3의 단계 324). 이 프로세스(도 3의 단계 320-324)는 쓰레드가 다시 실행가능하게 될 때까지(도 3의 단계 320) 반복된다.
쓰레드(200)가 다시 실행가능하게 됐을 때, 실행 제어기(153)는 쓰레드의 실행 데이터가 압축되었는지를 결정한다(도 3의 단계 326). 만약 압축이 않되었다면, 실행 제어기는 LRE 리스트(216)으로부터 쓰레드를 제거한다(도 3의 단계 328). 결과적으로, 쓰레드의 실행 데이터는 쓰레드가 다시 실행불가능하게 될 때까지(도 3의 단계 310) 압축되지 아니하며, 쓰레드는 LRE 리스트에 추가되고(도 3의 단계 318), 또한 쓰레드의 메모리 공간은 다른 쓰레드에 의하여 필요로 되어진다(도 3의 단계 322).
그러나, 쓰레드(200)가 다시 실행가능하게 되었지만 그의 압축된 데이터를 가지고 있을 때에는, 실행 제어기(153)는 쓰레드의 실행 데이터를 압축해제하기 위하여 압축이 안된 데이터 저장소(120)에서 메모리 공간이 사용가능한지를 결정한다(도 3의 단계 330). 이것은 앞에서 이미 설명된 생성된 쓰레드를 위해서 했던 방식과 비슷한 방식으로 행해진다(도 3의 단계 304).
쓰레드(200)의 실행 데이터를 압축하기 위하여 사용가능한 메모리 공간이 불충분하면, 최근에 가장 적게 실행된 LRE 리스트(216) 내의 하나 또는 그 이상의 쓰레드들의 실행 데이터는 메모리 공간을 사용가능하게 하기 위하여 압축된다. 이것은 앞에서 설명된 것과 유사한 방식으로 행해진다(도 3의 단계 308 및 324).
이미 사용가능한 메모리 공간이 충분히 있거나 또는 하나 또는 그 이상의 다른 쓰레드들의 실행 데이터를 압축함으로써 충분한 메모리 공간이 사용가능하다면, 실행 제어기(153)는 쓰레드(200)의 실행 데이터를 압축하기 위하여 필요한 메모리 공간을 할당한다(도 3의 단계 334). 이것은 ASC 및 ANC 메모리 영역들(204 및 208)이 쓰레드의 ASC 및 ANC 스택들을 형성하기 위하여 할당되도록 생성된 쓰레드를 위하여 앞에서 설명된 것과 유사한 방식으로 행해진다.
그리고는 쓰레드(200)의 실행 데이터는 데이터 압축기(146)에 의하여 압축되고 사용가능한 메모리 공간에 놓여진다(도 3의 단계 336). 특히, 쓰레드 저장 상태 테이블(210)에서 쓰레드로 할당된 것으로 인식된 CD 메모리 영역들(218) 내의 실행 데이터는 압축해제되고 실행 제어기(153)에 의해 할당된 상응하는 ASC 및 ANC 메모리 영역들(204 및 208) 안에 놓여지게 된다. 이렇게 하는 데에 있어서, 데이터 압축기는 쓰레드의 ASC 및 ANC 스택들을 이루는 상응하는 ASC 및 ANC 메모리 영역에 대한 포인터들 및 ASC 및 ANC 스택들의 톱(top)들에 대한 포인터들을 식별하기 위하여 프로그램 저장 상태 테이블(210)을 갱신한다. 앞서 설명되었듯이, 쓰레드의 실행 데이터는 쓰레드가 다시 실행불가능하게 될 때까지는(도 3의 단계 310)다시 압축되지 않을 것이며, 쓰레드는 LRE 리스트(216)에 추가되고(도 3의 단계 318), 그리고 쓰레드들의 메모리 공간은 다른 쓰레드에 의하여 요구되어진다(도 3의 단계 322).
앞의 관점에서, 본 발명은 쓰레드들의 실행을 위한 런-타임 메모리 공간에 대한 감소를 가능하게 한다는 것이 명백하다. 그러나, 당업자들은 다른 대안적인 실시예들이 비슷한 이익들을 제공하기 위하여 구현될 수 있다는 것을 인식할 수 있을 것이다.
특히, 앞에서 설명된 압축 기준(152)은 압축이 안된 실행 데이터를 가진 최근에 가장 적게 실행된 쓰레드(200)가 RAM(136) 내의 공간이 요구되어 지지만 사용불가능할 때 압축될 것이라는 것을 명시했다. 그러나, 압축 기준은 사용자에 의하여 다양한 범위의 선택사양으로부터 선택될 수 있으며 사용자의 클라이언트 컴퓨터 시스템(102)에 특수한 많은 조건들에 종속될 수 있다. 예를 들어, 압축 기준은 단순히 쓰레드들 각각의 실행 데이터가 쓰레드가 실행불가능하게 되자마자 압축되어야 한다는 것을 명시할 수도 있다. 또는, 어떤 쓰레드들의 실행 데이터가 시간이 허락하는 한 늦추어져서 압축되어야 한다는 것을 명시할 수도 있다. 마지막으로, 앞 설명의 어떤 것에 대한 부가적인 변형으로서, 압축 기준은 특정의 크기 및 타입의 쓰레드들의 실행 데이터만이 압축되어야 한다는 것을 명시할 수 있다.
또한, 앞서 기술되었듯이, 압축해제 기준(154)은 압축된 실행 데이터를 가진 쓰레드(200)가 그 쓰레드가 다시 실행불가능하게 되는 즉시 데이터 압축기(146)에 의하여 압축해제된 그의 실행 데이터를 가질 것이라고 명시했다. 그러나, 압축해제 기준은 압축된 실행 데이터가 미리 정의된 시간 간격이 지난 후에 압축해제된다는 것을 명시할 수 있다. 이 경우, 데이터 압축기는 시간 간격을 관리하기 위하여 타이머를 포함할 것이다. 한 예에서, 이 기법은 쓰레드의 실행 데이터가 이 시간 간격동안 압축되고 쓰레드가 깨어나게 되기(awakened) 바로 전에 압축해제되도록 주어진 시간 간격 동안 잠자도록(sleep) 놓여지는 쓰레드를 위하여 사용될 수 있다. 또는, 다른 예에서, 그 기법은 쓰레드의 실행 데이터가 압축되는 시간 간격이 언제 기다려지고 있는 데이터가 쓰레드를 위하여 사용가능하게 될 것인지를 예측하도록 선택되는 상황하에서 데이터를 기다리고 있는 쓰레드를 위하여 사용될 수 있다.
또한, 당업자들이 인식하듯이, 압축 기준(152)은 압축될 실행 데이터가 실행불가능한 쓰레드(200)의 모든 실행 데이터 또는 단순히 그의 단편(fragment)이거나 부분(portion)일 수 있다는 것을 명시할 수 있다. 이 경우, 압축된 실행 데이터의 양은 다른 쓰레드에 의하여 요구되는 메모리 공간에 기반하여 결정될 수 있다. 그러므로, 예를 들면, 만약 다른 쓰레드가 ANC 메모리 영역(208)을 요구하면, 그리고 사용가능한 ANC 메모리 영역들이 더이상 없다면, 실행불가능한 쓰레드의 필요로 되어진 ANC 메모리 영역 내의 실행 데이터는 이 ANC 메모리 영역을 이용가능하게 만들기 위하여 압축될 수 있다.
다른 실시예에서, 각 ANC 메모리 영역(208)은 언제나, 비록 그것이 현재 쓰레드의 어떤 실행 데이터도 저장하지 않을 수 있을지라도, 상응하는 쓰레드(200)의 ANC 스택의 부분으로서 할당된다. 그러므로, 하나의 쓰레드에 할당된 ANC 메모리영역들 중의 하나가 실행 데이터를 저장하기 위하여 그 쓰레드에 의해 더이상 요구되어지지 아니할 때, 실행 제어기(153)는 여전히 그 쓰레드에 할당된 ANC 메모리 영역을 남겨둔다. 이렇게 하는 것은 그 쓰레드가 그의 실행에 있어서 나중에 또다른 ANC 메모리 영역을 다시 요구할 수 있을 것 같기 때문이다. 이 쓰레드에게 할당된 ANC 메모리 영역을 유지하는 때에, 실행 제어기는 (그 ANC 스택의 다른 ANC 메모리 영역에 있을 수 있는) ANC 스택의 톱에 대한 포인터를 나타내기 위하여 쓰레드 저장 상태 테이블(210)을 갱신한다. 이 방법으로, 사용가능한 ANC 메모리 영역들의 가상 프리 리스트(virtual free list)는 모든 사용가능한 ANC 메모리 영역들이 쓰레드들에게 할당되었으나 어떠한 실행 데이터도 갖고 있지 아니한 경우에 생성된다. 그러면, 쓰레드가 다른 ANC 메모리 영역을 요구할 때, 실행 제어기는 앞에서 설명된 것과 같은 방식으로 실행 데이터를 저장하지 아니하는 사용가능한 ANC 메모리 영역들 중의 하나를 이 다른 쓰레드에게 다시 할당할 것이다.
부가적으로, 도 4 및 도 5와 관련하여, 보조 메모리(400)는 그들이 보조 기억장치 기준을 만족하기 때문에 저장가능한 쓰레드(200)의 압축된 실행 데이터를 저장하기 위하여 사용될 수 있다. 이 경우, 보조 기억장치 기준은 앞에서 설명한 압축 기준(152)에 포함될 것이며 압축된 실행 데이터 또는 그의 부분이 그것이 압축되었을 때 보조 기억장치에 기억되어야 하는 것을 명시하거나 메모리 공간이 요구되어 질 때에만 보조 기억장치에 저장되어야 하는 것을 명시할 수도 있다. 어떠한 경우에서든, 데이터 압축기(146)는 CD 메모리 영역들(218)에 저장된 압축된 데이터를 보조기억장치(400) 내의 상응하는 CD 메모리 영역들(500)에게로 옮겨 저장한다. 또한, 데이터 압축기는 보조 기억장치 내의 실행 데이터를 지정하기 위하여 프로그램 저장 상태 테이블(210) 내의 포인터들을 갱신한다. 또한, 쓰레드들의 실행 데이터 또는 그의 부분이 압축되었고, 보조 기억장치에 저장되었고, 그리고 압축해제될 것이기 때문에 검색가능한 쓰레드들을 위하여, 실행 데이터는 보조 기억장치로부터 검색될 것이며, 그리고는 앞에서 설명된 방식으로 RAM(136) 내에 압축해제들 것이다.
또한, 클라이언트 컴퓨터(102)가 보조 기억장치(400)를 포함하는(예, 네트워크로 연결된 데스크톱 컴퓨터) 실시예에서, 프로그램들(147 및/또는 148)은 서버 컴퓨터 시스템(104)로부터 보조 기억장치로 다운로드될 수 있다. 그러면, 이 프로그램들은 가상 머신 모듈(142)에 의하여 서버 컴퓨터 시스템들(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 (27)

  1. 감소된 런-타임 메모리 공간 요구들을 가지는, 프로그램의 다수의 실행 쓰레드들을 실행하기 위한 컴퓨터 시스템에 있어서,
    상기 프로그램이 로딩된 런-타임 메모리;
    실행 제어기로서,
    (A) 각각 상이한 시간에서 실행가능 및 실행불가능한, 쓰레드들을 실행하며,
    (B) 실행 데이터가 생성되었을 때, 상기 각각의 쓰레드들의 실행 데이터를 상기 런-타임 메모리 내의 사용가능한 공간으로 저장하는 실행 제어기; 및
    데이터 압축기로서,
    (A) 상기 쓰레드들 중에서 선택된 쓰레드가 실행불가능하고 상기 선택된 쓰레드의 실행 데이터 또는 그 일부가 압축되지 않았을 때, 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 런-타임 메모리내에 압축하고, 이에 의하여 상기 런-타임 메모리내에 사용가능한 공간이 만들어지며,
    (B) 상기 쓰레드들 중에서 선택된 쓰레드가 실행가능할 때, 상기 선택된 쓰레드가 실행될 수 있도록 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 런-타임 메모리내 사용가능한 공간으로 압축해제하는 데이터 압축기를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1항에 있어서,
    상기 데이터 압축기는, 상기 선택된 쓰레드가 실행가능하게 되는 즉시 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 1항에 있어서,
    상기 데이터 압축기는, 상기 선택된 쓰레드가 실행불가능하게 된 후 소정의 시간 간격후에 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 1항에 있어서,
    상기 데이터 압축기는, 상기 선택된 쓰레드가 실행불가능하게 되는 즉시 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제 1항에 있어서,
    상기 데이터 압축기는, 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제 5항에 있어서,
    현재 실행불가능한 상기 쓰레드들을 최근에 가장 적게 실행된 쓰레드에서 최근에 가장 많이 실행된 쓰레드의 순으로 나열하는, 최근에 가장 적게 수행된 리스트를 더 포함하고;
    상기 선택된 쓰레드는, 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때, 실행 데이터 또는 그 일부가 압축되지 않은 최근에 가장 적게 실행된 리스트 중에서 최근에 가장 적게 실행된 쓰레드인 것을 특징으로 하는 컴퓨터 시스템.
  7. 제 1항에 있어서,
    상기 런-타임 메모리는 랜덤 액세스 메모리인 것을 특징으로 하는 컴퓨터 시스템.
  8. 제 1항에 있어서,
    보조 기억장치를 더 포함하고;
    상기 데이터 압축기는
    (A) 상기 런-타임 메모리 내의 추가 공간이 필요로 되어지나 사용가능하지 아니할 때, 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 상기 보조 기억장치에 저장하고,
    (B) 상기 압축된 실행 데이터 또는 그 일부가 상기 런-타임 메모리에서 압축해제되어야 할 때, 상기 보조 기억장치로부터 상기 압축된 실행 데이터 또는 그 일부를 복구하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제 1항에 있어서,
    컴퓨터 시스템의 특정 아키텍쳐에 독립적인 아키텍쳐 중립 코드에서 컴퓨터 네트워크로부터 프로그램을 수신하는 네트워크 인터페이스;
    상기 프로그램의 수신된 아키텍쳐 중립 코드를 상기 런-타임 메모리에 로딩하는 네트워크 통신 관리자; 및
    가상 머신 모듈로서,
    (A) 상기 실행 제어기를 포함하고,
    (B) 상기 컴퓨터 시스템을 동작시키며, 그리고
    (C) 상기 프로그램의 아키텍쳐 중립 코드에서 쓰레드의 실행을 가능하게 하는 가상 머신 모듈을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 감소된 런-타임 메모리 공간 요구들을 가지는, 프로그램의 다수의 실행 쓰레드들을 실행하기 위한 방법에 있어서,
    상기 프로그램을 컴퓨터 시스템의 런-타임 메모리에 로딩하는 단계;
    각각 상이한 시간에서 실행가능 및 실행불가능한, 스레드들을 실행하는 단계;
    실행 데이터가 생성되었을 때, 상기 쓰레드들의 각각의 실행 데이터를 상기컴퓨터 시스템의 런-타임 메모리 내 사용가능한 공간으로 저장하는 단계;
    상기 쓰레드들 중에서 선택된 쓰레드가 실행불가능하고 상기 선택된 쓰레드의 실행 데이터 또는 그 일부가 압축되지 않았을 때, 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 런-타임 메모리내에 압축하는 단계, 이에 의하여 상기 런-타임 메모리내에 사용가능한 공간이 만들어지며; 및
    상기 쓰레드들 중에서 선택된 쓰레드가 실행가능할 때, 상기 선택된 쓰레드가 실행될 수 있도록 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 런-타임 메모리내 사용가능한 공간으로 압축해제하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제 10항에 있어서,
    상기 압축해제 단계는,
    상기 선택된 쓰레드가 실행가능하게 되는 즉시 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 단계를 포함하는 특징으로 하는 방법.
  12. 제 10항에 있어서,
    상기 압축해제 단계는,
    소정의 시간 간격후에 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제 10항에 있어서,
    상기 압축 단계는,
    상기 선택된 쓰레드가 실행불가능하게 되는 즉시 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제 10항에 있어서,
    상기 압축 단계는,
    상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제 13항에 있어서,
    현재 실행불가능한 상기 쓰레드들을 최근에 가장 적게 실행된 쓰레드에서 최근에 가장 많이 실행된 쓰레드의 순으로 나열하는, 최근에 가장 적게 실행된 리스트를 제공하는 단계를 더 포함하고;
    상기 선택된 쓰레드는, 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때, 실행 데이터 또는 그 일부가 압축되지 않은 최근에 가장 적게 실행된 리스트 중에서 최근에 가장 적게 실행된 쓰레드인 것을 특징으로 하는 방법.
  16. 제 9항에 있어서,
    상기 런-타임 메모리는 랜덤 액세스 메모리인 것을 특징으로 하는 방법.
  17. 제 9항에 있어서,
    상기 런-타임 메모리 내의 추가 공간이 필요로 되어지나 사용가능하지 아니할 때, 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 상기 컴퓨터 시스템의 보조 기억장치에 저장하는 단계; 및
    상기 압축된 실행 데이터 또는 그 일부가 상기 런-타임 메모리에서 압축해제되어야 할 때, 상기 보조 기억장치로부터 상기 압축된 실행 데이터 또는 그 일부를 복구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 10항에 있어서,
    상기 컴퓨터 시스템의 특정 아키텍쳐에 독립적인 아키텍쳐 중립 코드에서 컴퓨터 네트워크로부터 프로그램을 수신하는 단계;
    상기 프로그램의 수신된 아키텍쳐 중립 코드를 상기 런-타임 메모리에 로딩하는 단계; 및
    상기 프로그램의 아키텍쳐 중립 코드에서 쓰레드의 실행을 가능하게 하기 위하여, 상기 컴퓨터 시스템을 동작시키는 가상 머신 모듈을 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 컴퓨터 시스템의 런-타임 메모리로 로딩되는 프로그램의 다수의 실행 쓰레드를 실행하는, 컴퓨터 시스템에 사용되는 컴퓨터 판독가능 메모리에 있어서,
    실행 제어기로서,
    (A) 각각 상이한 시간에서 실행가능 및 실행불가능한, 쓰레드들의 실행을 제어하며,
    (B) 실행 데이터가 생성되었을 때, 상기 각각의 쓰레드들의 실행 데이터를 상기 컴퓨터 시스템의 런-타임 메모리 내 사용가능한 공간으로 저장하는 실행 제어기; 및
    데이터 압축기로서,
    (A) 상기 쓰레드들 중에서 선택된 쓰레드가 실행불가능할 때, 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 런-타임 메모리내에 압축하고, 이에 의하여 상기 런-타임 메모리내에 사용가능한 공간이 만들어지며,
    (B) 상기 쓰레드들 중에서 선택된 쓰레드가 실행가능할 때, 상기 선택된 쓰레드가 실행될 수 있도록 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 런-타임 메모리내 사용가능한 공간으로 압축해제하는 데이터 압축기를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  20. 제 19항에 있어서,
    상기 데이터 압축기는, 상기 선택된 쓰레드가 실행가능하게 되는 즉시 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 것을 특징으로하는 컴퓨터 판독가능 메모리.
  21. 제 19항에 있어서,
    상기 데이터 압축기는, 소정의 시간 간격후에 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 압축해제하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  22. 제 19항에 있어서,
    상기 데이터 압축기는, 상기 선택된 쓰레드가 실행불가능하게 되는 즉시 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  23. 제 19항에 있어서,
    상기 데이터 압축기는, 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때 상기 선택된 쓰레드의 실행 데이터 또는 그 일부를 압축하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  24. 제 23항에 있어서,
    현재 실행불가능한 상기 쓰레드들을 최근에 가장 적게 실행된 쓰레드에서 최근에 가장 많이 실행된 쓰레드의 순으로 나열하는, 최근에 가장 적게 수행된 리스트를 더 포함하고;
    상기 선택된 쓰레드는, 상기 런-타임 메모리 내의 공간이 필요로 되어지나 사용가능하지 아니할 때, 실행 데이터 또는 그 일부가 압축되지 않은 최근에 가장 적게 실행된 리스트 중에서 최근에 가장 적게 실행된 쓰레드인 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  25. 제 19항에 있어서,
    상기 런-타임 메모리는 랜덤 액세스 메모리인 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  26. 제 19항에 있어서,
    상기 데이터 압축기는,
    (A) 상기 런-타임 메모리 내의 추가 공간이 필요로 되어지나 사용가능하지 아니할 때, 상기 선택된 쓰레드의 압축된 실행 데이터 또는 그 일부를 상기 컴퓨터 시스템의 보조 기억장치에 저장하고,
    (B) 상기 압축된 실행 데이터 또는 그 일부가 상기 런-타임 메모리에서 압축해제되어야 할 때, 상기 보조 기억장치로부터 상기 압축된 실행 데이터 또는 그 일부를 복구하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
  27. 제 19항에 있어서,
    컴퓨터 시스템의 특정 아키텍쳐에 독립적인 상기 프로그램의 아키텍쳐 중립 코드를 상기 런-타임 메모리에 로딩하고 컴퓨터 네트워크로부터 프로그램을 수신하는 네트워크 통신 관리자; 및
    가상 머신 모듈로서,
    (A) 상기 실행 제어기를 포함하고,
    (B) 상기 컴퓨터 시스템을 동작시키며, 그리고
    (C) 상기 프로그램의 아키텍쳐 중립 코드에서 쓰레드의 실행을 가능하게 하는 가상 머신 모듈을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 메모리.
KR1019970023204A 1996-06-05 1997-06-05 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법 KR100453723B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/658,501 US5765157A (en) 1996-06-05 1996-06-05 Computer system and method for executing threads of execution with reduced run-time memory space requirements
US08/658501 1996-06-05
US08/658,501 1996-06-05

Publications (2)

Publication Number Publication Date
KR980004056A KR980004056A (ko) 1998-03-30
KR100453723B1 true KR100453723B1 (ko) 2004-12-17

Family

ID=24641497

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970023204A KR100453723B1 (ko) 1996-06-05 1997-06-05 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법

Country Status (8)

Country Link
US (1) US5765157A (ko)
EP (1) EP0811915B1 (ko)
JP (1) JP3863967B2 (ko)
KR (1) KR100453723B1 (ko)
CN (1) CN1096636C (ko)
DE (1) DE69721634T2 (ko)
SG (1) SG74590A1 (ko)
TW (1) TW357319B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298422B1 (en) * 1996-06-17 2001-10-02 Network Associates, Inc. Method for reducing the memory requirements for an application program executing in a multi-tasking environment
US5937187A (en) * 1996-07-01 1999-08-10 Sun Microsystems, Inc. Method and apparatus for execution and preemption control of computer process entities
JPH1049381A (ja) * 1996-07-04 1998-02-20 Internatl Business Mach Corp <Ibm> 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
US6938254B1 (en) * 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
US6125382A (en) * 1997-07-25 2000-09-26 International Business Machines Corporation Distributed thread mechanism and method
US6256637B1 (en) * 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6453460B1 (en) 1999-04-26 2002-09-17 Hewlett-Packard Company Computer system with single processing environment for executing multiple application programs
US6714958B1 (en) * 1999-07-28 2004-03-30 International Business Machines Corporation Detecting and causing latent deadlocks in multi-threaded programs
US7024363B1 (en) * 1999-12-14 2006-04-04 International Business Machines Corporation Methods and apparatus for contingent transfer and execution of spoken language interfaces
US6598143B1 (en) 2000-02-24 2003-07-22 International Business Machines Corporation Method to increase performance of acquiring free memory pages
US6647480B1 (en) 2000-03-31 2003-11-11 International Business Machines Corporation Data block update utilizing flash memory having unused memory size smaller than the data block size
US6715059B2 (en) 2000-07-26 2004-03-30 Tas Holdings, Inc. Methods and systems for a shared memory unit with extendable functions
US6675277B2 (en) 2000-07-26 2004-01-06 Tns Holdings, Inc. Method and apparatus for demand usable adapter memory access management
US6665777B2 (en) 2000-07-26 2003-12-16 Tns Holdings, Inc. Method, apparatus, network, and kit for multiple block sequential memory management
US20020013822A1 (en) * 2000-07-26 2002-01-31 West Karlon K. Shared as needed programming model
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US20020016878A1 (en) * 2000-07-26 2002-02-07 Flores Jose L. Technique for guaranteeing the availability of per thread storage in a distributed computing environment
US6782440B2 (en) 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
US6968557B1 (en) 2000-12-18 2005-11-22 Stratum8 Corporation Reducing stack memory resources in a threaded computer system
US6738832B2 (en) 2001-06-29 2004-05-18 International Business Machines Corporation Methods and apparatus in a logging system for the adaptive logger replacement in order to receive pre-boot information
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7409517B2 (en) * 2001-10-01 2008-08-05 Oracle International Corporation Dynamic and automatic memory management
US7499960B2 (en) * 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
AU2003903652A0 (en) * 2003-07-16 2003-07-31 Infology Pty Ltd Muvium
US8261024B1 (en) * 2005-09-15 2012-09-04 Oracle America, Inc. Address level synchronization of shared data
US8055970B1 (en) * 2005-11-14 2011-11-08 Raytheon Company System and method for parallel processing of data integrity algorithms
JP5431148B2 (ja) * 2006-05-31 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ用論理データオブジェクトの変換方法およびシステム
US8868930B2 (en) 2006-05-31 2014-10-21 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
JP4888166B2 (ja) * 2007-03-13 2012-02-29 日本電気株式会社 情報処理装置及びプロセス圧縮方法並びにプログラム
US8930670B2 (en) * 2007-11-07 2015-01-06 International Business Machines Corporation Partition redispatching using page tracking
JP2013506917A (ja) * 2009-09-30 2013-02-28 サンプリファイ システムズ インコーポレイテッド 圧縮及び復元を用いたマルチ・プロセッサの波形データ交換の改善
US9507637B1 (en) * 2013-08-08 2016-11-29 Google Inc. Computer platform where tasks can optionally share per task resources
KR102114388B1 (ko) * 2013-10-18 2020-06-05 삼성전자주식회사 전자 장치의 메모리 압축 방법 및 장치
US10303235B2 (en) * 2015-03-04 2019-05-28 Qualcomm Incorporated Systems and methods for implementing power collapse in a memory
CN114328373A (zh) * 2020-09-29 2022-04-12 伊姆西Ip控股有限责任公司 管理文件系统的方法、电子设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120131A (ja) * 1991-10-24 1993-05-18 Sharp Corp コンピユータにおける記憶管理方式
JPH0628150A (ja) * 1992-07-08 1994-02-04 Funai Techno Syst Kk プログラム容量圧縮方法
KR950001485A (ko) * 1993-06-08 1995-01-03 가나이 쯔도무 연산처리방법 및 마이크로 컴퓨터
JPH0830472A (ja) * 1994-07-19 1996-02-02 Canon Inc 負荷分散方式

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479587A (en) * 1992-09-03 1995-12-26 Hewlett-Packard Company Page printer having adaptive data compression for memory minimization
US5483622A (en) * 1992-09-03 1996-01-09 Hewlett-Packard Company Page printer having automatic font compression
US5559978A (en) * 1992-10-14 1996-09-24 Helix Software Company, Inc. Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents
US5450562A (en) * 1992-10-19 1995-09-12 Hewlett-Packard Company Cache-based data compression/decompression
US5638498A (en) * 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
JP2505980B2 (ja) * 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
GB2284492B (en) * 1993-12-06 1998-05-13 Graeme Roy Smith Improvements to computer control units
US5446740A (en) * 1993-12-17 1995-08-29 Empire Blue Cross/Blue Shield Method of and apparatus for processing data at a remote workstation
US5572209A (en) * 1994-08-16 1996-11-05 International Business Machines Corporation Method and apparatus for compressing and decompressing data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120131A (ja) * 1991-10-24 1993-05-18 Sharp Corp コンピユータにおける記憶管理方式
JPH0628150A (ja) * 1992-07-08 1994-02-04 Funai Techno Syst Kk プログラム容量圧縮方法
KR950001485A (ko) * 1993-06-08 1995-01-03 가나이 쯔도무 연산처리방법 및 마이크로 컴퓨터
JPH0830472A (ja) * 1994-07-19 1996-02-02 Canon Inc 負荷分散方式

Also Published As

Publication number Publication date
CN1180193A (zh) 1998-04-29
DE69721634T2 (de) 2004-03-25
SG74590A1 (en) 2000-08-22
JP3863967B2 (ja) 2006-12-27
EP0811915A1 (en) 1997-12-10
DE69721634D1 (de) 2003-06-12
US5765157A (en) 1998-06-09
KR980004056A (ko) 1998-03-30
JPH10124334A (ja) 1998-05-15
EP0811915B1 (en) 2003-05-07
TW357319B (en) 1999-05-01
CN1096636C (zh) 2002-12-18

Similar Documents

Publication Publication Date Title
KR100453723B1 (ko) 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법
US5794049A (en) Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US5859982A (en) Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
US6272674B1 (en) Method and apparatus for loading a Java application program
CA2267477C (en) Packaging memory image files
US5546581A (en) Method for integrating a discrete subprogram into a main program
US6823509B2 (en) Virtual machine with reinitialization
EP1342159B1 (en) Method and apparatus for lazy instantiation of objects in a virtual machine
US20040015877A1 (en) Method and apparatus for &#34;just-in-time&#34; dynamic loading and unloading of computer software libraries
GB2343021A (en) Class loading model for object oriented programming
US6633892B1 (en) Archiving tool
GB2365553A (en) Trace information in a virtual machine
US7426720B1 (en) System and method for dynamic preloading of classes through memory space cloning of a master runtime system process
US5355488A (en) Method for adaptively building a library of program threads
US5524214A (en) System for modification of dynamic buffer allocation by comparing modification request with current allocation and updating allocation based upon comparison discrepancy
US7096467B2 (en) Initialization of Java classes in Java virtual machine environments
US6457111B1 (en) Method and system for allocation of a persistence indicator for an object in an object-oriented environment
US7124291B1 (en) System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process
US6996824B2 (en) Frameworks for efficient representation of string objects in Java programming environments
KR20070009777A (ko) 객체 관리 시스템 및 방법
US20030066046A1 (en) Java virtual machine with non-volatile memory
JPH10312297A (ja) マルチタスク機能を有する情報処理システムにおける資源管理方法、資源管理装置及び記録媒体
KR19990019417A (ko) 메모리 관리방법
WO2000077613A2 (en) Method and system for managing and using persistent storage

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: 20120924

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 13

EXPY Expiration of term