KR100439186B1 - 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 - Google Patents

자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 Download PDF

Info

Publication number
KR100439186B1
KR100439186B1 KR10-2001-0086930A KR20010086930A KR100439186B1 KR 100439186 B1 KR100439186 B1 KR 100439186B1 KR 20010086930 A KR20010086930 A KR 20010086930A KR 100439186 B1 KR100439186 B1 KR 100439186B1
Authority
KR
South Korea
Prior art keywords
lock
virtual machine
thread
java virtual
synchronization
Prior art date
Application number
KR10-2001-0086930A
Other languages
English (en)
Other versions
KR20030056656A (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 KR10-2001-0086930A priority Critical patent/KR100439186B1/ko
Priority to US10/178,557 priority patent/US20030126187A1/en
Publication of KR20030056656A publication Critical patent/KR20030056656A/ko
Application granted granted Critical
Publication of KR100439186B1 publication Critical patent/KR100439186B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

본 발명은 자바 가상머신(java virtual machine)의 멀티 쓰레드(threads) 시스템에서의 동기화 장치 및 방법에 관한 것으로, 자바 가상머신에서 쓰레드간의 동기화(thread synchronization) 구현에 사용되는 락(lock)의 단위를 객체에서 객체의 필드로 세분화함으로써 멀티 쓰레드 시스템의 동시성(concurrency)을 증가시키는 기술에 관한 것이다. 자바 가상머신에서 쓰레드가 동기화 구문 또는 동기화 메소드(method)를 수행하기 위한 모니터 영역(monitor region)에 진입하려면, 객체에 대한 락을 소유하여야 하는데, 이러한 경우, 해당 쓰레드가 객체의 일부분에만 접근이 필요한 경우에도, 객체 전체에 대한 락을 얻어야 수행을 계속할 수 있으며, 락을 얻지 못하면 락을 얻기 위한 대기 상태로 들어가야 하므로, 이 과정 중에 시스템의 성능을 저하시킬 수 있는 오버헤드를 초래하게 된다. 본 발명은, 동기화를 위한 락킹 대상을 객체의 필드 단위로 세분화하여 객체의 공유성을 증가시키고 바로 락을 얻을 수 있는 기회를 증가시키므로, 자바 가상머신의 멀티 쓰레드 시스템 또는 멀티프로세서 개발 시 하부 구조에 이용할 경우 시스템의 수행 속도를 향상시킬 수 있다. 또한, 자바 가상머신 명세의 예약된 바이트 코드를 확장하는 방법을 사용하므로 자바 가상머신 외부의 사용자에게 영향을 미치지 않는다.

Description

자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 및 방법{APPARATUS FOR SYNCHRONIZING THREADS IN JAVA VIRTUAL MACHINE AND METHOD THEREFOR}
본 발명은 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 기술에 관한 것으로, 특히, 동기화 단위를 객체에서 객체 필드로 세분화하는데 적합한 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 및 방법에 관한 것이다.
자바 가상머신에서 객체는 논리적으로 각 모니터와 연관되어 있으며 모니터 영역을 수행하기 위해 동기화가 필요한 경우, 모니터를 통해 객체의 변수들을 보호하게 된다. 자바 가상머신에서 모니터는 배타적 락을 통해 구현되며, 동시에 하나의 객체에 대하여 하나의 쓰레드만이 객체의 락을 소유할 수 있다.
자바 프로그램에서 객체에 대한 락을 직접 명시하는 구문은 없으며 동기화 구문이나 동기화 메소드의 사용에 의해 모니터 영역이 설정되고, 자바 가상머신이 이들 영역을 수행시키기 위해 자동적으로 객체를 락킹하게 된다.
도 3은 일반적인 자바 가상머신에서의 모니터 영역 수행 과정을 나타낸 흐름도이다.
먼저, 자바의 모니터 영역에는 동기화 구문(synchronized statement)과 동기화 메소드(synchronized method)등의 두 가지가 존재하며, 각 모니터 영역은 하나의 객체와 연관되어 있다.
단계(S102)에서 쓰레드는 모니터 영역의 시작인지를 판단하고, 모니터 영역을 수행하기 위해서는 참조되는 객체에 대한 락을 소유해야만 한다(S103).
객체에 대한 락은 배타적 락으로서 동시에 하나의 쓰레드만이 소유할 수 있으므로, 다른 쓰레드가 사용하고 있는 경우에 락을 요구한 쓰레드는 락이 해제되었다는 신호를 받을 때까지 대기 상태에 있게 된다(S104).
이 과정에서 쓰레드간의 컨텍스트 스위치도 발생하게 된다. 일단 락을 소유하게 되면 쓰레드는 모니터 영역의 코드들을 수행시킬 수 있으며(S105)(S106), 모니터 영역을 빠져나갈 때(S107), 소유한 객체의 락을 해제시켜야 한다(S108).
이와 같이, 현재의 자바 가상머신에서는 객체가 락의 단위가 됨으로써 객체의 일부분에 대한 접근을 요구하는 모니터 영역의 경우에도 불필요하게 객체 전체에 대한 락을 소유하게 되므로 시스템의 성능을 저하시키는 요인이 된다.
따라서, 자바 가상머신에서 락의 단위를 세분화할 수 있는 방안이 제안된다면, 멀티 쓰레드 및 멀티프로세서 환경 하에서 시스템의 효율성을 높이는데 많은 도움을 줄 수 있을 것이다.
본 발명은 상술한 점에 착안하여 안출한 것으로, 자바 가상머신 명세에 정의된 동기화 인스트럭션 세트를 예약 코드를 이용하여 외부 사용자에게 영향을 미치지 않는 범위내에서 확장하여 자바 가상머신의 락 단위를 객체에서 객체 필드까지 세분화함으로써, 객체의 공유성을 증가시키고, 쓰레드가 바로 락을 얻을 수 있는 기회를 높이며, 대기 상태로 들어감에 따라 발생하는 불필요한 오버헤드를 줄여 멀티 쓰레드 시스템의 동시성을 향상시키도록 한 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 및 방법을 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치에 있어서, 각 객체와 연관되어 객체의 공유 락과 배타적 락의 유효 여부에 관한 정보 및 객체가 속한 클래스의 락 테이블을 참조 가능한 모니터와, 클래스의 객체가 속한 각각의 모니터 영역에서 참조하는 필드들로 이루어지는 엔트리로 구성되되 각각의 엔드리에 속한 필드들의 집합이 서로소가 되도록 구성되는 자바 가상머신내의 각 클래스와 연관된 락 테이블과, 객체의 락 테이블 인스턴스와, 객체마다 구비되고 클래스의 락 테이블 인스턴스를 관리하여 필드 락 획득에 실패한 쓰레드가 존재하는 경우 쓰레드를 해당 엔트리의 대기 리스트에 포함시켜 관리하며 필드 락이 해제된 경우 해제된 필드가 포함된 엔트리의 대기 리스트에 있는 쓰레드로 락 허용 신호를 전송하는 필드 락 관리자를 포함하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치를 제공한다.
본 발명의 목적을 달성하기 위한 다른 실시예에 따르면, 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법에 있어서, 인스트럭션을 디코드하여 모니터 영역(monitor region)의 시작인지를 판단하는 제 1 단계와; 제 1 단계의 판단 결과, 모니터 영역인 경우, 임의의 쓰레드에서 객체의 공유 락을 소유하는지를 판단하는 제 2 단계와; 제 2 단계의 판단 결과, 쓰레드에서 객체의 공유 락을 소유하지 못한 경우, 락 허용 신호를 받을 때까지 쓰레드를 대기 상태에 두는 제 3 단계와; 제 2 단계의 판단 결과, 쓰레드에서 객체의 공유 락을 소유한 경우, 소정 인덱스 정보를 이용하여 락 테이블 인스턴스의 해당 엔트리에 대한 필드 락을 소유하는지를 판단하는 제 4 단계와; 제 4 단계의 판단 결과, 쓰레드에서 해당 필드 락을 소유하지 못한 경우, 필드 락 관리자로부터 락 허용 신호를 받을 때까지 쓰레드를 대기 상태에 두는 제 5 단계와; 제 4 단계의 판단 결과, 쓰레드에서 해당 필드 락을 소유한 경우, 쓰레드를 통해 모니터 영역의 코드들을 디코드하도록 하는 제 6 단계를 포함하는 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법을 제공한다.
도 1은 통상의 자바 가상머신에서의 모니터 영역 수행 과정의 흐름도,
도 2a는 본 발명에 따른 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 구성도,
도 2b는 도 2a의 필드 락 관리자의 구성도,
도 3은 본 발명에 따른 자바 가상머신 명세의 예약된 바이트 코드(reserved byte-code)를 사용하여 정의한 동기화 인스트럭션들을 설명하기 위한 도면,
도 4는 본 발명의 바람직한 실시 예에 따른 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 과정을 설명한 흐름도.
<도면의 주요부분에 대한 부호의 설명>
101 : 자바가상머신 내의 객체
102 : 각 객체와 연관된 모니터
103 : 모니터가 참조 가능한 각 클래스와 연관된 락 테이블
104 : 객체의 클래스
105 : 객체의 필드 락 관리자(field lock manager)
106 : 필드 락 관리자가 관리하는 객체와 연관된 락 테이블 인스턴스
107 : 필드 락 관리자의 락 테이블 인스턴스의 각 엔트리에 대기 중인 쓰레드 리스트
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세하게 설명한다.
도 2a는 본 발명에 따른 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치의 구성도이다.
도 2a에 도시한 바와 같이, 모니터는 각 객체(101)와 연관되어 객체의 공유 락과 배타적 락을 관리한다. 객체의 공유 락과 배타적 락의 소유 관계는 다음과 같이 정의될 수 있다.
1) 공유 락과 배타적 락이 임의의 쓰레드에 의해 소유되어 있지 않은 경우, 공유 락 또는 배타적 락을 요구한 쓰레드는 요구한 락을 소유한다.
2) 배타적 락이 임의의 쓰레드에 의해 소유되어 있는 경우, 공유 락 또는 배타적 락을 요구한 쓰레드는 자신이 배타적 락을 소유하고 있는 경우를 제외하고, 요구한 락을 위한 대기 상태에 놓여진다.
3) 공유 락이 임의의 쓰레드에 의해 소유되어 있는 경우, 공유 락을 요구한 쓰레드는 동시에 공유 락을 소유할 수 있으나, 배타적 락을 요구한 쓰레드는 자신이 공유 락을 소유한 경우를 제외하고, 대기 상태로 놓여진다.
객체의 락을 소유한 쓰레드는 락과 관련된 모니터 영역의 수행을 마친 후, 해당 영역에서 얻은 모든 락을 해제시켜야 한다. 객체의 배타적 락은 기존의 자바가상머신의 동기화 방법을 지원하기 위한 것이며, 클래스 로더의 "verification" 단계 또는 처음 모니터 영역을 수행한 후, 기존의 바이트 코드나 메소드 구조의 정보를 본 발명에서 제안한 방법으로 대치한 후, 본 발명을 적용한 객체의 공유 락이 사용되어 진다.
모니터가 객체에 대한 공유 락을 소유하면, 객체의 락 테이블 인스턴스에서, 수행하려는 모니터 영역과 대응되는 엔트리에 대한 락인, 필드 락을 소유한다. 필드 락은 배타적 락으로써 동시에 하나의 쓰레드만 소유할 수 있으며, 이미 소유한 쓰레드는 중복되어 소유할 있다.
락 테이블 엔트리의 구성 방법들 중 하나는 다음과 같다. 즉, 락 테이블 엔트리들에 속한 필드들의 락은 서로 배타적이므로, 락 테이블의 엔트리를 필드들의 서로소 관계의 집합으로 구성함으로써, 이와 같이 구성하지 않을 경우에 각 필드에 대한 락을 수행함으로써 생기는 데드락(deadlock)을 방지할 수 있으며, 또한 각 필드 별로 락킹을 수행할 필요 없이 락 테이블 인스턴스의 엔트리에 대한 락을 소유함으로써 모니터 영역의 수행에 필요한 모든 필드의 락을 소유한 것이 된다.
도 2b는 상술한 도 2a의 필드 락 관리자(105)의 상세 구성도이다.
도 2b의 필드 락 관리자(105)는 객체의 클래스 락 테이블 인스턴스를 관리한다. 위에서 공유 락을 확보한 쓰레드는, 수행하려는 모니터 영역과 연관된 인덱스로 접근되는 락 테이블 인스턴스의 해당 엔트리의 락(필드 락)을 소유하여야 모니터 영역에 진입할 수 있으며, 그렇지 못한 경우에, 락 테이블 인스턴스의 해당 인덱스의 쓰레드 대기 리스트에 들어가 필드 락 관리자의 관리를 받게 된다.
필드 락 관리자(105)는 해당 필드 락이 해제 된 경우, 대기 쓰레드에게 락 허용 신호를 보내어 수행을 계속할 수 있도록 하는 역할을 하며, 다수의 대기 쓰레드가 존재할 경우에는 우선 순위에 따라 다음에 수행될 쓰레드를 선택한다.
락 테이블(103)은 자바 가상머신 내에 정의된 각 클래스와 연관되어 있고, 클래스의 객체(104)와 관련된 모니터 영역마다 대응되는 락 테이블 엔트리를 가지고 있으며, 락 테이블 엔트리는 대응되는 모니터 영역에서 참조되는 필드들의 리스트를 포함한다.
락 테이블의 구성은 다음 두 가지 과정 중에 적절한 부분에서 생성할 수 있다. 첫째는 클래스 파일의 "verification" 단계이며, 둘째는 모니터 영역을 처음 수행한 후이다. 이들 단계에서 자바 가상머신은 모니터 영역에서 배타적 락이 필요한 필드들의 정보를 알 수 있으므로, 이를 모니터 영역에 대응되는 락 테이블 엔트리로 만들어 추가시킬 수 있다. 단, 락 테이블의 엔트리들은 서로소의 관계가 되도록 구성될 수 있다. 예를 들어, 임의 객체의 모니터 영역 1에서 필드 A와 B를, 모니터 영역 2에서 필드 B와 C를, 모니터 영역 3에서 필드 D와 E를 참조한다면, 락 테이블은 두개의 엔트리로 구성되며, 인덱스 0의 엔트리는 필드 A, B, C를 포함하고 인덱스 1의 엔트리는 필드 C와 D를 포함하게 된다. 이렇게 구성함으로써 개별적인 필드 락을 수행할 경우에 발생 가능한 데드 락을 방지할 수 있으며, 필드 락 관리를 효율적으로 하게 된다.
락 테이블을 구성하는 또 다른 방법은 락 테이블의 엔트리를 모니터 영역에서 참조되는 필드들로만 구성하되, 자신의 모니터 영역과 대립되는, 즉, 자신의 모니터 영역에서 참조되는 같은 필드들의 참조가 필요한 다른 모니터 영역에 대한 엔트리들의 리스트를 가지도록 구성 할 수 있다. 이 경우에는, 락 테이블 인스턴스의 해당 엔트리의 락을 갖기 위하여 엔트리에 저장되어 있는 대립되는 엔트리들의 락이 사용 중인지를 검사하여야 한다.
모니터 영역은 동기화 구문과 동기화 메소드 등의 두 가지로 구분되는데, 이들 영역에 본 발명을 적용하기 위해서, 락 테이블의 구성과 함께 각 모니터 영역내에서 처리해야 하는 과정은 다음과 같다.
모니터 영역 중, "monitorenter(0xc2)"와 "monitorexit(0xc3)"의 인스트럭션 내에 포함된 동기화 구문에 대해서는, 우선 참조되는 객체의 클래스와 연관된 락 테이블에 대응되는 엔트리가 존재하지 않을 경우에는 새로 추가하고, "monitorenter"와 "monitorexit"를 본 발명에서 정의한 도 3의 인스트럭션인 "syncenter"와 "syncexit"로 변환한다. 이때, 락 테이블 엔트리에 대한 인덱스는 오퍼런드로 저장된다. 만약 락 테이블 엔트리의 인덱스가 0에서 3 사이의 값이라면, 도 3의 "syncenter_<n>"과 "syncexit_<n>"으로 변환할 수 있으므로 인덱스 오퍼런드를 따로 필요로 하지 않는다. 도 3에서 확장한 인스트럭션들은 자바가상머신 명세에 정의된 바이트코드들 중에서 예약된 코드나 구현에 의존하는 코드(0xfe와 0xff)를 사용할 수 있으므로 자바 외부 환경에는 전혀 영향을 미치지 않게 된다.
모니터 영역의 다른 하나인 동기화 메소드는 메소드의 한정자(qualifier)를 통해 동기화 메소드인지를 판단하게 되며, 별개의 "monitorenter" 또는 "monitorexit"등의 인스트럭션은 사용하지 않는다. 따라서, 동기화 메소드인 것으로 판단되면, 메소드 내부는 모두 동기화 영역으로 간주되므로 이 영역에 대응되는 락 테이블 엔트리가 존재하지 않을 경우 새로 생성하고, 메소드가 불리워진 객체의 클래스와 연관된 락 테이블에 추가한다. 동기화 메소드와 연관된 락 테이블 엔트리의 인덱스는 가상머신이 관리하는 메소드 자료 구조와 함께 저장된다.
이하, 도 4를 참조하여 본 발명을 적용한 모니터 영역의 수행 과정을 구체적으로 살펴보면 다음과 같다.
인스트럭션을 디코드하여 모니터 영역의 시작인지를 판단한다(S402). 모니터 영역인 경우는 인스트럭션이 "syncenter" 또는 "syncenter_<n>"이거나 동기화 메소드를 호출하는 인스트럭션인 경우이다.
모니터 영역을 수행하기 위해서는 참조되는 객체의 공유 락을 소유한다(S403).
객체의 공유 락을 소유하지 못한 경우에 쓰레드는 락 허용 신호를 받을 때까지 대기 상태에 있게 된다(S404).
공유 락을 소유한 쓰레드는 인덱스 정보를 이용하여 락 테이블 인스턴스의 해당 엔트리에 대한 필드 락킹을 수행한다(S405).
해당 필드 락을 소유하지 못한 경우에는 해당 필드 락을 위한 대기 상태에 놓여지며, 필드 락 관리자로부터 락 허용 신호를 받을 때까지 대기 상태에 있게 된다(S406).
필드 락을 소유한 쓰레드는 모니터 영역의 코드들을 수행시킬 수 있다(S407)(S408).
"syncexit" 또는 "syncexit_<n>"과 메소드의 수행을 끝마침으로써 모니터 영역을 빠져나가게 되면(S409), 쓰레드는 현재 모니터 영역의 수행을 위해 소유한 락 테이블 인스턴스의 엔트리 락, 즉, 해당 필드 락을 해제시키고(S410), 객체의 공유 락을 해제시킨다(S411).
본 발명에 의하면, 자바가상머신의 락 단위를 객체에서 객체의 필드까지 세분화하여 운용할 수 있는 장치 및 방법을 제공하고, 이를 자바가상머신의 하부 구조로써 활용하는 바, 자바가상머신 외부 사용자에게 영향을 미치지 않고, 멀티 쓰레드 또는 멀티 프로세서 시스템의 동시성을 향상시킬 수 있는 효과가 있다.이상, 본 발명을 실시예에 근거하여 구체적으로 설명하였지만, 본 발명은 이러한 실시예에 한정되는 것이 아니라, 그 요지를 벗어나지 않는 범위내에서 여러 가지 변형이 가능한 것은 물론이다.

