KR100439186B1 - 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 - Google Patents
자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Abstract
본 발명은 자바 가상머신(java virtual machine)의 멀티 쓰레드(threads) 시스템에서의 동기화 장치 및 방법에 관한 것으로, 자바 가상머신에서 쓰레드간의 동기화(thread synchronization) 구현에 사용되는 락(lock)의 단위를 객체에서 객체의 필드로 세분화함으로써 멀티 쓰레드 시스템의 동시성(concurrency)을 증가시키는 기술에 관한 것이다. 자바 가상머신에서 쓰레드가 동기화 구문 또는 동기화 메소드(method)를 수행하기 위한 모니터 영역(monitor region)에 진입하려면, 객체에 대한 락을 소유하여야 하는데, 이러한 경우, 해당 쓰레드가 객체의 일부분에만 접근이 필요한 경우에도, 객체 전체에 대한 락을 얻어야 수행을 계속할 수 있으며, 락을 얻지 못하면 락을 얻기 위한 대기 상태로 들어가야 하므로, 이 과정 중에 시스템의 성능을 저하시킬 수 있는 오버헤드를 초래하게 된다. 본 발명은, 동기화를 위한 락킹 대상을 객체의 필드 단위로 세분화하여 객체의 공유성을 증가시키고 바로 락을 얻을 수 있는 기회를 증가시키므로, 자바 가상머신의 멀티 쓰레드 시스템 또는 멀티프로세서 개발 시 하부 구조에 이용할 경우 시스템의 수행 속도를 향상시킬 수 있다. 또한, 자바 가상머신 명세의 예약된 바이트 코드를 확장하는 방법을 사용하므로 자바 가상머신 외부의 사용자에게 영향을 미치지 않는다.
Description
본 발명은 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 기술에 관한 것으로, 특히, 동기화 단위를 객체에서 객체 필드로 세분화하는데 적합한 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 및 방법에 관한 것이다.
자바 가상머신에서 객체는 논리적으로 각 모니터와 연관되어 있으며 모니터 영역을 수행하기 위해 동기화가 필요한 경우, 모니터를 통해 객체의 변수들을 보호하게 된다. 자바 가상머신에서 모니터는 배타적 락을 통해 구현되며, 동시에 하나의 객체에 대하여 하나의 쓰레드만이 객체의 락을 소유할 수 있다.
자바 프로그램에서 객체에 대한 락을 직접 명시하는 구문은 없으며 동기화 구문이나 동기화 메소드의 사용에 의해 모니터 영역이 설정되고, 자바 가상머신이 이들 영역을 수행시키기 위해 자동적으로 객체를 락킹하게 된다.
도 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)
- 삭제
- 자바 가상머신(java virtual machine)에서 동기화 단위를 객체에서 객체의 필드로 세분화하기 위한 멀티 쓰레드(threads) 시스템에서의 동기화 장치에 있어서,각 객체와 연관되어 상기 객체의 공유 락(lock)과 배타적 락의 유효 여부에 관한 정보 및 상기 객체가 속한 클래스의 락 테이블을 참조하는 모니터와,상기 클래스의 객체가 속한 각각의 모니터 영역에서 참조하는 필드들로 이루어지는 엔트리로 구성되되, 각각의 엔트리에 속한 필드들의 집합이 서로소가 되도록 구성되는 상기 자바 가상머신내의 각 클래스와 연관된 락 테이블과,상기 객체의 락 테이블 인스턴스와,상기 객체의 필드 락의 유효 여부와 쓰레드의 대기 리스트를 관리하는 필드 락 관리자를 포함하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치.
- 자바 가상머신에서 동기화 단위를 객체에서 객체의 필드로 세분화하기 위한 멀티 쓰레드 시스템에서의 동기화 장치에 있어서,상기 자바 가상머신내의 각 클래스와 연관된 락 테이블과,각 객체와 연관되어 상기 객체의 공유 락과 배타적 락의 유효 여부에 관한 정보 및 상기 객체가 속한 클래스의 락 테이블을 참조하는 모니터와,상기 객체의 락 테이블 인스턴스와,상기 객체마다 구비되고, 상기 클래스의 락 테이블 인스턴스를 관리하여 필드 락 획득에 실패한 쓰레드가 존재하는 경우 상기 쓰레드를 해당 엔트리의 대기 리스트에 포함시켜 관리하며, 상기 필드 락이 해제된 경우 해제된 필드가 포함된 엔트리의 대기 리스트에 있는 쓰레드로 락 허용 신호를 전송하는 필드 락 관리자를 포함하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치.
- 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법에 있어서,인스트럭션을 디코드하여 모니터 영역(monitor region)의 시작인지를 판단하는 제 1 단계와;상기 제 1 단계의 판단 결과, 모니터 영역인 경우, 임의의 쓰레드에서 객체의 공유 락을 소유하는지를 판단하는 제 2 단계와;상기 제 2 단계의 판단 결과, 상기 쓰레드에서 상기 객체의 공유 락을 소유하지 못한 경우, 락 허용 신호를 받을 때까지 상기 쓰레드를 대기 상태에 두는 제 3 단계와;상기 제 2 단계의 판단 결과, 상기 쓰레드에서 상기 객체의 공유 락을 소유한 경우, 소정 인덱스 정보를 이용하여 락 테이블 인스턴스의 해당 엔트리에 대한 필드 락을 소유하는지를 판단하는 제 4 단계와;상기 제 4 단계의 판단 결과, 상기 쓰레드에서 해당 필드 락을 소유하지 못한 경우, 필드 락 관리자로부터 락 허용 신호를 받을 때까지 상기 쓰레드를 대기 상태에 두는 제 5 단계와;상기 제 4 단계의 판단 결과, 상기 쓰레드에서 해당 필드 락을 소유한 경우, 상기 쓰레드를 통해 상기 모니터 영역의 코드들을 디코드하도록 하는 제 6 단계를 포함하는 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
- 제 4 항에 있어서,상기 방법은,상기 제 6 단계의 상기 모니터 영역의 디코드 과정을 마친 후, 현재 모니터 영역의 수행을 위해 소유한 락 테이블 인스턴스의 해당 필드 락을 해제하고, 상기 객체의 공유 락을 해제하는 단계를 더 포함하는 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
- 제 4 항에 있어서,상기 모니터 영역은, 상기 인스트럭션이 "syncenter" 또는 "syncenter_<n>"이거나 동기화 메소드(method)를 호출하는 경우인 것을 특징으로 하는 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190136258A (ko) | 2018-05-30 | 2019-12-10 | 주식회사 티파이브온라인 | 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법 |
Families Citing this family (19)
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)
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)
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 |
-
2001
- 2001-12-28 KR KR10-2001-0086930A patent/KR100439186B1/ko not_active IP Right Cessation
-
2002
- 2002-06-25 US US10/178,557 patent/US20030126187A1/en not_active Abandoned
Patent Citations (6)
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)
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 |