KR100772867B1 - 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기 - Google Patents

복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기 Download PDF

Info

Publication number
KR100772867B1
KR100772867B1 KR1020060017762A KR20060017762A KR100772867B1 KR 100772867 B1 KR100772867 B1 KR 100772867B1 KR 1020060017762 A KR1020060017762 A KR 1020060017762A KR 20060017762 A KR20060017762 A KR 20060017762A KR 100772867 B1 KR100772867 B1 KR 100772867B1
Authority
KR
South Korea
Prior art keywords
application
thread
virtual machine
main
manager
Prior art date
Application number
KR1020060017762A
Other languages
English (en)
Other versions
KR20070087393A (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 삼성전자주식회사
Priority to KR1020060017762A priority Critical patent/KR100772867B1/ko
Priority to US11/701,393 priority patent/US8776051B2/en
Priority to CNB2007100791440A priority patent/CN100561440C/zh
Priority to EP07102548A priority patent/EP1830265A3/en
Priority to JP2007040393A priority patent/JP2007226801A/ja
Publication of KR20070087393A publication Critical patent/KR20070087393A/ko
Application granted granted Critical
Publication of KR100772867B1 publication Critical patent/KR100772867B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

본 발명은 가상 머신(Virtual Machine)에 관한 것으로서, 본 발명의 실시예에 따른, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법은, 가상 머신 및 상기 가상 머신과 연동하는 미들웨어를 포함하는 디지털 정보 기기에 있어서, (a) 상기 가상 머신을 구동하여 애플리케이션 매니저를 초기화하고, 상기 미들웨어의 메인 클래스를 로딩하여 초기화하는 단계; (b) 상기 메인 클래스의 메인 메소드를 수행하면서, 상기 애플리케이션 매니저의 소정 메소드를 통하여 각 애플리케이션 별로 소정 행위를 수행하는 단계; 및 (c) 모든 쓰레드를 종결시키고 상기 가상 머신에서 수행 중인 프로세스를 종료하는 단계를 포함한다.
자바 가상 머신, 애플리케이션 매니저, 애플리케이션 별 쓰레드 관리자, 애플리케이션 별 리소스 관리자

Description

복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기{Method for offering partially isolated execution environment for applications and digital devices using the same}
도 1은 종래 기술에 따른 가상 머신을 포함하는 디지털 정보 기기의 구성을 나타내는 도면이다.
도 2는 종래 기술에 따른 자바 가상 머신의 구성을 나타내는 도면이다.
도 3은 상기 도 2의 자바 가상 머신에서의 쓰레드 그룹과 쓰레드의 상관 관계를 보여주는 도면이다.
도 4는 종래 기술에 따른 자바 가상 머신의 수행 과정의 흐름을 나타내는 도면이다.
도 5는 종래 기술에 따른 미들웨어의 수행 과정의 흐름을 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 자바 가상 머신의 구성을 나타내는 도면이다.
도 7은 상기 도 6의 자바 가상 머신에서의 쓰레드 그룹과 쓰레드의 상관 관계 및 각 애플리케이션 별로 생성되는 쓰레드 그룹과 쓰레드의 상관 관계를 보여주는 도면이다.
도 8은 본 발명의 실시예에 따른 자바 가상 머신의 수행 과정의 흐름을 나타내는 도면이다.
도 9는 본 발명의 실시예에 따른 미들웨어의 수행 과정의 흐름을 나타내는 도면이다.
도 10은 본 발명의 실시예에 따른 애플리케이션 시작 메소드의 호출 과정을 나타내는 도면이다.
*도면의 주요 부분에 대한 설명*
200: 자바 가상 머신 210: 클래스 라이브러리
220: JIT 컴파일러 230: 인터프리터
240: 클래스 로더 250: 애플리케이션 매니저
260: 애플리케이션 별 쓰레드 관리자
270: 애플리케이션 별 리소스 관리자
280: 가비지 컬렉터
본 발명은 가상 머신(Virtual Machine)에 관한 것으로서, 더욱 상세하게는, 단일 OS 프로세스로 수행되는 가상 머신에서 다수의 애플리케이션들이 안정적으로 수행될 수 있도록 하기 위한, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기에 관한 것이다.
전통적으로 단일 OS 프로세스(예를 들어, 미들 웨어)에서 수행되는 가상 머신은 하나의 애플리케이션이 수행되는 환경을 가정하고 있으므로, 이를 기반으로 다수의 애플리케이션이 수행될 수 있도록 할 경우, 자바 객체뿐만 아니라 OS의 자원이 모든 애플리케이션 사이에서 공유되는 구조를 제공하여야 한다. 따라서, 공유되는 자바 객체가 하나의 애플리케이션에 의해 수정되면, 다른 애플리케이션은 수정된 내용에 의해 영향을 받을 수 있다. 전통적인 가상 머신에서 서로 다른 클래스 로더(Class Loader)로 로딩된 클래스들에 포함된 스테이틱 필드(Static Field)들은 공유되지 않고 별도로 관리되는 기본적인 분리(isolation) 기능을 제공하고 있으나, 쓰레드(Thread)들의 그룹에 대한 분리 수행 환경을 제공하지는 않는다.
애플리케이션들의 분리된 수행 환경을 제공하기 위한 방법에는 크게 두 가지가 있다. 첫째는 각 애플리케이션마다 하나의 OS 프로세스로 수행하는 방법이며, 두번째는 하나의 OS 프로세스 내에서 다수의 애플리케이션들이 분리된 환경에서 수행되도록 하는 방법이 있다. 본 발명은 두번째의 방법으로서 객체의 공유를 부분적으로 허용하는 부분적 분리(partial isolation)를 제공하는 기술에 관한 것이다.
가상 머신(Vertual Machine)은 어떠한 디지털 정보 기기에서도 수행될 수 있는 애플리케이션의 이동성을 보장하는 표준 애플리케이션 수행 환경을 제공한다. 도 1은 종래 기술에 따른 가상 머신을 포함하는 디지털 정보 기기의 구성을 나타내는 도면이다.
상기 도 1을 참조하면, 디지털 정보 기기(100)는 CPU(10), 가상 머신(20)과 미들웨어(30)와 다운로드 된 애플리케이션(40)이 상주해 있는 메모리, 디스플레이 프로세서(50), 외부 기기 통신부(peripherals; 60), 및 버스(70)로 구성된다. 외부 기기 통신부(60)는 USB 연결 장치, 직렬 연결 장치, 적외선(IR) 연결 장치, 플래시 메모리(Flash memory), 이더넷 통신 장치, 하드 디스크 등이 포함될 수 있다. 이더넷 통신은 LAN, ADSL/케이블 모뎀을 통한 Wide Area Network(WAN) 등의 유선 패킷 통신망이나, 무선(Wireless) LAN, CDMA/GSM/GPRS 등의 무선/이동통신망, 디지털 TV 공중파/케이블/위성 등의 유/무선 방송망 등 여러 가지 다양한 형태로 구현될 수 있다. 디지털 정보 기기(100)에 따라서 위성방송이나 공중파 방송의 경우에, IEEE1394나 이더넷 인터페이스를 통하여 LAN이나 ADSL 등에 접속할 수 있으며, 케이블 방송의 경우 양방향 통신 지원이 케이블 모뎀을 통해서 수행되므로 별도의 이더넷 인터페이스가 필요없이 양방향 통신을 지원할 수 있다. 또한, PVR(Personal Video Recording) 기능을 위하여 EIDE(Enhanced Integrated Device Electronics) 등의 인터페이스를 사용한 하드 디스크가 포함될 수도 있다.
네트워크에 연결된 디지털 정보 기기(100)에 탑재된 가상 머신(20)의 경우 가상 머신 애플리케이션들을 외부로부터 다운로드 받아서 수행하는 형태가 보편적이다. 메모리에는 다운로드 된 애플리케이션(40)이 상주하며, 이들의 시작과 종료 등의 라이프 사이클(life cycle)을 관리하기 위한 미들 웨어(30)가 상주한다. 이러한 미들웨어(30)와 다운로드 된 애플리케이션들(40)은 가상 머신(20) 위에서 수행된다. 예를 들어, 데이터 방송 수신 기능을 갖춘 디지털 TV나 디지털 셋탑 박스 같은 정보 기기의 경우 자바 가상 머신을 탑재하고, 그 위에 DTV 기기 제어와 다운 로드 된 자바 애플리케이션들의 관리를 위한 DTV 미들웨어(OCAP/ACAP/MHP 등의 표준 스펙을 기반으로 함)가 존재한다. 이러한 정보 기기에서 수행되는 자바 애플리케이션들은 Xlet이라는 자바 스펙에 준하여 작성되어 방송이나 네트워크를 통해서 다운로드된다.
한편, 가상 머신 애플리케이션들은 클래스 단위로 구성된다. 하나의 애플리케이션은 여러 개의 클래스들을 포함할 수 있으며, 각 클래스 내에는 수행 코드를 포함하는 메소드들이 포함된다. 각 메소드는 바이트 코드로 표현된 수행 명령들로 구성되는데, 이러한 가상 머신에는 여러 종류가 있다. 그 중에서 자바(Java)와 마이크로 소프트(Microsoft)사의 "Common Language Runtime (CLR)"이나 "Smalltalk" 등의 가상 머신들이 대표적이다. 본 발명에서는 설명의 편의를 위해 자바 가상 머신을 예를 들어 설명하도록 한다. 그러나, 본 발명의 권리 범위는 특정한 가상 머신에 국한되지 않을 것이다.
도 2는 종래 기술에 따른 자바 가상 머신의 구성을 나타내는 도면이다. 상기 도 2를 참조하면, 자바 가상 머신(20)은 클래스 라이브러리(Class Libraries)(21)와 런타임 시스템으로 구성된다.
클래스 라이브러리(21)는 런타임 시스템 상에서 수행될 수 있는 공통 클래스들의 집합으로서, 애플리케이션에서 사용될 수 있도록 미리 구성해놓은 클래스들의 집합을 의미한다.
런타임 시스템은 가상 머신 코드를 수행할 수 있는 실행 환경 전반을 제공하는 역할을 하는데, 내부적으로는, 인터프리터(Interpreter)(23), JIT 컴파일러 (22), 클래스 로더(Class Loader)(24), 가비지 컬렉터(garbage collector)(26), 및 쓰레드 매니저(thread manager)(25)를 포함한다.
JIT 컴파일러(22)는 클래스의 수행 중에 가상 머신 명령어들을 CPU의 기계어로 변환해주는 역할을 하는 것으로서, 일반적으로, Just-In-Time (JIT) 컴파일러가 사용된다. 인터프리터(23)는 클래스의 수행 코드를 실행하기 위한 것으로서, 가상 머신 명령어들을 인식하여 명령을 수행하는 역할을 한다. 클래스 로더(24)는 클래스들을 로딩하는 역할을 한다. 쓰레드 매니저(25)는 수행 단위가 되는 쓰레드들을 관리하는데, 서로 다른 코드들을 처리하기 위해 동시에 수행될 수 있는 여러 개의 쓰레드들을 통틀어서 관리하는 역할을 한다. 가비지 컬렉터(26)는 객체들의 메모리 공간을 관리하고 사용되지 않는 객체들을 수집함으로써 메모리 공간을 재활용하도록 한다.
도 3은 상기 도 2의 자바 가상 머신에서의 쓰레드 그룹과 쓰레드의 상관 관계를 보여주는 도면이다. 자바 가상 머신(20)의 경우에 상호 연관된 쓰레드들을 그룹핑하기 위한 쓰레드 그룹이 존재하는데, 각 쓰레드는 하나의 쓰레드 그룹에 속하게 되고, 상기 쓰레드 그룹 또한 다른 쓰레드 그룹에 속할 수 있다. 자바 가상 머신(20)의 수행시에 기본적으로 시스템 쓰레드 그룹(System Thread Group) 아래에 메인 쓰레드 그룹(Main Thread Group)과 종결자 쓰레드(Finalizer Thread)가 존재하며, 메인 쓰레드 그룹에는 메인 쓰레드(Main Thread)가 존재한다. 메인 쓰레드는 가상 머신 구동시에 파라미터로 넘겨준 클래스의 메인 메소드를 수행하며, 종결자 쓰레드는 객체가 수집되기 전에 필요한 정리 작업을 수행한다.
도 4는 종래 기술에 따른 자바 가상 머신의 수행 과정의 흐름을 나타내는 도면이다. 기본적으로 하나의 자바 가상 머신은 하나의 OS 프로세스로 구동되는 것이 일반적이므로, 이를 바탕으로 상기 도 4를 설명하기로 한다.
자바 가상 머신(20)의 구동시에 기본적인 글로벌(global) 데이터 구조들을 초기화한 후 클래스 로더(24)를 초기화한다(S10). 다음, 시스템 쓰레드 그룹을 만들고 여기에 포함될 종결자 쓰레드(Finalizer thread)를 생성하며, 메인 쓰레드 그룹을 생성하고 여기에 포함될 메인 쓰레드를 생성하게 된다(S20). 이 때 생성된 종결자 쓰레드와 메인 쓰레드는 쓰레드 매니저(Thread Manager)에 등록하여 관리하도록 한다(S30). 그리고, 메인 클래스를 로딩하여 초기화시킨다(S40). 여기서 메인 클래스를 로딩하기 위한 방법은 가상 머신 구동시에 파라미터로 지정된다. 상기 메인 클래스가 로딩되면 메인 메소드를 수행하게 되는데, 상기 도 1에 도시된 디지털 정보 기기(100)를 예로 들면, 메모리에 상주하는 미들웨어(30)의 시작 코드를 담게 되는 클래스가 상기 메인 클래스에 해당되며, 여기에 정의된 메인 메소드로부터 미들웨어(30)의 구동이 시작된다(S50). 상기 메인 메소드가 종료되면 이후에는 가상 머신의 종료 단계를 수행하게 되는데, 상기 종료 단계에서는 현재까지 수행 중인 (쓰레드 매니저(25)에 의해 관리되고 있는) 모든 쓰레드를 종료시키고 가상 머신이 수행 중인 프로세스를 종료한다(S60).
이제, 도 5를 참조하여 상기 미들웨어(30)의 수행과정을 더 상세히 살펴보기로 한다. 상기 도 5는 종래 기술에 따른 미들웨어의 수행 과정의 흐름을 나타내는 도면이다. 미들웨어(30)의 시작시에 기본적인 데이터 구조들을 초기화한 후(S51), 애플리케이션을 수행하기 위해 어떤 행위를 수행할 것인지를 판단한다(S52). 새로운 애플리케이션의 로딩이나 생성이 필요할 경우에는, 해당 애플리케이션의 클래스를 로딩하고 상기 애플리케이션 클래스의 객체를 생성한다(S53). 애플리케이션의 시작(start)이 필요할 경우에는, 새로운 쓰레드를 생성한 후 객체의 시작 메소드를 호출하여 애플리케이션 코드를 구동시킨다(S54). 또한, 애플리케이션 수행 중에 중단(stop)이 필요할 경우에는, 애플리케이션을 중단하기 위한 중단 메소드를 호출하고 애플리케이션이 종료될 때까지 기다린다(S55). 기타 행위가 필요할 경우에는 기타 행위를 수행하게 된다(S56). 위와 같은 여러 가지 행위(action)들은 반복적으로 수행되는데, 또 다른 행위를 수행하는지 여부를 판단하여(S57), 또 다른 행위를 수행할 경우에는 S52 단계로 돌아가 반복 수행하게 된다. 상기와 같은 과정에 의해 다수의 서로 다른 애플리케이션들이 동시에 수행되는 환경을 제공하게 되는 것이다.
그러나, 상기와 같은 종래의 가상 머신은 다수의 애플리케이션이 수행되는 중에 공유되는 자원에 대한 제어가 불가능하여 가상 머신의 안정성이 위협을 받을 수 있다. 기본적으로 가상 머신은 하나의 OS 프로세스로 수행되므로 다수의 애플리케이션들이 동일 프로세스 내에서 다수의 쓰레드로 수행된다. 애플리케이션을 종료시키는 방법도 종료 메소드의 호출에 의해서 애플리케이션을 수행하는 쓰레드가 자신이 수행 중 생성된 모든 쓰레드들과 사용한 모든 자원들을 정리할 것이라는 전제를 두고 있지만, 실제로 애플리케이션이 이러한 과정을 수행하지 않았을 경우에는 애플리케이션이 생성한 쓰레드들과 자원이 정리가 안된 상태로 남아 있을 것 이다. 이러한 자원들이 정리가 안된 상태로 지속될 경우 결과적으로 자원의 부족 현상으로 인해 가상 머신이 더 이상 작동될 수 없는 상태까지 이를 수 있다.
이러한 문제를 해결하기 위해서 기본적으로 하나의 애플리케이션이 하나의 OS 프로세스에서 수행되는 것처럼 서로 다른 애플리케이션들끼리 완전히 분리(isolation)시키는 방법이 제안되고 있으나, 이 경우에는 서로 다른 애플리케이션 사이에서는 어떤 객체도 공유할 수 없게 된다는 문제가 있다. 이에 따라서 가상 머신 위에서 애플리케이션을 관리하는 미들웨어의 모든 코드가 객체 공유가 안 되는 상황을 감안하여 재코딩되어야 하고 객체 공유가 필요한 경우에는 RMI(Remote method invocation) 등의 비효율적인 방법을 사용해야 하므로, 기본적으로 종래 가상 머신에 의존하던 미들웨어의 경우 새로운 방법에 맞추어 객체 관리 방법을 바꿔야 한다는 문제가 있다.
또한, 일부 객체 공유를 허용하면서 애플리케이션을 OS 프로세스처럼 관리하는 방법이 개시되고 있으나, 이 경우에는 객체를 공유하려면 특수한 함수를 사용해야 하므로 표준 자바 스펙과 다른 가상 머신의 구현이 필요하게 되고, 애플리케이션 및 미들웨어도 표준과 다른 가상 머신에 맞추어 구현되어야 하는 문제가 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 고안된 것으로서, 본 발명이 이루고자 하는 기술적 과제는, 다수의 애플리케이션들이 수행되는 가상 머신에서 애플리케이션의 수행과 종료에 따른 쓰레드의 종료와 공유되는 자원에 대한 정리를 효율적으로 처리할 수 있도록 하는, 복수의 애플리케이션에 대해 부분적으로 분리 된 수행 환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기를 제공하는데 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상술한 목적을 달성하기 위한 본 발명의 실시예에 따른, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법은, 가상 머신 및 상기 가상 머신과 연동하는 미들웨어를 포함하는 디지털 정보 기기에 있어서, (a) 상기 가상 머신을 구동하여 애플리케이션 매니저를 초기화하고, 상기 미들웨어의 메인 클래스를 로딩하여 초기화하는 단계; (b) 상기 메인 클래스의 메인 메소드를 수행하면서, 상기 애플리케이션 매니저의 소정 메소드를 통하여 각 애플리케이션 별로 소정 행위를 수행하는 단계; 및 (c) 모든 쓰레드를 종결시키고 상기 가상 머신에서 수행 중인 프로세스를 종료하는 단계를 포함한다.
바람직하게는, 상기 (a) 단계는, (a1) 상기 가상 머신 자체를 하나의 시스템 애플리케이션으로 대표하는 애플리케이션 객체를 생성함으로써 상기 애플리케이션 매니저를 초기화하는 단계; (a2) 상기 시스템에 대한 시스템 쓰레드 그룹, 상기 시스템 쓰레드 그룹을 구성하는 메인 쓰레드 그룹과 종결자 쓰레드, 및 상기 메인 쓰레드 그룹을 구성하는 메인 쓰레드를 생성하는 단계; 및 (a3) 상기 종결자 쓰레드와 상기 메인 쓰레드를 애플리케이션 별 쓰레드 관리자에 등록하는 단계; 및 (a4) 상기 메인 클래스를 로딩하여 초기화하는 단계를 포함한다.
바람직하게는, 상기 (b) 단계는, (b1) 상기 미들웨어가 새로운 애플리케이션을 로딩하는 단계; (b2) 상기 애플리케이션 매니저의 시작 메소드를 통하여 상기 로딩된 애플리케이션 별로 쓰레드 구조를 생성하는 단계; 및 (b3) 상기 애플리케이션 매니저의 홀트 메소드를 통하여 상기 애플리케이션 별로 상기 쓰레드 구조를 종료시키는 단계를 포함하며, 상기 단계들은 반복적으로 수행된다.
상술한 목적을 달성하기 위한 본 발명의 실시예에 따른 가상 머신을 탑재한 디지털 정보 기기는, 가상 머신 명령어 코드를 해석하여 명령을 수행하는 인터프리터, 객체들의 메모리 공간을 관리하고 사용되지 않는 객체를 수집하는 가비지 컬렉터, 및 클래스를 로딩하는 클래스 로더를 포함하는 가상 머신이 탑재된 디지털 정보 기기에 있어서, 적어도 하나 이상의 애플리케이션에 대한 실행과 종료를 처리하기 위한 애플리케이션 매니저; 상기 애플리케이션 별로 쓰레드를 구분하여 관리하는 애플리케이션 별 쓰레드 관리자; 및 상기 실행과 종료를 처리하기 위해 사용된 리소스를 상기 애플리케이션 별로 구분하여 관리하는 애플리케이션 별 리소스 관리자를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 바람직한 실시예들에 의하여 미리 정의된, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기를 설명하기 위한 블럭도 또는 흐름도들을 참조하여 보다 상세히 설명한다.
도 6은 본 발명의 일 실시예에 따른 자바 가상 머신의 구성을 나타내는 도면이다. 상기 도 6을 참조하면, 자바 가상 머신(200)은 클래스 라이브러리(210)와 런타임 시스템으로 구성되며, 상기 런타임 시스템은 JIT 컴파일러(220), 인터프리터(230), 클래스 로더(240), 애플리케이션 매니저(250), 애플리케이션 별 쓰레드 관리자(Per-application Thread Manager; 260), 애플리케이션 별 리소스 관리자(Per-application Resource Manager; 270), 및 가비지 컬렉터(280)를 포함하고 있다.
본 발명에서 사용되는 디지털 정보 기기라 함은 일반적인 PC 뿐만 아니라 PDA, 휴대폰, 디지털 TV, 디지털 셋탑 박스 등 등 중앙 처리 장치(CPU)에 의한 소프트웨어 구동 능력이 있는 모든 기기를 포함하며, 또한 가상 머신에 대해서도 설명의 편의를 위해 자바 가상 머신을 예를 들어 설명하나, 본 발명의 권리 범위는 특정한 가상 머신에 국한되지 않을 것이다.
상기 도 6의 자바 가상 머신(200)을 상기 도 2와 비교하여 쓰레드 매니저 (25)가 애플리케이션 별 쓰레드 관리자(260)로 변경되었고, 애플리케이션 매니저(250)과 애플리케이션 별 리소스 관리자(270)가 추가되었다. 그 외의 나머지 구성 요소들은 종래의 방식인 도 2의 구성과 동일하다.
애플리케이션 매니저(250)는 적어도 하나 이상의 애플리케이션에 대한 실행과 종료를 처리하는 역할을 한다.
애플리케이션 별 쓰레드 관리자(260)는 종래의 방식과 달리 쓰레드들을 애플리케이션 별로 구분하여 관리하는 방법을 제공한다. 종래의 방법의 경우 하나의 가상 머신에서 수행되는 모든 쓰레드들은 자신이 속한 쓰레드 그룹에 의해서만 구분되었을 뿐, 모두 하나의 OS 프로세스에 속한 쓰레드들로 간주되었다. 반면, 본 발명의 실시예에서는 하나의 OS 프로세스 내에 속한 쓰레드라고 하더라도 어떤 애플리케이션의 수행 중에 생성되었느냐에 따라서 구분하는 방식을 사용한다. 쓰레드들을 애플리케이션 별로 구분하는 방법은 여러 실시예가 있을 수 있지만, 본 발명의 일 실시예에서는 각 애플리케이션의 수행 환경을 대표하는 대표 클래스(예를 들어, AppExecEnv라는 클래스)를 가상 머신(200)의 클래스 라이브러리(210)에서 추가로 제공할 수 있을 것이다. 상기 대표 클래스의 객체 하나는 하나의 애플리케이션을 위한 수행 환경을 나타내도록 하여 어떤 쓰레드를 생성할 경우 해당 애플리케이션에 대응되는 대표 클래스 객체를 연관시킬 수 있을 것이다. 이와 같이, 애플리케이션 별로 생성된 쓰레드를 구분해서 관리하는 방법은 여러 가지 방법이 있을 수 있겠으나, 본 발명의 실시예에서는 특정한 구현 방법에 국한하지 않고 각 애플리케이션 별로 생성된 쓰레드들을 별도로 관리하는 방법을 포괄한다.
도 7은 상기 도 6의 자바 가상 머신에서의 쓰레드 그룹과 쓰레드의 상관 관계 및 각 애플리케이션 별로 생성되는 쓰레드 그룹과 쓰레드의 상관 관계를 보여주는 도면이다. 상기 도 7에서 알 수 있듯이, 기본적인 자바 가상 머신의 구동시에 생성되는 쓰레드들은 종래의 방법과 동일한 구조를 가지게 된다. 그러나, 각 애플리케이션의 구동시에 생성되는 쓰레드들은 종래의 방법과 달리 각 애플리케이션 마다 가상 머신의 쓰레드 구조를 별도로 가지는 형태로 생성된다. 상기 도 7을 참조하면, 애플리케이션 1과 2는 각각 시스쳄 쓰레드 그룹(System threadgroup), 메인 쓰레드 그룹(Main threadgroup)이 존재하고 종결자 쓰레드(Finalizer thread)와 메인 쓰레드(main thread)가 각 애플리케이션 별로 존재하는 구조임을 알 수 있다. 즉, 애플리케이션 별 쓰레드 관리자(260)는 상기 애플리케이션 각각에 대해 시스템 쓰레드 그룹, 상기 시스템 쓰레드 그룹을 구성하는 메인 쓰레드 그룹과 종결자 쓰레드, 및 상기 메인 쓰레드 그룹을 구성하는 메인 쓰레드를 관리하게 되는 것이다.
다시 상기 도 6을 참조하면, 애플리케이션 별 리소스 관리자(270)는 적어도 하나 이상의 애플리케이션에 대한 실행과 종료를 처리하기 위해 사용된 리소스를 상기 애플리케이션 별로 구분하여 관리하는 역할을 한다. 애플리케이션 별 리소스 관리자(270)는 상기 애플리케이션에서 사용되는 파일의 입출력을 제어하는 파일 관리자(미도시)와 소켓의 입출력을 제어하는 소켓 관리자(미도시)를 포함하는 것이 바람직하다.
그리고, 개별 애플리케이션은 자신의 메인 클래스의 메인 메소드가 종료되거나 미들웨어에 의해 강제로 종료되는 과정 중 해당 애플리케이션이 사용하던 리소 스를 정리하는 작업이 필요하게 되는데, 애플리케이션 별 리소스 관리자(270)가 이러한 역할을 담당하게 된다.
또한, 애플리케이션 별 리소스 관리자(270)는 애플리케이션의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트가 비어있지 않은 경우에는 다음과 같이 처리하게 된다. 즉, 상기 애플리케이션의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트 중 시스템 클래스(애플리케이션 별 클래스 로더에 의해 로딩되지 않은 모든 공유되는 클래스들로서 가상 머신의 기본 클래스들과 미들웨어의 클래스들이 여기에 속한다)에 속한 객체들을 상기 시스템의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트로 이동시켜 상기 애플리케이션 별로 사용된 모든 리소스를 정리하고 상기 종결 대상 객체 리스트를 정리하게 된다. 그 이유는 시스템 클래스의 리소스가 정리되지 못하는 경우를 방지하기 위한 것으로서 자세한 사항은 도 10의 설명 부분에서 후술할 것이다.
한편, 상기와 같은 본 발명의 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA(Field Programmable Gate Array) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)와 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만, 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소 들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
도 8은 본 발명의 실시예에 따른 자바 가상 머신의 수행 과정의 흐름을 나타내는 도면이다. 기본적으로는 전술한 도 4에서의 과정과 동일한 순서를 따르나, 상기 도 4와 비교하면, 새롭게 추가된 애플리케이션 별 쓰레드 관리자(260)를 이용하여 쓰레드를 등록한다는 점이 달라진다. 특히, 자바 가상 머신(200)의 구동 시에 생성되는 쓰레드 구조는 어떤 애플리케이션에도 속하지 않는 시스템에 속한 쓰레드들로 등록이 되어 다른 애플리케이션들과 별도로 관리된다. 일 실시예에서는 시스템 수행 환경을 나타내는 대표 클래스(예를 들어, AppExecEnv 클래스)의 객체를 생성하고 각 쓰레드들을 이 객체와 연관시키는 것이다.
상기 도 8을 간단히 설명하면, 먼저, 자바 가상 머신(200)의 구동시에 기본적인 글로벌(global) 데이터 구조들을 초기화한 후 클래스 로더(240)와 애플리케이션 매니저(250)를 초기화한다(S100). 즉, 상기 S100 단계는 가상 머신 자체를 하나의 시스템 애플리케이션으로 대표하는 애플리케이션 객체를 생성하는 단계로 볼 수 있다. 다음, 시스템 쓰레드 그룹을 만들고 여기에 포함될 종결자 쓰레드(Finalizer thread)를 생성하며, 메인 쓰레드 그룹을 생성하고 여기에 포함될 메인 쓰레드를 생성하게 된다(S200). 이 때 생성된 종결자 쓰레드와 메인 쓰레드는 애플리케이션 별 쓰레드 관리자(260)에 등록하여 관리하도록 한다(S300). 그리고, 미들웨어의 메인 클래스를 로딩하여 초기화시킨다(S400). 여기서 메인 클래스를 로딩하기 위한 방법은 가상 머신 구동시에 파라미터로 지정된다.
상기 메인 클래스가 로딩되면 메인 메소드를 수행하게 되는데, 메모리에 상주하는 미들웨어의 시작 코드를 담게 되는 클래스가 상기 메인 클래스에 해당되며, 여기에 정의된 메인 메소드로부터 미들웨어의 구동이 시작되어, 메인 메소드를 애플리케이션 별로 수행하게 되는데(S500), 이 과정은 도 9에서 후술하기로 한다. 한편, 상기 메인 메소드가 종료되면 이후에는 가상 머신의 종료 단계를 수행하게 되는데, 상기 종료 단계에서는 현재까지 수행중인 모든 쓰레드를 종료시키고 가상 머신에서 수행 중인 프로세스를 종료한다(S600).
도 9는 본 발명의 실시예에 따른 미들웨어의 수행 과정의 흐름을 나타내는 도면이다. 상기 도 9를 참조하면, 미들웨어의 시작시에 기본적인 데이터 구조들을 초기화 한 후(S510), 어떤 행위를 수행할 것인가를 판단한다(S520). 새로운 애플리케이션의 로딩(loading)이 필요할 경우에는 해당 애플리케이션의 클래스를 파라미터로 하여 애플리케이션의 객체를 생성한다(S532). 애플리케이션의 시작(start)이 필요할 경우에는 직접 애플리케이션의 코드를 수행하지 않고 애플리케이션 매니저(250)의 시작(start) 메소드를 호출하여 애플리케이션을 위한 별도의 수행 환경에서 애플리케이션이 구동되도록 한다(S534). 이는 애플리케이션의 시작을 위한 모든 초기화 과정은 애플리케이션 매니저(250)가 담당하기 때문이다. 상기 S534 단계에 대해서는 도 10에서 상세히 후술하도록 한다. 또한, 애플리케이션 수행 중에 중단(stop)이 필요할 경우에는, 종래 방식처럼 애플리케이션을 중단시키기 위한 메소드를 호출하고 애플리케이션이 종료 상태가 될 때까지 기다리는 과정(S535)은 종래의 도 5 방식과 동일하지만, 별도의 쓰레드를 생성하여 애플리케이션 매니저(250)의 홀트(halt) 메소드를 호출하여 애플리케이션에 속한 모든 쓰레드들을 강제로 종료시키는 과정(S536)이 새롭게 추가되었다. 이 과정에서는 기존의 쓰레드 종료 방법도 함께 활용할 수 있을 것이다. 쓰레드들을 종료시킨 후에는 리소스를 정리하는 과정이 추가되어 일괄적으로 리소스를 해제하는 과정을 수행하게 된다. 이로써, 애플리케이션이 중단(stop) 메소드의 수행에 반응하지 않거나 리소스의 정리를 끝내지 못한 경우를 대비하게 된다. 한편, 기타 행위가 필요할 경우에는 기타 행위를 수행하게 된다(S538).
위와 같은 여러 가지 행위(action)들은 반복적으로 수행되는데, 또 다른 행위를 수행하는지 여부를 판단하여(S540), 또 다른 행위를 수행할 경우에는 S520 단계로 돌아가 반복 수행되어 다수의 서로 다른 애플리케이션들이 동시에 안정적으로 수행되는 환경을 제공한다.
S534 과정을 도 10을 참조하여 상세히 설명하기로 하는바, 상기 도 10은 본 발명의 실시예에 따른 애플리케이션 시작 메소드의 호출 과정을 나타내는 도면이다. 상기 도 10에서의 과정은 하나의 가상 머신이 구동되는 것과 유사한 방식으로 수행되므로 상기 도 8과 유사한 단계를 거치나, 다음과 같은 점에서 차이가 있다. 첫째는, 쓰레드들이 시스템에 속한 쓰레드들이 아니라 애플리케이션에 속한 쓰레드 들로 관리된다는 점이다. 두번째는, 애플리케이션의 메인 클래스에 해당하는 클래스는 상기 도 9의 애플리케이션 로딩 단계(S532)에서 파라미터로 지정한 애플리케이션 클래스를 구동시키기 위한 클래스가 된다는 점이다. 세번째는, 애플리케이션 메인 클래스의 메인 메소드가 종료되는 과정에 있어서 해당 애플리케이션이 사용하던 리소스를 정리하는 과정이 추가되었다는 점이다. 즉, 애플리케이션의 수행 중에 획득한 리소스를 애플리케이션 별 리소스 관리자(270)가 관리하고 있다가 이 단계에서 일괄적으로 정리한다는 점이다.
상기 도 10을 간단히 설명하면, 먼저, 자바 가상 머신(200)의 구동시에 기본적인 글로벌(global) 데이터 구조들을 초기화한 후 애플리케이션의 클래스 로더를 초기화한다(S5341). 다음, 시스템 쓰레드 그룹을 만들고 여기에 포함될 종결자 쓰레드와 메인 쓰레드 그룹을 생성하고, 여기에 포함될 메인 쓰레드를 생성하게 된다(S5342). 이 때 생성된 종결자 쓰레드와 메인 쓰레드는 애플리케이션 별 쓰레드 관리자(260)에 등록하여 관리하도록 한다(S5343). 그리고, 애플리케이션의 메인 클래스를 로딩하여 초기화시킨다(S5344). 상기 메인 클래스가 로딩되면 메인 메소드를 수행하게 되는데, 여기에 정의된 메인 메소드로부터 애플리케이션의 구동이 시작되어, 메인 메소드를 애플리케이션 별로 수행하게 된다(S5345). 상기 메인 메소드가 종료되면 이후에는 애플리케이션의 종료 단계를 수행하게 되는데, 상기 종료 단계에서는 현재까지 애플리케이션 별로 관리되고 있는 모든 쓰레드를 중단하고 애플리케이션 별로 사용된 리소스를 정리하는 과정이 새롭게 추가되었다(S5346).
리소스를 일괄적으로 해제하는 과정에 대해서 상세히 설명하기로 한다. 이 과정에서는 우선 애플리케이션의 종결자 쓰레드가 관리하고 있던 종결 대상 객체들의 리스트 중에서 시스템 클래스에 속한 객체들을 시스템의 종결자 쓰레드가 관리하고 있던 종결 대상 객체 리스트로 옮기는 작업이 이루어진다. 왜냐하면, 애플리케이션 별로 생성된 종결자 쓰레드 역시 애플리케이션에 속한 쓰레드이므로 쓰레드의 종료 과정에서 종료되기 때문에 종료되지 않은 객체들이 남아 있게 되고, 이 중에서 가상 머신에서 기본적으로 제공하는 클래스나 가상 머신 구동시에 주어진 클래스와 같은 시스템에 의해 로딩된 클래스의 객체들의 경우는 아직 정리가 되지 않았기 때문에, 시스템의 종결자 쓰레드가 관리하고 있던 종결 대상 객체 리스트로 옮기는 것이다. 이후의 과정은 애플리케이션 별로 사용하던 리소스를 일괄적으로 정리한 후 가비지 컬렉터(280)를 이용하여 사용되지 않은 객체들을 정리하게 된다. 상기 과정을 모두 거치면 하나의 애플리케이션에서 생성한 모든 쓰레드들과 이들이 사용하던 모든 리소스가 일괄적으로 정리가 되어 가상 머신에서 리소스를 재활용할 수 있게 된다. 여기서, 상기 종결 대상 객체 리스트는 상기 애플리케이션에서 사용되고 난 후 종료되지 않은 파일 및 소켓을 포함할 것이다.
한편, 본 발명의 실시예에 따른 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기의 권리 범위는 상기와 같은 방법을 컴퓨터에서 실행하기 위한 프로그램 코드를 기록한 컴퓨터로 읽을 수 있는 기록 매체에도 미침은 당업자에게 자명하다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적 인 특징을 벗어나지 않는 범위 내에서 여러 가지로 치환, 변형 및 변경이 가능하므로 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명의 실시예에 따르면, 다음과 같은 효과가 있다.
애플리케이션 별로 쓰레드와 리소스를 별도로 관리함으로써, 애플리케이션의 종료시에 쓰레드들과 리소스를 일괄적으로 정리할 수 있게 되어 하나의 OS 프로세스로 수행되는 가상 머신에서 다수의 애플리케이션들이 동일 프로세스 내에서 수행되더라도 리소스의 공유가 효율적으로 이루어질 수 있으며, 애플리케이션 종료 후에도 불필요하게 남게 되는 쓰레드들이나 리소스가 없도록 한다. 특히, 종래의 애플리케이션 분리(application isolation) 방법과 달리 기본적으로 하나의 가비지 컬렉터를 이용함으로써 객체의 공유를 허용하면서 애플리케이션 종료 시에 정리될 필요가 있는 객체는 애플리케이션 별 리소스 관리자에 의해 정리되도록 하여 불필요하게 남는 객체들이 없도록 함으로써, 애플리케이션 별 리소스 관리자에 의해서 자동적으로 공유 객체들이 관리되도록 하였다.
또한, 종래의 미들웨어의 수정이 최소한으로 될 수 있도록 간단한 클래스를 제공하여 미들웨어의 객체 관리 방식을 전체적으로 변경하지 않더라도 종래의 가상 머신이 제공하는 객체 공유 기능을 그대로 활용할 수 있어 본 발명의 구현이 용이하며, 특히, 종래의 애플리케이션의 수정이 전혀 없이 다수의 애플리케이션들을 안전하게 수행시킬 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.