Claims (6)

  1. 삭제
  2. 자바 가상머신(java virtual machine)에서 동기화 단위를 객체에서 객체의 필드로 세분화하기 위한 멀티 쓰레드(threads) 시스템에서의 동기화 장치에 있어서,
    각 객체와 연관되어 상기 객체의 공유 락(lock)과 배타적 락의 유효 여부에 관한 정보 및 상기 객체가 속한 클래스의 락 테이블을 참조하는 모니터와,
    상기 클래스의 객체가 속한 각각의 모니터 영역에서 참조하는 필드들로 이루어지는 엔트리로 구성되되, 각각의 엔트리에 속한 필드들의 집합이 서로소가 되도록 구성되는 상기 자바 가상머신내의 각 클래스와 연관된 락 테이블과,
    상기 객체의 락 테이블 인스턴스와,
    상기 객체의 필드 락의 유효 여부와 쓰레드의 대기 리스트를 관리하는 필드 락 관리자
    를 포함하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치.
  3. 자바 가상머신에서 동기화 단위를 객체에서 객체의 필드로 세분화하기 위한 멀티 쓰레드 시스템에서의 동기화 장치에 있어서,
    상기 자바 가상머신내의 각 클래스와 연관된 락 테이블과,
    각 객체와 연관되어 상기 객체의 공유 락과 배타적 락의 유효 여부에 관한 정보 및 상기 객체가 속한 클래스의 락 테이블을 참조하는 모니터와,
    상기 객체의 락 테이블 인스턴스와,
    상기 객체마다 구비되고, 상기 클래스의 락 테이블 인스턴스를 관리하여 필드 락 획득에 실패한 쓰레드가 존재하는 경우 상기 쓰레드를 해당 엔트리의 대기 리스트에 포함시켜 관리하며, 상기 필드 락이 해제된 경우 해제된 필드가 포함된 엔트리의 대기 리스트에 있는 쓰레드로 락 허용 신호를 전송하는 필드 락 관리자
    를 포함하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치.
  4. 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법에 있어서,
    인스트럭션을 디코드하여 모니터 영역(monitor region)의 시작인지를 판단하는 제 1 단계와;
    상기 제 1 단계의 판단 결과, 모니터 영역인 경우, 임의의 쓰레드에서 객체의 공유 락을 소유하는지를 판단하는 제 2 단계와;
    상기 제 2 단계의 판단 결과, 상기 쓰레드에서 상기 객체의 공유 락을 소유하지 못한 경우, 락 허용 신호를 받을 때까지 상기 쓰레드를 대기 상태에 두는 제 3 단계와;
    상기 제 2 단계의 판단 결과, 상기 쓰레드에서 상기 객체의 공유 락을 소유한 경우, 소정 인덱스 정보를 이용하여 락 테이블 인스턴스의 해당 엔트리에 대한 필드 락을 소유하는지를 판단하는 제 4 단계와;
    상기 제 4 단계의 판단 결과, 상기 쓰레드에서 해당 필드 락을 소유하지 못한 경우, 필드 락 관리자로부터 락 허용 신호를 받을 때까지 상기 쓰레드를 대기 상태에 두는 제 5 단계와;
    상기 제 4 단계의 판단 결과, 상기 쓰레드에서 해당 필드 락을 소유한 경우, 상기 쓰레드를 통해 상기 모니터 영역의 코드들을 디코드하도록 하는 제 6 단계를 포함하는 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
  5. 제 4 항에 있어서,
    상기 방법은,
    상기 제 6 단계의 상기 모니터 영역의 디코드 과정을 마친 후, 현재 모니터 영역의 수행을 위해 소유한 락 테이블 인스턴스의 해당 필드 락을 해제하고, 상기 객체의 공유 락을 해제하는 단계를 더 포함하는 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
  6. 제 4 항에 있어서,
    상기 모니터 영역은, 상기 인스트럭션이 "syncenter" 또는 "syncenter_<n>"이거나 동기화 메소드(method)를 호출하는 경우인 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
KR10-2001-0086930A 2001-12-28 2001-12-28 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 KR100439186B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2001-0086930A KR100439186B1 (ko) 2001-12-28 2001-12-28 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법
US10/178,557 US20030126187A1 (en) 2001-12-28 2002-06-25 Apparatus and method for synchronization in a multi-thread system of JAVA virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0086930A KR100439186B1 (ko) 2001-12-28 2001-12-28 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법

Publications (2)

Publication Number Publication Date
KR20030056656A KR20030056656A (ko) 2003-07-04
KR100439186B1 true KR100439186B1 (ko) 2004-07-05

Family

ID=19717788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0086930A KR100439186B1 (ko) 2001-12-28 2001-12-28 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법

Country Status (2)

Country Link
US (1) US20030126187A1 (ko)
KR (1) KR100439186B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190136258A (ko) 2018-05-30 2019-12-10 주식회사 티파이브온라인 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7209918B2 (en) * 2002-09-24 2007-04-24 Intel Corporation Methods and apparatus for locking objects in a multi-threaded environment
CA2430763A1 (en) * 2003-05-30 2004-11-30 Ibm Canada Limited - Ibm Canada Limitee Efficiently releasing locks when an exception occurs
US7380073B2 (en) * 2003-11-26 2008-05-27 Sas Institute Inc. Computer-implemented system and method for lock handling
CA2453714A1 (en) * 2003-12-19 2005-06-19 Ibm Canada Limited - Ibm Canada Limitee Method, system and product for indentifying and executing locked read regions and locked write regions in programming languages that offer synchronization without explicit means to distinguish between such regions
KR100654428B1 (ko) * 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
US7665077B2 (en) * 2004-10-18 2010-02-16 Microsoft Corporation System and method for sharing objects between applications in a virtual runtime environment
JP4486483B2 (ja) * 2004-11-26 2010-06-23 古野電気株式会社 Tdma通信装置
US8429629B2 (en) 2005-11-30 2013-04-23 Red Hat, Inc. In-kernel virtual machine for low overhead startup and low resource usage
US8104034B2 (en) * 2005-11-30 2012-01-24 Red Hat, Inc. Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage
US8612970B2 (en) * 2005-11-30 2013-12-17 Red Hat, Inc. Purpose domain for low overhead virtual machines
KR100763200B1 (ko) * 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR101235414B1 (ko) * 2006-08-18 2013-02-20 엘지전자 주식회사 데이터 방송 수신기에서 스레드 관리 방법
US8918798B2 (en) * 2008-08-29 2014-12-23 Red Hat, Inc. Shared object lock under state machine control
US8402464B2 (en) * 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US9213586B2 (en) * 2009-03-18 2015-12-15 Sas Institute Inc. Computer-implemented systems for resource level locking without resource level locks
US8572617B2 (en) 2009-07-21 2013-10-29 Sas Institute Inc. Processor-implemented systems and methods for event handling
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9898350B2 (en) * 2015-03-20 2018-02-20 EMC IP Holding Company LLC Techniques for synchronizing operations performed on objects

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0889396A1 (en) * 1997-06-30 1999-01-07 Sun Microsystems, Inc. Thread synchronisation via selective object locking
EP0955584A2 (en) * 1998-05-06 1999-11-10 Sun Microsystems, Inc. Fast synchronization for programs written in the java programming language
US6108754A (en) * 1997-04-03 2000-08-22 Sun Microsystems, Inc. Thread-local synchronization construct cache
US6212608B1 (en) * 1996-11-04 2001-04-03 Sun Microsystems, Inc. Method and apparatus for thread synchronization in an object-based system
US6314563B1 (en) * 1999-02-05 2001-11-06 Sun Microsystems, Inc. Expedited object locking and unlocking
US6346671B1 (en) * 1997-08-29 2002-02-12 Alcatel Coaxial high-frequency cable

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852747A (en) * 1995-09-08 1998-12-22 International Business Machines Corporation System for awarding token to client for accessing first data block specified in client request without interference due to contention from other client
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212608B1 (en) * 1996-11-04 2001-04-03 Sun Microsystems, Inc. Method and apparatus for thread synchronization in an object-based system
US6108754A (en) * 1997-04-03 2000-08-22 Sun Microsystems, Inc. Thread-local synchronization construct cache
EP0889396A1 (en) * 1997-06-30 1999-01-07 Sun Microsystems, Inc. Thread synchronisation via selective object locking
US6346671B1 (en) * 1997-08-29 2002-02-12 Alcatel Coaxial high-frequency cable
EP0955584A2 (en) * 1998-05-06 1999-11-10 Sun Microsystems, Inc. Fast synchronization for programs written in the java programming language
US6314563B1 (en) * 1999-02-05 2001-11-06 Sun Microsystems, Inc. Expedited object locking and unlocking

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190136258A (ko) 2018-05-30 2019-12-10 주식회사 티파이브온라인 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법