Claims (15)

  1. 가상 머신 및 상기 가상 머신과 연동하는 미들웨어를 포함하는 디지털 정보 기기에서 복수의 애플리케이션에 대한 수행 환경을 제공하는 방법에 있어서,
    (a) 상기 가상 머신 자체를 하나의 시스템 애플리케이션으로 대표하는 애플리케이션 객체를 생성함으로써 상기 애플리케이션 매니저를 초기화하고, 상기 미들웨어의 메인 클래스를 로딩하여 초기화하는 단계;
    (b) 상기 메인 클래스의 메인 메소드를 수행하면서, 상기 애플리케이션 매니저의 소정 메소드를 통하여 각 애플리케이션 별로 소정 행위를 수행하는 단계; 및
    (c) 모든 쓰레드를 종결시키고 상기 가상 머신에서 수행 중인 프로세스를 종료하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  2. 제 1 항에 있어서,
    상기 (a) 단계는,
    상기 시스템에 대한 시스템 쓰레드 그룹, 상기 시스템 쓰레드 그룹을 구성하는 메인 쓰레드 그룹과 종결자 쓰레드, 및 상기 메인 쓰레드 그룹을 구성하는 메인 쓰레드를 생성하는 단계; 및
    상기 종결자 쓰레드와 상기 메인 쓰레드를 애플리케이션 별 쓰레드 관리자에 등록하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  3. 제 1 항에 있어서,
    상기 (b) 단계는,
    (b1) 상기 미들웨어가 새로운 애플리케이션을 로딩하는 단계;
    (b2) 상기 애플리케이션 매니저의 시작 메소드를 통하여 상기 로딩된 애플리케이션 별로 쓰레드 구조를 생성하는 단계; 및
    (b3) 상기 애플리케이션 매니저의 홀트 메소드를 통하여 상기 애플리케이션 별로 상기 쓰레드 구조를 종료시키는 단계를 포함하며,
    상기 단계들은 반복적으로 수행되는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  4. 제 3 항에 있어서,
    상기 (b2) 단계는,
    (b21) 상기 애플리케이션의 메인 클래스를 로딩하여 초기화하는 단계;
    (b22) 상기 메인 클래스의 메인 메소드를 수행하는 단계; 및
    (b23) 상기 메인 메소드의 수행이 완료된 후 상기 애플리케이션 별로 사용된 리소스의 정리를 수행하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으 로 분리된 수행 환경을 제공하는 방법.
  5. 제 4 항에 있어서,
    상기 (b21) 단계는,
    상기 애플리케이션의 시스템 쓰레드 그룹, 상기 시스템 쓰레드 그룹을 구성하는 메인 쓰레드 그룹과 종결자 쓰레드, 및 상기 메인 쓰레드 그룹을 구성하는 메인 쓰레드를 생성하는 단계; 및
    상기 시스템 쓰레드 그룹, 상기 메인 쓰레드 그룹, 상기 종결자 쓰레드, 및 상기 메인 쓰레드를 애플리케이션 별 쓰레드 관리자에 등록하는 단계; 및
    상기 메인 클래스를 로딩하여 초기화하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  6. 제 3 항에 있어서,
    상기 (b3) 단계는,
    (b31) 상기 애플리케이션 매니저의 홀트 메소드를 통하여 상기 애플리케이션 별로 상기 쓰레드 구조를 종료하는 단계; 및
    (b32) 상기 애플리케이션 별로 사용된 리소스의 정리를 수행하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  7. 제 4 항에 있어서,
    상기 (b23) 단계는,
    상기 애플리케이션의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트 중 시스템 클래스에 속한 객체들을 상기 시스템의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트로 이동시키는 단계; 및
    상기 애플리케이션에 의해 사용된 모든 리소스를 정리하고, 상기 종결 대상 객체 리스트를 정리하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  8. 제 7 항에 있어서,
    상기 애플리케이션에 의해 사용된 모든 리소스는,
    상기 애플리케이션에서 사용되어 종료되지 않은 파일 및 소켓을 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  9. 제 6 항에 있어서,
    상기 (b32) 단계는,
    상기 애플리케이션의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트 중 시스템 클래스에 속한 객체들을 상기 시스템의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트로 이동시키는 단계; 및
    상기 애플리케이션에 의해 사용된 모든 리소스를 정리하고, 상기 종결 대상 객체 리스트를 정리하는 단계를 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  10. 제 9 항에 있어서,
    상기 애플리케이션에 의해 사용된 모든 리소스는,
    상기 애플리케이션에서 사용되어 종료되지 않은 파일 및 소켓을 포함하는, 복수의 애플리케이션에 대해 부분적으로 분리된 수행 환경을 제공하는 방법.
  11. 가상 머신 명령어 코드를 해석하여 명령을 수행하는 인터프리터, 객체들의 메모리 공간을 관리하고 사용되지 않는 객체를 수집하는 가비지 컬렉터, 및 클래스를 로딩하는 클래스 로더를 포함하는 가상 머신이 탑재된 디지털 정보 기기에 있어서,
    적어도 하나 이상의 애플리케이션에 대한 실행과 종료를 처리하기 위한 애플리케이션 매니저;
    상기 애플리케이션 별로 쓰레드를 구분하여 관리하는 애플리케이션 별 쓰레드 관리자; 및
    상기 실행과 종료를 처리하기 위해 사용된 리소스를 상기 애플리케이션 별로 구분하여 관리하는 애플리케이션 별 리소스 관리자를 포함하는 가상 머신을 탑재한 디지털 정보 기기.
  12. 제 11 항에 있어서,
    상기 애플리케이션 별 쓰레드 관리자는,
    상기 애플리케이션 각각에 대해 시스템 쓰레드 그룹, 상기 시스템 쓰레드 그룹을 구성하는 메인 쓰레드 그룹과 종결자 쓰레드, 상기 메인 쓰레드 그룹을 구성하는 메인 쓰레드, 및 상기 쓰레드 그룹과 상기 쓰레드로부터 파생된 쓰레드와 쓰레드 그룹을 관리하는, 가상 머신을 탑재한 디지털 정보 기기.
  13. 제 11 항에 있어서,
    상기 애플리케이션 별 리소스 관리자는,
    상기 애플리케이션에서 사용되는 파일의 입출력을 제어하는 파일 관리자; 및
    상기 애플리케이션에서 사용되는 소켓의 입출력을 제어하는 소켓 관리자를 포함하는, 가상 머신을 탑재한 디지털 정보 기기.
  14. 제 11 항에 있어서,
    상기 애플리케이션 별 리소스 관리자는,
    상기 애플리케이션의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트 중 시스템 클래스에 속한 객체들을 상기 시스템의 종결자 쓰레드에 의해 관리되고 있는 종결 대상 객체 리스트로 이동시키는, 가상 머신을 탑재한 디지털 정보 기기.
  15. 제 11 항에 있어서,
    상기 가상 머신은 자바 가상 머신인, 가상 머신을 탑재한 디지털 정보 기기.
KR1020060017762A 2006-02-23 2006-02-23 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기 KR100772867B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020060017762A KR100772867B1 (ko) 2006-02-23 2006-02-23 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기
US11/701,393 US8776051B2 (en) 2006-02-23 2007-02-02 Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same
CNB2007100791440A CN100561440C (zh) 2006-02-23 2007-02-14 提供部分隔离的执行环境的方法及其数字信息设备
EP07102548A EP1830265A3 (en) 2006-02-23 2007-02-16 Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same
JP2007040393A JP2007226801A (ja) 2006-02-23 2007-02-21 複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060017762A KR100772867B1 (ko) 2006-02-23 2006-02-23 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기

Publications (2)

Publication Number Publication Date
KR20070087393A KR20070087393A (ko) 2007-08-28
KR100772867B1 true KR100772867B1 (ko) 2007-11-02

Family

ID=38254999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060017762A KR100772867B1 (ko) 2006-02-23 2006-02-23 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기

Country Status (5)

Country Link
US (1) US8776051B2 (ko)
EP (1) EP1830265A3 (ko)
JP (1) JP2007226801A (ko)
KR (1) KR100772867B1 (ko)
CN (1) CN100561440C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950484B1 (ko) * 2018-08-08 2019-02-20 엘아이지넥스원 주식회사 안드로이드의 실시간 태스크 관리 장치
KR101950485B1 (ko) * 2018-08-08 2019-05-21 엘아이지넥스원 주식회사 안드로이드의 실시간 태스크 관리 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100121355A1 (en) 2008-10-24 2010-05-13 The Foundry, Llc Methods and devices for suture anchor delivery
US20100292731A1 (en) 2009-05-12 2010-11-18 Foundry Newco Xl, Inc. Methods and devices to treat diseased or injured musculoskeletal tissue
US20100292733A1 (en) 2009-05-12 2010-11-18 Foundry Newco Xi, Inc. Knotless suture anchor and methods of use
US8739147B2 (en) * 2011-04-15 2014-05-27 International Business Machines Corporation Class isolation to minimize memory usage in a device
US20160364277A1 (en) * 2014-02-11 2016-12-15 Evado Holdings Pty Ltd A method for using user session data to provide middle-ware
WO2016007737A1 (en) * 2014-07-10 2016-01-14 Harman International Industries, Incorporated Operating system startup acceleration
EP3167360B1 (en) * 2014-07-10 2022-02-09 Harman International Industries, Incorporated Operating system startup acceleration
CN105404524B (zh) * 2014-09-15 2019-01-15 阿里巴巴集团控股有限公司 Java应用中的类加载隔离方法及装置
US9800518B2 (en) 2015-03-11 2017-10-24 International Business Machines Corporation Managing application, middleware, and virtual mechanism density in a cloud
CN106250124B (zh) * 2016-07-25 2020-01-21 百富计算机技术(深圳)有限公司 功能模块跨平台运行的实现方法和装置
CN107329800B (zh) * 2017-06-29 2019-11-05 北京北信源软件股份有限公司 一种基于Docker平台的中间件应用管控方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181727A (ja) 1998-12-15 2000-06-30 Nec Corp 仮想空間システム上におけるスレッド機能のプロセスマッピング方法
JP2003186683A (ja) * 2001-12-17 2003-07-04 Canon Inc 複数アプリケーション実行システム及び記憶媒体
JP2004078617A (ja) 2002-08-19 2004-03-11 Nec Corp アプリケーションの並列処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US6931544B1 (en) * 1998-12-18 2005-08-16 The Sco Group, Inc. Method and apparatus for executing multiple JAVA(™) applications on a single JAVA(™) virtual machine
US6571389B1 (en) 1999-04-27 2003-05-27 International Business Machines Corporation System and method for improving the manageability and usability of a Java environment
US6567974B1 (en) 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US7024668B2 (en) * 2000-05-15 2006-04-04 Matsushita Electric Industrial Co., Ltd. Application execution apparatus and method
GB2365554B (en) 2000-05-31 2004-09-01 Ibm Virtual machine support for multiple aplications
US7263700B1 (en) * 2000-11-06 2007-08-28 International Business Machines Corporation Serially, reusable virtual machine
JP4088439B2 (ja) * 2000-12-28 2008-05-21 富士通株式会社 論理装置の動作シミュレーション方法並びに論理装置の動作シミュレーションプログラム及び同プログラムを記録したコンピュータ読み取り可能な記録媒体
KR100393483B1 (ko) 2001-04-10 2003-08-06 주식회사 팬택앤큐리텔 가상 머신간 동적 메모리 공유 장치 및 방법
AU2002351911A1 (en) * 2001-11-07 2003-05-19 Harald Kuck Providing isolation through process attachable virtual machines
JP2004102398A (ja) 2002-09-05 2004-04-02 Sharp Corp アプリケーション管理装置、その方法およびそのコンピュータ・プログラム
KR100661637B1 (ko) 2003-12-22 2006-12-27 한국전자통신연구원 이동통신 단말기에서 다중 가상머신 구동용 실행 환경 시스템 및 그 실행 방법
JP2005216151A (ja) * 2004-01-30 2005-08-11 Hitachi Ltd 資源運用管理システム及び資源運用管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181727A (ja) 1998-12-15 2000-06-30 Nec Corp 仮想空間システム上におけるスレッド機能のプロセスマッピング方法
JP2003186683A (ja) * 2001-12-17 2003-07-04 Canon Inc 複数アプリケーション実行システム及び記憶媒体
JP2004078617A (ja) 2002-08-19 2004-03-11 Nec Corp アプリケーションの並列処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950484B1 (ko) * 2018-08-08 2019-02-20 엘아이지넥스원 주식회사 안드로이드의 실시간 태스크 관리 장치
KR101950485B1 (ko) * 2018-08-08 2019-05-21 엘아이지넥스원 주식회사 안드로이드의 실시간 태스크 관리 방법

Also Published As

Publication number Publication date
US8776051B2 (en) 2014-07-08
US20070226719A1 (en) 2007-09-27
KR20070087393A (ko) 2007-08-28
CN101025696A (zh) 2007-08-29
JP2007226801A (ja) 2007-09-06
EP1830265A2 (en) 2007-09-05
CN100561440C (zh) 2009-11-18
EP1830265A3 (en) 2008-12-24

Similar Documents

Publication Publication Date Title
KR100772867B1 (ko) 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기
CA2267477C (en) Packaging memory image files
US9891939B2 (en) Application compatibility with library operating systems
US8028289B2 (en) Application execution apparatus and method for managing special threads to notify listeners of resource status changes
US7814472B2 (en) System and method for shared code-sourcing in a Java Virtual Machine environment
US8006246B2 (en) Apparatus for forcibly terminating thread blocked on input/output operation and method for the same
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
CN110325969B (zh) 多阶段垃圾收集器
US8745598B2 (en) Running injected code prior to execution of an application
US7818733B2 (en) Improving bundle control in computing environment
CN103718159B (zh) 图像处理软件开发方法、图像处理软件开发装置
US8881162B2 (en) Apparatus and method for managing resources in containment framework environment
US20150128147A1 (en) Modified jvm with multi-tenant application domains and memory management
US20070203959A1 (en) Apparatus and method for managing resources using virtual ID in multiple Java application environment
KR100577366B1 (ko) 이종의 자바 메소드를 실행하는 방법 및 장치
CN102262555B (zh) 加载java三方库的不同版本的方法和装置
US10628306B2 (en) Garbage collector
KR20060028567A (ko) 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US10891214B2 (en) Transferring a debug configuration amongst carrier threads for debugging a carried thread
Andert Object frameworks in the Taligent OS
CN108228266B (zh) 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
JP2019185423A (ja) アプリの実行方法
JP2003241967A (ja) プログラム実行装置およびその方法、並びにそこで実行されるプログラム
CN109923527B (zh) 可变类型建立器
US20050010934A1 (en) Native code isolation in a multi-tasking java virtual machine

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20120914

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140922

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160920

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180917

Year of fee payment: 12