Also Published As

Publication number Publication date
KR20030056656A (ko) 2003-07-04
US20030126187A1 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
KR100439186B1 (ko) 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법
US8473969B2 (en) Method and system for speeding up mutual exclusion
JP2566717B2 (ja) 条件付きオペレーション提供装置及び方法
US7451146B2 (en) Almost non-blocking linked stack implementation
JPH1165863A (ja) 共有資源管理方法
US20030004924A1 (en) Apparatus for database record locking and method therefor
JPH1131081A (ja) オブジェクトベースシステムにおけるスレッド同期を行う方法およびコンピュータシステム、並びに、そのためのコンピュータプログラム製品
JPH05134915A (ja) 共用データシステムにおけるデータ資源のロツキング方法及びシステム間のデータロツク管理方法
KR20010050426A (ko) 멀티 스레드 컴퓨터 환경에서 멀티 프로세스간의커뮤니케이터 설정
US8413163B2 (en) Program control device including per-timeslot switching of thread execution
JPH0784851A (ja) 共有データ管理方法
JPH1115793A (ja) 資源の保全性を保護する方法
US10102127B2 (en) Locks to enable updating data and a data replacement order in cache areas
KR20070095395A (ko) 멀티 프로세서 시스템 및 멀티 프로세서 시스템의 인터럽트 제어 방법을 컴퓨터에 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
KR101634403B1 (ko) 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들
US20070043916A1 (en) System and method for light weight task switching when a shared memory condition is signaled
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
JP2001265611A (ja) コンピュータシステム、メモリ管理方法、記憶媒体及びプログラム伝送装置
US8671248B2 (en) Architecture support of memory access coloring
US6430638B1 (en) Thread synchronization via selective object locking
JP2684993B2 (ja) プロセッサシステムとその制御方法
Spliet et al. Fast on average, predictable in the worst case: Exploring real-time futexes in LITMUSRT
WO2013022628A1 (en) System and method for supporting parallel threads in a multiprocessor environment
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
CN114327828B (zh) 一种共享数据的无锁并发访问方法、装置、设备及介质

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
FPAY Annual fee payment

Payment date: 20110609

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee