KR100437704B1 - 공간효율적인오브젝트로킹을위한시스템및방법 - Google Patents

공간효율적인오브젝트로킹을위한시스템및방법 Download PDF

Info

Publication number
KR100437704B1
KR100437704B1 KR1019960062295A KR19960062295A KR100437704B1 KR 100437704 B1 KR100437704 B1 KR 100437704B1 KR 1019960062295 A KR1019960062295 A KR 1019960062295A KR 19960062295 A KR19960062295 A KR 19960062295A KR 100437704 B1 KR100437704 B1 KR 100437704B1
Authority
KR
South Korea
Prior art keywords
lock
pointer
local
locked
global
Prior art date
Application number
KR1019960062295A
Other languages
English (en)
Other versions
KR970049519A (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
Priority claimed from US08/569,753 external-priority patent/US5701470A/en
Application filed by 선 마이크로시스템즈 인코퍼레이티드 filed Critical 선 마이크로시스템즈 인코퍼레이티드
Publication of KR970049519A publication Critical patent/KR970049519A/ko
Application granted granted Critical
Publication of KR100437704B1 publication Critical patent/KR100437704B1/ko

Links

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
    • 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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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/99944Object-oriented database structure
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Lock And Its Accessories (AREA)

Abstract

본 발명은 다수의 오브젝트 및 다수의 과정을 저장하는 메모리를 가진 멀티스레드 컴퓨터 시스템에 관한 것이다. 각각의 오브젝트는 로크 또는 언로크 상태에 대한 로크 상태를 가지며 데이터 구조에 대한 데이터 포인터를 포함한다. 시스템은 로크된적이 없는 오브젝트와 최근에 로크되지 않는 오브젝트상의 로크 요구를 처리하기 위해 전역 오브젝트 로킹 과정을 이용하며, 로크된 오브젝트와 최근에 로크된 오브젝트상의 로크 요구를 처리하기 위해 지역 오브젝트 특정 로킹 과정을 이용한다. 전역 오브젝트 로킹 과정은 언로크된 특정 오브젝트의 로크 상태를 오브젝트의 언로크 상태로 변경하고 각각의 특정 오브젝트에 대한 지역 오브젝트 로킹 과정을 발생시키는 명령을 가진다. 지역 오브젝트 로킹 과정은 오브젝트의 로크 데이터를 기억하는 로크 데이터 서브어레이와 특정 오브젝트의 저장된 로크 데이터를 갱신하는 명령을 포함한다. 시스템의 불필요한 정보 수집 과정이 실행될 때 수행되는 로크 데이터 클린업(clean-up) 과정은 만일 오브젝트가 최근에 로크되지 않았다면 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제한다.

Description

공간 효율적인 오브젝트 로킹을 위한 시스템 및 방법
본 출원은 1995년 12월 8일에 출원된 출원번호 제 08/569,753호의 일부 연속출원이다.
본 발명은 일반적으로 실행을 위한 두 개 이상의 스레드가 오브젝트에 대해 동기될 수 있는 객체-지향 컴퓨터 시스템, 특히 대다수 또는 모든 오브젝트가 로크 가능하나 실제로는 일부 오브젝트만이 항상 로크되어 있는 시스템에서 로크 데이터 구조를 효과적으로 할당하기 위한 시스템 및 방법에 관한 것이다.
멀티프로세서 컴퓨터 시스템에 있어서, 소프트웨어 프로그램은 멀티프로세서 컴퓨터 시스템을 형성하는 프로세서상에서 병렬로 실행되는 스레드로 실행될 수 있다. 결과적으로, 프로그램은 공동 실행 스레드가 프로그램을 동시에 실행할 수 있기 때문에 다른 프로세서상에서 병렬로 실행될 수 있다. 더욱이, 만일 프로그램이 구성 프로세스로 분류될 수 있다면, 이러한 컴퓨터 시스템은 공동실행 스레드가 구성 프로세서를 병렬로 실행할 수 있기 때문에 프로그램을 매우 빠르게 실행할 수 있다. 단일 프로세서 멀티태스킹 컴퓨터 시스템은 멀티태스킹 운영체제 설계 분야의 당업자에게 잘 알려진 다양한 자원 스케줄링 메커니즘의 사용을 통해 실행을 위한 다중 스레드를 동시에 가상으로 실행할 수 있다.
이러한 컴퓨터 시스템에서 프로그램 실행은 때때로 객체 지향적이다. 다시 말해서, 프로그램을 실행하는 스레드는 특정 기능을 수행하기 위해 오브젝트의 방법을 호출할 수 있다. 그러나, 몇몇의 오브젝트의 몇몇의 방법은 하드웨어 또는 소프트웨어가 컴퓨터 시스템을 제한하기 때문에 한번에 단지 한가지로만 실행될 수 있다. 예를 들어, 오브젝트는 한번에 하나의 스레드에 의해 하나의 액세스만을 조절할 수 있는 I/O 장치와 같은 공용 컴퓨터 자원에 액세스를 요구할 수 있다. 따라서, 공동 실행 스레드가 이러한 오브젝트를 호출하기 위해 공동 작용으로 탐색할 수 있기 때문에, 이 오브젝트는 하나의 오브젝트에 하나의 스레드가 배타적으로 사용될 수 있도록(즉, 한번에 단지 하나의 스레드만이 오브젝트상의 로크를 소유할 수 있다), 한번에 단지 하나의 스레드와 동기되어야 한다.
종래에는 오브젝트와 스레드를 동기시키기 위해 다양한 방법이 사용되었다. 이들 방법은 무텍스(mutexe), 조건변수 및 모니터와 같은 동기화 구성체의 사용을 포함한다. 모니터를 사용할 때, 각각의 모니터는 오브젝트를 소유하는 스레드와 오브젝트를 소유하기 위해 대기중인 임의의 스레드를 식별한다. 그러나, 이들 모니터를 사용하는 컴퓨터 시스템에는 모든 동기화 가능한 오브젝트용 모니터가 존재한다. 결과적으로, 이 방법은 대용량의 메모리를 요구하는 단점을 가진다.
이들 모니터에 의해 요구된 메모리를 감소시키기 위한 단순한 방법은 모니터의 캐시를 할당하며 모니터의 동작중에 캐시의 해시 룩업 테이블을 실행시키는 것이다. 이러한 방법은 모니터 동작의 오버헤드를 증가시키며 속도를 떨어뜨릴 수 있다.
본 발명의 목적은 로크가능한 동안 로크되지 않는 오브젝트에 대한 로크 데이터 구조용 메모리 자원의 할당을 막기 위해 로크 데이터에 대해 공간이 할당되는 오브젝트 로킹 시스템을 제공하는 것이다.
본 발명의 다른 목적은 자주 사용된 오브젝트에 대해 계산 오버헤드가 부가되지 않으며, 로크된 오브젝트의 수에 비례하는 기억 자원을 사용하는 로크 데이터할당 시스템 및 방법을 제공하는 것이다.
도 1은 본 발명의 바람직한 실시예를 통합하는 컴퓨터 시스템의 블록도.
도 2는 로크 데이터 서브어레이에 할당되지 않은 오브젝트에 대한 데이터 구조의 블록도.
도 3은 로크 데이터 서브어레이가 본 발명의 바람직한 실시예에 할당된 오브젝트에 대한 데이터 구조의 블록도.
도 4 및 도 5는 오브젝트를 로크하기 위한 과정의 순서도.
도 6은 로크 데이터 클린업 방법의 순서도.
도 7은 로크 데이터 클린업 방법의 순서도.
* 도면의 주요부분에 대한 부호의 설명 *
100 : 분산 컴퓨터 시스템 105 : CPU
200 : 로크되지 않은 데이터 구조 218 : 특정 클래스 오브젝트
240 : 로크된 오브젝트에 대한 데이터 구조
요약하면, 본 발명은 다수의 오브젝트 및 다수의 과정을 기억하는 메모리를 가진 멀티스레드 컴퓨터 시스템에 관한 것이다. 각각의 오브젝트는 로크 또는 언로크에 대한 로크 상태를 가진다. 데이터 구조에 대한 데이터 포인터 및 방법 어레이에 대한 방법 포인터로 이루어진 핸들로서 또는 오브젝트 데이터 구조에 대한 직접 포인터로서 표현될 수 있는 두가지의 방법이 존재하며, 상기 핸들의 제 1요소는 방법 어레이에 대한 방법 포인터이다. 본 발명에 있어서 표현된 차이는 중요하지 않다.
어느 한 경우에 있어서, 방법 어레이는 오브젝트에 대한 로크 및 언로크 과정을 포함한다. 각각의 오브젝트는 몇몇 클래스의 예이며, 그것의 방법 어레이로 저장된 이 클래스와 연관된 클래스 데이터 구조에 대한 데이터 기준을 가진다. 동일한 클래스의 인스턴스인 두 개의 오브젝트는 그것에 동일한 기준을 가진 클래스 데이터 구조를 공유한다. 이 클래스 데이터 구조는 이 클래스와 연관된 영구히 할당된 클래스 로크 데이터 구조를 포함하며, 이 클래스 로크 데이터 구조는 다른 방식으로 로크 데이터 구조를 가지지 않는 오브젝트에 대한 수정 동기화를 위해 사용될 수 있다.
이 시스템은 로크 데이터 서브어레이에 할당되지 않는 오브젝트(즉, 로크되지 않는 오브젝트 및 최근에 로크되지 않았던 오브젝트)상에서 로크 요구를 처리하기 위해 로크 과정으로서 단일 전역 오브젝트 로킹 과정을 사용하며, 로크 데이터서브어레이에 할당되는 오브젝트(즉, 로크된 오브젝트 및 최근에 로크되었던 오브젝트)상에서 로크 요구를 처리하기 위한 로크 처리 과정으로서 지역 오브젝트 특정 로킹 과정을 사용한다.
전역 오브젝트 로킹 과정은 특히 로크될 오브젝트에 대한 지역 오브젝트 로킹 과정을 만드는 명령을 가진다. 지역 오브젝트 특정 로킹 과정은 로크 데이터를 기억하기 위해 전용 데이터로서 로크 데이터 서브어레이를 포함한다. 지역 오브젝트 특정 로킹 과정은 오브젝트의 기억된 로크 데이터를 갱신하는 명령을 가진다. 시스템의 불요 정보 정리 과정이 시행될 때 수행되는 로크 데이터 클린업 과정은 만일 오브젝트가 최근에 로크되지 않았다면 지역 오브젝트 특정 로킹 과정을 위해 사용된 메모리를 해제한다.
바람직한 실시예에 있어서, 로크 데이터 서브어레이에 할당되지 않는 각각의 오브젝트는 전역 오브젝트 로킹 과정을 포함하는 한 세트의 과정을 참조하는 방법 포인터를 가지며, 이러한 오브젝트는 결코 로크된 상태에 있지 않는다. 지역 오브젝트 특정 로킹 과정에 할당되지 않는 각각의 오브젝트는 그것의 지역 오브젝트 특정 로킹 과정을 포함하는 한 세트의 과정을 참조하는 방법 포인터를 가진다. 더욱이, 전역 오브젝트 로킹 과정은 지역 오브젝트 특정 로킹 과정을 포함하는 한 세트의 과정을 가리키기 위해 특정 오브젝트 방법 포인터를 갱신하는 명령을 포함한다.
로크 데이터 클린업 과정은 특정 오브젝트가 최근에 로크되지 않은 것을 특정 오브젝트 갱신 로크 데이터가 지지할 때 동작되어, 전역 오브젝트 로킹 과정을 포함하는 한 세트의 과정을 가리키기 위해 특정 오브젝트 방법 포인터를 변화시키는 명령을 포함한다.
특히, 바람직한 실시예에 있어서 컴퓨터 시스템은 한 세트의 오브젝트 클래스를 포함하며, 각각의 오브젝트 클래스는 오브젝트 클래스와 연관된 한 세트의 방법을 참조하는 포인터와 전역 오브젝트 로킹 과정을 참조하는 포인터를 포함하는 가상 함수 테이블(VFT)을 포함한다. 최근에 로크되지 않은 각각의 오브젝트는 대응하는 오브젝트 클래스에 대한 VFT를 참조하는 방법 포인터를 가진다.
최근에 로크되지 않은 각각의 오브젝트에 대해, 시스템은 그 오브젝트 클래스와 연관된 한 세트의 방법을 참조하는 포인터와 오브젝트의 지역 오브젝트 로킹 과정을 참조하는 포인터를 포함하는 오브젝트 특정 가상 함수 테이블(VFT)을 저장한다. 전역 오브젝트 로킹 과정은 오브젝트 특정 VFT를 만들며 그것의 오브젝트 특정 VFT를 참조하기 위해 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함한다.
제 1도에는 다중 클라이언트 컴퓨터(102) 및 다중 서버 컴퓨터(104)를 가진 분산 컴퓨터 시스템(100)이 도시되어 있다. 바람직한 실시예에 있어서, 각각의 클라이언트 컴퓨터(102)는 비록 다른 형태의 통신 접속부가 사용될 수 있을지라도 인터넷(103)을 통해 서버(104)에 접속된다. 대부분의 클라이언트 컴퓨터가 선 워크스테이션, IBM 호환 컴퓨터 및 매킨토시 컴퓨터와 같은 탁상용 컴퓨터인 반면에, 실제적으로 탁상용 컴퓨터가 아닌 다른 컴퓨터일 수 있다. 바람직한 실시예에 있어서, 각각의 클라이언트 컴퓨터는 CPU(105), 통신 인터페이스(106), 사용자 인터페이스(107) 및 메모리(108)를 포함한다. 메모리(108)는 다음과 같은 것, 즉
· 운영체제(109);
· 인터넷 통신 관지라 프로그램(110);
· 특정 프로그램이 임의의 소정 보전성(integrity) 기준을 만족하는지의 여부를 검사하기 위한 바이트코드 프로그램 검사장치(112);
· 응용 프로그램을 실행하는 바이트코드 프로그램 인터프리터(114);
· 오브젝트 클래스를 사용자 어드레스 공간으로 로드하며 각각의 로드된 오브젝트 클래스와 연관된 방법의 보전성을 검사하기 위해 바이트코드 프로그램 검사장치를 이용하는 클래스 로더(116);
·사용중에 오브젝트 클래스(122)를 지역적으로 저장하고, 및/또는 컴퓨터(102)의 사용자가 사용할 수 있는 적어도 하나의 클래스 저장소(120); 및
오브젝트 저장소(120)에 저장된 오브젝트 클래스의 오브젝트에 대한 인스턴스인 오브젝트(126)를 저장하는 적어도 하나의 오브젝트 저장소(124)를 저장한다.
바람직한 실시예에 있어서, 운영체제(109)는 각각의 제한된 어드레스 공간내에서 다중 스레드 실행을 지원하는 객체-지향 멀티태스킹 운영체제이다. 운영체제는 해제된 데이터 구조와 연관된 기억장치를 복구하기 위해 불요 정보 정리(garbage collection) 과정을 이용한다. 불요 정보 정리 과정은 주기적으로 자동적으로 실행되며, 할당을 위한 이용가능한 메모리 용량이 임계레벨이하로 떨어질 때 추가시간에 자동적으로 호출된다. 실제적으로 소수의 오브젝트가 항상 로크되어 있을지라도, 본 발명에서는 시스템(109)의 모든 오브젝트가 로크가능한 오브젝트인 것으로 가정된다.
클래스 로더(116)는 적절한 오브젝트 클래스의 오브젝트가 발생하도록, 사용자가 실행과정을 초기화할 때 호출된다. 클래스 로더(116)는 적절한 오브젝트 클래스를 로드하며 로드된 오브젝트 클래스에서 모든 바이트코드 프로그램의 보전성을 검사하기 위해 바이트코드 프로그램 검사장치(112)를 호출한다. 만일 모든 방법이 성공적으로 검사된다면, 오브젝트 클래스의 오브젝트 인스턴스가 발생되며, 바이트코드 인터프리터(114)는 전형적으로 방법이라 불리는 사용자 요구 과정을 실행하기 위해 호출된다. 만일 사용자에 의해 요구된 과정이 바이트코드 프로그램이 아니며 넌-바이트코드 프로그램의 실행이 허용되지 않는다면(본 발명의 범위밖에 있음), 프로그램은 컴파일된 프로그램 실행자(도시안됨)에 의해 실행된다.
클래스 로더는 실행 바이트코드 프로그램이 사용자 어드레스 공간으로 로드되지 않은 오브젝트 클래스의 오브젝트 방법에 대한 호출을 만날때마다 호출된다. 클래스 로더(116)는 적절한 오브젝트 클래스로 로드하며 로드된 오브젝트 클래스의 모든 바이트코드 프로그램의 보전성을 검사하기 위해 바이트코드 프로그램 검사장치(112)를 호출한다. 다양한 상황에 있어서, 오브젝트 클래스는 도 1에 도시된 서버(104) 중 한 서버와 같은 원격 배치된 컴퓨터로부터 로드될 수 있다. 만일 로드된 오브젝트 클래스의 모든 방법이 성공적으로 검사된다면, 오브젝트 클래스의 오브젝트 인스턴스가 발생되며, 바이트코드 인터프리터(114)는 호출된 오브젝트 방법을 실행하기 위해 호출된다.
동기된 방법은 시스템 자원을 동시에 사용할 수 있는 실행 스레드(이하 스레드라 칭함)의 수를 제한하기 위해서 로킹방법을 사용하는 단계를 포함하는 방법으로 정의된다. 일반적인 대부분의 동기 툴은 무텍스이며, 이 무텍스에 의해 단일 스레드만이 임의의 시간에 특정 시스템 자원을 사용할 수 있으며, 이 무텍스는 자원을 사용하기 위해 대기 실행 스레드를 추적하는 메커니즘을 포함한다. 여기에 기술된 동기화 메커니즘이 무텍스 형태의 로킹 메커니즘인 반면에, 본 발명의 방법은 다른 동기 메커니즘을 가진 컴퓨터 시스템에 응용할 수 있으며 신호장치 및 시간에 기초한 로크만료를 포함하나 이에 제한되지 않는다.
바람직한 실시예에 있어서, 동기된 방법은 특정 오브젝트로 항상 동기된다. 예를 들어, 다중 스레드는 특정 오브젝트에 의해 표현된 시스템 자원의 배타적인 사용을 요구하는 동기방법을 실행할 수 있다. 스레드 중 하나가 오브젝트상에 로크를 소유하고 있으면, 오브젝트상에서 로크 소유를 요구하는 다른 모든 스레드는 이전 스레드들이 오브젝트상에서 로크를 소유하고나서 로크를 해제할 때까지 대기 하여야한다.
언로크 및 로크된 오브젝트에 대한 데이터 구조
도 2는 본 발명의 선호되는 실시예에서 최근에 로크되지 않은 데이터 구조(200)를 도시한다. 이하에 기술되는 것처럼, 모든 이러한 오브젝트는 언로크되며 로크 데이터 서브어레이에 할당되지 않는다. 바람직한 한 실시예에 있어서, 용어 "오브젝트 X가 최근에 로크되지 않음"은 운영체제에 의한 최종 불요 정보 정리 사이클 이후로 오브젝트 X가 로크되지 않은 것을 의미한다. 다른 바람직한 실시예에 있어서, 용어 "최근"은 불요 정보 정리 과정의 실행을 제외한 컴퓨터 시스템의 다른 주기적인 종속 이벤트 이후로 임의의 시간수와 같은 소정의 시간량 또는 시간의 주기로서 정의될 수 있다.
오브젝트 클래스A의 오브젝트는 오브젝트의 방법에 대한 포인터(204)와 오브젝트의 데이터 어레이(208)에 대한 포인터(206)를 포함하는 오브젝트 핸들(202)을 가진다.
오브젝트 방법에 대한 포인터(204)는 연관된 오브젝트 클래스의 방법에 대한 간접 포인터이다. 특히, 방법 포인터(204)는 오브젝트의 오브젝트 클래스에 대한 가상 함수 테이블(VFT)(210)을 지시한다. 각각의 오브젝트 클래스는 (A) 오브젝트 클래스의 각각의 방법(214)에 대한 포인터(212)와, (B) 오브젝트를 스레드와 동기시키는 전역 로크방법(전역로크1)(216)에 대한 포인터(215)와, (C) 특정 클래스 오브젝트(218)에 대한 포인터(217)와, (D) 로크 모니터를 해제하는 언로크 방법(221)에 대한 포인터(220)를 포함하는 VFT(210)을 가진다. 각각의 정의된 오브젝트 클래스에 대해 하나의 클래스 오브젝트(218)가 존재하며, 클래스 오브젝트는 클래스에 대해 영구적으로 할당된 로크 데이터 서브어레이(때때로 로크 모니터라 불림)(219)를 포함한다. 클래스 오브젝트(218)는 대응하는 오브젝트 클래스의 인스턴스인 모든 오브젝트의 로크 데이터 서브어레이에 대한 액세스를 동기시키기 위해 사용된다.
도 2에 도시된 것처럼, 얼마나 많은 오브젝트 클래스A의 오브젝트들이 존재 하는지와는 무관하게, 전체 오브젝트 클래스A에 대해 오직 하나의 VFT(210) 및 오브젝트 방법(214)의 카피가 존재한다. 더욱이, 전역 로크 방법(전역로크1)(216) 및 언로크 방법(221)은 오브젝트 클래스의 상부에 있는 오브젝트 클래스인 "오브젝트"오브젝트 클래스의 방법들이다.
전역 로크1 방법(216)은 로크 데이터 서브레이에 할당되지 않은 오브젝트와 동기시키기 위해 스레드에 의한 요구를 처리하는데 사용된다. 언로크 방법(221)은 오브젝트와 동기되지 않도록 하기 위해 스레드에 의한 요청을 처리하는데 사용된다. 언로크 방법(221)은 특정 오브젝트 모니터의 현재 소유자를 제거하고, 만일 특정 오브젝트 모니터상에서 대기하는 스레드가 존재하지 않는다면 로크 상태를 언로크 상태로 세팅하며, 그렇지 않으면 로크 상태를 로크로 유지하면서 최상위 대기 스레드를 특정 오브젝트 모니터의 소유자로 지정하는 기존의 방식으로 동작한다.
도 2는 "오브젝트" 오브젝트 클래스가 오브젝트로부터 로크 데이터 서브어레이를 재요구하는 로크 데이터 클린업 방법이라 불리는 제 2로크 방법(222)을 포함하는 것을 도시한다. 스레드 로크 방법(216, 221, 222)이 본 발명의 방법을 사용하여 모든 시스템에서 이용가능한 오브젝트 클래스의 방법으로서 실행될 수 있으며 "오브젝트" 오브젝트 클래스 부분을 필요로하지 않는다.
도 3은 본 발명의 실시예에서 로크된 오브젝트에 대한 데이터 구조(240)를 도시한다. 이는 최근에 로크되어 로크 데이터 서브어레이에 할당되는 임의의 오브젝트에 대한 데이터 구조이다. 오브젝트 클래스A의 로크된 오브젝트는 오브젝트의 방법에 대한 포인터(244)와 오브젝트의 데이터 어레이(208)에 대한 포인터(246)를 포함하는 오브젝트 핸들(242)을 가진다.
최근에 로크된 오브젝트의 방법 포인터(244)는 가상 함수 테이블(250)(VFT, A-01)의 오브젝트 특정 버전을 지시한다. 할당된 로크 데이터 서브어레이를 가진각각의 오브젝트는 다음과 같은 것, 즉 (A) 오브젝트 클래스의 각각의 방법(214)에 대한 포인터(212)와, (B) 오브젝트를 스레드에 동기시키기 위해 사용되는 지역 오브젝트 특정 로킹 과정(지역로크2)(260)에 대한 포인터(256)와, (C) 특정 클래스 오브젝트(218)에 대한 포인터(217)와, (D) 로크 포인터를 해제하는 언로크 방법에 대한 포인터(220)를 포함하는 특정 VFT(VFT, A-01)(250)을 가진다. 각각의 정의된 오브젝트 클래스에 대해 하나의 클래스 오브젝트(218)가 존재하고, 클래스 오브젝트는 영구히 할당된 로크 데이터 서브어레이(로크 모니터로 언급됨)(219)를 포함한다.
지역 오브젝트 특정 로킹 과정(260)은 로크된 오브젝트 및 최근에 로크되지 않은 오브젝트상의 로크 요구를 처리하기 위해 사용된다. 지역 오브젝트 특정 로킹 과정(260)은 로크 데이터를 저장하기 위해 전용 데이터로서 로크 데이터 서브어레이를 포함한다. 특히 지역 오브젝트-특정 로킹 과정은 오브젝트 저장 로크 데이터를 갱신하는 명령들을 가지고 있다. 지역 오브젝트 특정 로킹 과정(260)은 대응하는 오브젝트를 스레드에 동기시키고 대응하는 로크정보를 오브젝트 로크 데이터 서브어레이(249)에 저장하는 오브젝트 특정 로킹방법(지역 로크2)을 가진다.
로크 데이터 서브어레이(249)는 오브젝트 로크 상태 지시자, 로크 소유자 값 및 리스트의 대기자(즉 오브젝트와 동기되기 위해 대기하는 스레드)에 대한 리스트 헤더 및 리스트 테일을 포함한다. 바람직한 실시예에 있어서, 로크 상태 지시자는 오브젝트가 로크되었는지의 여부를 나타내는 제 1플래그 값(Lock flag)과 오브젝트가 최근에 로크되었는지의 여부를 나타내는 제 2플래그값(NotRecently Lockedflag)을 포함한다. 제 2플래그 값은 오브젝트가 최근에 로크되지 않았을 경우 세팅된다. 바람직한 실시예에 있어서, 제 2플래그 값은 로크 데이터 클린업 방법에 의해 세팅되며 전역로크1 및 지역 로크2 방법에 의해 클리어된다.
오브젝트 로킹방법
클라이언트 컴퓨터(102)와 같은 각각의 컴퓨터 시스템은 연관된 오브젝트 클래스를 각각 가진 많은 오브젝트를 포함한다. 모든 오브젝트는 그것의 연관된 오브젝트 클래스의 인스턴스로 언급된다. 각각의 오브젝트 클래스는 그것의 수퍼클래스로부터의 특성을 물려받으며, 모든 오브젝트 클래스는 "오브젝트" 오브젝트 클래스라 불리는 톱 레벨 오브젝트 클래스의 서브클래스이다.
특정 어드레스 공간에 존재하는 각각의 오브젝트 클래스에 대해, 오브젝트 클래스와 연관된 모든 방법의 리스트(즉, 실행가능한 과정) 뿐만아니라 각각의 이들 방법에 대한 포인터를 포함하는 가상 함수 테이블(VFT)이 존재한다. 도 2에 도시된 것처럼, 각각의 오브젝트 클래스에 대한 VFT는 "오브젝트" 오브젝트 클래스와 연관된 방법인 전역 로크1 방법에 대한 기준을 포함한다. 오브젝트가 로크 데이터 서브어레이에 할당되지 않을 때마다, 그것의 방법 포인터는 오브젝트의 오브젝트 클래스에 대한 디폴트 VFT를 지시한다.
본 발명의 제 1바람직한 실시예에 따르면, 각각의 오브젝트 클래스는 상기에서 제1 VFT로 언급되고, 때때로 "1차 VFT"로서 언급되는 제 1VFT로서 앞서 언급된 연관된 가상 함수 테이블을 가진다. 더욱이, 최근에 로크된 각각의 오브젝트에서, 시스템은 오브젝트 특정 가상 함수 테이블(VFT)을 만든다. 오브젝트 특정 VFT는 1차 VFT로 언급된 전역 로크 방법, 전역 로크1(216)과 다른 지역 로크방법, 지역로크2(260)를 참조한다.
테이블1, 2, 3 및 4는 본 발명에 관련한 전역 로크, 지역로크2 및 로크 데이터 클린업 소프트웨어 루틴의 의사코드 표현을 포함한다. 여기서 사용되는 의사코드는 범용 컴퓨터 언어 규정을 이용한다. 여기서 사용된 의사코드는 단지 본 발명을 설명하기 위해 발명되었으며, 공지된 임의의 컴퓨터 프로그래머에 의해 용이하게 디자인 될 수 있다.
도 4 및 테이블 1에 기술된 전역로크1 방법(216)에 대한 의사코드를 참조하면, 로크 데이터 서브어레이에 할당되지 않는 오브젝트가 동기된 방법 호출의 주체일 때, 오브젝트와 연관된 전역 로크방법(전역로크1)이 호출된다. 전역로크1 방법은 로크될 오브젝트와 연관된 클래스 오브젝트상의 로크를 요구하고 대기함으로서 시작한다(단계270). 전역 로크1 방법의 나머지는 전역로크1 방법 호출을 발생시키는 스레드가 클래스 오브젝트상의 로크를 포함할때까지 실행되지 않는다.
전역로크1 및 로크 데이터 클린업 방법은 동시발생에 의한 점유를 막기 위해서 클래스 오브젝트에 로크를 획득함으로서 동기화될 필요가 있다. 예를 들어 멀티프로세서 시스템에 있어서, 전역로크1 과정은 두 개의 프로세서에 의해 동일한 오브젝트상에서 동시에 호출될 수 있다. 예방조치가 취해지지 않는다면, 이는 오브젝트 특정 VFT들 및 두 개의 오브젝트 특정 지역 로크2 과정을 발생시킬 수 있다. 이러한 문제를 해결하기 위해서, 특정 오브젝트 내부 데이터 구조를 재배열하는 동안 특정 오브젝트의 형태에 대해 클래스 오브젝트를 로크하는 것이 전역로크1 및 로크데이터 클린업 과정에서 필요하다.
클래스 오브젝트상에 로크를 얻은후, 오브젝트가 로크되었는지의 여부가 검사된다. 오브젝트가 로크되었는지의 여부는 오브젝트 특정 로킹 과정 및 오브젝트 특정 VFT(단계 271)가 존재하는지 여부를 검사함으로서 확정된다. 오브젝트 특정 로킹 과정 및 오브젝트 특정 VFT가 존재하는 상황에서, 상기 방법은 단계(276)로 진행한다. 그렇지 않으면 전역로크(10) 방법은 전용 데이터로서 지역 로크 데이터 서브어레이(단계 272)를 포함하는 지역 오브젝트 특정 로킹 과정을 만든다. 전역 로크1은 로크 데이터 서브어레이에서 지역 소유자 스레드의 식별을 나타내는 데이터를 기억하고 제 2플래그값을 클리어함으로서 지역로크 데이터 서브어레이를 초기화한다. 더욱이, 전역로크1 방법은 오브젝트 특정 로킹 과정(단계272)을 참조하는 오브젝트에 대해 오브젝트 특정 VFT를 만든다. 다음에, 오브젝트의 방법 포인터는 오브젝트 특정 VFT를 지시하기 위해 변경된다. 더욱이, 클래스 오브젝트상의 로크는 해제된다(단계 276). 최종적으로, 지역 로킹 방법(지역로크2)가 호출된다(단계 278). 오브젝트의 방법 포인터의 변경 및 오브젝트 특정 VFT의 생성 때문에, 지역 로크2는 이 오브젝트상의 다음 동기요구를 처리하기 위해 자동적으로 호출될 것이다.
도 5 및 테이블 2에 제시된 지역로크 방법(260)에 대한 의사코드를 참조하면, 지역로크2 방법은 로크 데이터의 정상적인 갱신을 포함하는 수신된 동기화 요구를 처리하는 단계를 실행한다(단계 290). 더욱이, 지역로크2 방법에 대한 임의의 호출에 의해, 특정 오브젝트 NotRecently Locked flag는 클리어된다(단계300). 다른 실시예에 있어서, 특정 오브젝트 NotRecently Locked flag는 오브젝트가 동기화 요구가 처리된후 오브젝트가 로크된 로크 상태를 가지는 경우만 클리어된다. 지역로크2 방법은 지역로크 2 방법이 호출될때마다 특정 오브젝트(로크 처리의 주체)가 로크 데이터 서브어레이를 가진다는 것이 알려지기 때문에 간단하다.
일반적인 무텍스 동작동안, 만일 로크 처리요구(즉, 지역로크2 방법에 의해 요구가 처리됨)가 스레드에 의해 연관된 오브젝트와 동기화되고 오브젝트가 이미 로크되었다면, 스레드는 오브젝트에 대한 대기 스레드 리스트에 더해진다. 다른 방식으로, 만일 오브젝트가 언로크된다면, 스레드 요청은 로크 소유자가 되며 로크 상태는 로크되도록 변화된다.
언로크 방법(221)은 스레드에 의해 유지된 로크를 해제하기 위해 요구를 처리한다. 대기 스레드 리스트상의 최상부에 대기하는 스레드는 로크 소유자가 되고, 실행을 다시 시작하도록 허용된다. 만일 대기하는 스레드가 존재하지 않는다면, 로크 상태는 널 값으로 변경되는 로크 소유자 데이터와 거짓으로 리세팅된 로크 상태 플래그에 의해 단순히 지시될 수 있는 "언로크 상태"로 갱신된다.
지역로크2는 오브젝트가 언로크된후 그리고 오브젝트 로크 데이터 서브어레이가 로크 클린업 방법에 의해 할당해제될 때까지 오브젝트상의 모든 동기화 요구를 처리한다.
도 6은 오브젝트 특정 VFT 및 오브젝트 특정 로킹 과정에 대한 기억을 해제하는 로크 데이터 클린업 방법을 도시한다. 이 실시예는 로크 데이터 클린업 방법이 다른 동시 발생 스레드 동작과의 동기를 요구하지 않는 환경에 사용된다. 도 6및 테이블3에 제시된 로크 데이터 클린업 방법(222)에 대한 의사코드를 참조하면, 로크 데이터 클린업 방법은 불요 정보 정리 과정의 실행이 초기화될때마다 할당된 로크 데이터 서브어레이를 가진 모든 오브젝트를 검사하기 위해 불요 정보 정리 과정에 의해 호출된다. 대안적으로, 로크 데이터 클린업 방법은 불요 정보 정리 과정의 실행이 초기화될때마다 모든 오브젝트를 검사하기 위해 불요 정보 정리 과정에 의해 호출된다.
본 발명의 바람직한 실시예에 있어서, 임의의 오브젝트 로크 데이터 서브어레이가 두 개의 불요 정보 정리 과정 사이클사이의 시간주기동안 사용되지 않는다면, 이 오브젝트는 최근에 로크되지 않은 것으로 간주된다. 특히, 만일 오브젝트의 NotRecently Locked flag는 하나의 불요 정보 정리 사이클동안 로크 데이터 클린업 과정에 의해 참으로 세팅되고 다음 불요 정보 정리사이클에 참을 유지한다면, 이 오브젝트에 대한 로크 데이터 서브어레이(실제적으로, 오브젝트 특정 VFT 및 오브젝트 특정 지역 로크 과정)는 해제된다.
로크 데이터 클린업 과정은 호출과정에 의해 지정된 오브젝트가 지역 오브젝트 특정 로킹 과정을 가지는 지를 결정함으로서 개시한다(단계 302). 지역 오브젝트 특정 로크 과정의 존재는 재요구될 필요가 있는 기억이 존재하는 것을 나타내며, 그렇지 않으면 과정은 리턴한다. 다음에, 이 과정은 특정 오브젝트가 로크되었는지의 여부 또는 오브젝트가 적어도 하나의 대기 스레드를 가지는 지의 여부를 결정한다(단계 304). 이러한 조건은 사용의 필요성이 존재하기 때문에 오브젝트-특정 로킹 절차 및 VFT에 할당된 저장이 이 시간에 다시 요청될 필요가 없음을 나타낸다. 이같은 경우(단계 304-Y)에, 방법은 리턴한다.
그렇지 않으면, 오브젝트가 최근에 로크되었는지의 여부를 결정하기 위해 더 검사된다(단계306). 바람직한 실시예에 있어서, 오브젝트는 로크 데이터 서브어레이의 NotRecently Locked flag(최근에 로크되지 않은 플래그)가 참으로 세팅된다면 최근에 로크되지 않은 것으로 고려된다. 오브젝트는 그것이 로크 데이터 서브어레이를 가지고 NotRecently Locked flag가 거짓으로 세팅된 경우 최근에 로크된 것으로 고려된다.
만일 오브젝트가 최근에 로크되었다면 오브젝트에 대한 NotRecently Locked flag는 참으로 세팅되며(단계 308), 과정은 리턴된다. 단계(308)는 만일 로크 데이터 서브어레이가 그시간동안 비사용중을 유지한다면 다음의 불요 정보 정리 사이클동안 해제하기 위해 오브젝트 로크 데이터 서브어레이를 준비한다.
만일 오브젝트가 최근에 로크되지 않았다면, 지역 오브젝트 특정 로킹 과정 및 오브젝트 특정 VFT을 위해 할당된 기억은 해제된다(단계 310). 최종적으로, 오브젝트의 방법 포인터는 오브젝트의 클래스 오브젝트에 대한 1차 VFT로 세팅된다(단계 312).
도 7은 로크 데이터 클린업 과정의 다른 실시예를 도시한다. 다른 실시예에 있어서, 로크 데이터 클린업 과정은 다른 스레드 로킹 동작과 공동으로 실행하여, 이들 공동작용 과정과 동기될 로크 데이터 클린업 과정을 필요로 한다. 도 7 및 테이블4에 제시된 로크 데이터 클린업 방법(222)에 대한 의사코드를 참조하면, 로크 데이터 클린업 방법은 불요 정보 정리 과정이 초기화될 때마다 할당된 로크 데이터서브어레이를 갖는 모든 오브젝트를 검사하기 위해 불요 정보 정리 과정에 의해 호출된다. 선택적으로, 로크 데이터 클린업 방법은 불요 정보 정리 과정이 초기화될 때마다 모든 오브젝트를 검사하기 위해 불요 정보 정리 과정에 의해 호출된다.
로크 데이터 클린업 과정은 호출과정에 의해 지정된 오브젝트가 지역 오브젝트 특정 로킹 과정을 가지는 지를 결정함으로서 시작된다(단계 402). 로크 오브젝트 특정 로킹 과정의 존재는 재요구될 필요가 있는 이전에 할당된 기억부가 존재함을 나타낸다. 만일 존재하지 않는다면(단계402-N), 과정은 리턴된다. 다음에, 과정은 특정 오브젝트가 로크되었는지의 여부 또는 오브젝트가 적어도 하나의 대기 스레드를 가지는 지의 여부를 결정한다(단계404). 이들 조건은 그들의 사용에 대한 필요성이 존재하기 때문에 오브젝트 특정 로킹 과정 및 VFH을 위해 할당된 기억부가 재요구될 필요가 없다는 것을 나타낸다. 이같은 경우(단계404-Y)에 있어서, 과정은 리턴된다. 오브젝트가 최근에 로크되었는지의 여부를 결정하기 위해 더 검사된다. 바람직한 실시예에 있어서, 오브젝트는 그것의 로크 데이터 서브어레이의 NotRecently Locked flag가 참으로 세팅되는 경우 최근에 로크되지 않은 것으로 고려된다. 오브젝트는 만일 그것이 로크 데이터 서브어레이를 가지며 NotRecently Locked flag가 거짓으로 세팅된다면 최근에 로크된 것으로 고려된다.
만일 오브젝트가 최근에 로크되었다면, 오브젝트에 대한 NotRecently Locked flag는 참으로 세팅되며(단계 408), 과정은 리턴된다. 단계(408)는 만일 로크 데이터 서브어레이가 그 시간중에 비사용중을 유지한다면 다음의 불요 정보 정리 사이클동안 해제하기 위해 오브젝트의 로크 데이터 서브어레이를 준비한다.
다음에, 로크 데이터 클린업 방법은 로킹 동작을 사용하는 다른 공동실행 스레드와 동기화를 요구한다. 이 동기화는 로크될 오브젝트와 연관된 클래스 오브젝트상에 로크를 요구 및 대기하는 방법에 의해 수행된다. 로크 데이터 클린업 방법의 나머지는 로크 데이터 클린업 방법 호출을 만드는 스레드가 클래스 오브젝트상에서 로크를 얻을 때까지 실행되지 않는다.
일단 클래스 오브젝트상의 로크가 얻어진다면, 로크 데이터 클린업 방법은 NotRecently Locked flag가 세팅되었는지의 여부를 검사함으로서 로크가 최근에 로크되는지를 검사한다. 다른 스레드는 호출 스레드가 클래스 오브젝트상의 로크를 위해 대기하는 동안 특정 오브젝트를 로크하는 경우가 가능하다. 이같은 경우, 특정 오브젝트 로크 데이터 서브어레이를 할당해제 하는 것은 적절하지 않다. 즉, 특정 오브젝트의 NotRecently Locked flag상의 제 2검사(414)가 필요하다. 만일 NotRecently Locked flag가 세팅되지 않았다면(414-N), 로크 데이터 클린업 방법은 클래스 오브젝트상의 로크를 해제하며(단계 420), 과정은 리턴된다. 만일 NotRecently Locked flag가 여전히 세팅된다면(414-Y), 로크 데이터 클린업 방법은 오브젝트 특정 VFT 및 오브젝트 특정 로킹 과정에 할당된 기억을 해제한다(416). 다음에, 오브젝트에 대한 오브젝트의 방법 포인터는 오브젝트의 클래스 오브젝트에 대해 1차 VFT로 세팅된다(단계 418). 최종적으로, 오브젝트의 클래스 오브젝트상의 로크는 해제된다(단계 420).
전술한 방법을 사용하면, 언로크된 오브젝트는 오브젝트 로킹을 유지하기 위해 메모리 오버헤드를 초래하지 않는다. 로크된 오브젝트만이 로크 데이터에 허용된 메모리 공간을 가진다.
본 발명이 몇몇의 특정 실시예를 참조로 기술되었을지라도, 이 실시예는 본 발명을 기술하기 위해 사용하였으며 본 발명을 제한하는 것이 아니다. 당업자는 첨부된 특허청구의 범위에 의해 제한된 본 발명의 사상 및 범위로부터 벗어남이 없이 본 발명을 변형할 수 있다.
예를 들어, NotRecently Locked flag와 같은 다른 메커니즘이 오브젝트가 최근에 로크되었는지의 여부를 결정하기 위해 사용될 수 있다. 예를 들어, 타임스탬프는 언로크된 오브젝트의 로크 데이터 서브어레이에 동시에 저장될 수 있으며, 그 타임스탬프는 로크 데이터 클린업 과정에 의해 검사된다. 만일 타임스탬프가 종래 시간의 임계량과 다른 시간을 나타낸다면, 오브젝트는 최근에 로크되었는지의 여부가 검사된다.
앞서 기술된 로크 데이터 서브어레이가 무텍스를 실행하기 위해 사용되는 반면에, 동일한 로크 데이터 서브어레이 할당 및 해제 방법 및 메커니즘은 신호기의 구조 및 통지 이벤트에서 조절이 대기되는 모니터에 대한 구조와 같은 더 복잡한 로크 데이터 구조를 할당 및 해제하기 위해 사용될 수 있다.
전술한 방법 및 시스템은 랜덤 액세스 메모리와 같은 메모리 장치와 다른 실행가능한 다른 형태의 매체상에 실행하기 위해 변형할 수 있다. 다른 형태의 실행 가능한 매체는 임의의 메모리 장치, 컴팩트 디스크 또는 플로피 디스크일 수 있는 컴퓨터 판독가능 기억 매체에 사용될 수 있으나 이에 제한되지 않는다.
본 발명은 로크가능한 동안 로크되지 않는 오브젝트에 대한 로크 데이터 구조용 메모리 자원의 할당을 막기 위해 로크 데이터에 대해 공간이 할당되며, 자주 사용된 오브젝트에 대해 계산 오버헤드가 부가되지 않으며, 로크된 오브젝트의 수에 비례하는 기억 자원을 사용하는 효과를 가진다.

Claims (23)

  1. 컴퓨터 시스템을 동작시키는 방법에 있어서,
    다수의 오브젝트 및 다수의 과정을 컴퓨터 메모리에 저장하는 단계로서, 각각의 저장된 오브젝트는 로크 및 언로크로 이루어진 세트로부터 선택된 로크 상태를 가지며 각각의 저장된 오브젝트는 데이터 구조에 대한 데이터 포인터를 포함하는 단계;
    로크된 적이 없는 특정 오브젝트상의 로크 요구를 처리할 때, 특정 오브젝트의 언로크 상태를 로크 상태로 변경하고 특정 오브젝트에 대한 지역 오브젝트 로킹 과정을 발생시키는 명령을 가지는 전역 오브젝트 로킹 과정을 실행하는 단계로서, 각각의 지역 오브젝트 로킹 과정은 로크 데이터를 저장하는 로크 데이터 서브어레이 및 상기 특정 오브젝트의 저장된 로크 데이터를 갱신하는 명령을 포함하는 단계; 및
    소정의 해제 기준이 만족될 때, 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하기 위해 로크 데이터 클린업 과정을 실행하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  2. 제 1항에 있어서,
    최근에 로크된 로크 상태를 가지지 않은 각각의 저장된 오브젝트와 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 연관시키는 단계;
    최근에 로크된 로크 상태를 가진 각각의 저장된 오브젝트와 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 연관시키는 단계; 및
    언로크 오브젝트상의 로크 요구를 처리하기 위해 전역 오브젝트 과정을 실행할 때, 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  3. 제 1항에 있어서,
    최근에 로크된 로크 상태를 가지지 않은 각각의 저장된 오브젝트와 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법을 연관시키는 단계;
    로크된 로크 상태를 가지는 각각의 저장된 오브젝트와 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 연관시키는 단계; 및
    언로크 오브젝트상의 로크 요구를 처리하기 위해 전역 오브젝트 과정을 실행할 때, 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  4. 제 3항에 있어서,
    상기 로크 데이터 클린업 과정을 실행할 때, 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 변경하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  5. 제 1항에 있어서,
    상기 컴퓨터 메모리에 한 세트의 오브젝트 클래스들을 저장하는 단계로서, 각각의 오브젝트 클래스는 상기 오브젝트 클래스와 연관된 한 세트의 방법들을 참조하는 포인터와 상기 전역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 1차 가상 함수 테이블(VFT)을 포함하는 단계;
    최근에 로크된 로크 상태를 가지지 않은 상기 각각의 저장된 오브젝트와 상기 오브젝트 클래스 중 대응하는 하나의 오브젝트 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 연관시키는 단계;
    로크된 로크 상태를 갖는 상기 각각의 저장된 오브젝트에 대해, 상기 지역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 지역 가상 함수 테이블(VFT)을 상기 컴퓨터 메모리에 저장하는 단계; 및
    상기 전역 오브젝트 로킹 과정을 실행할 때, 상기 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  6. 제 1항에 있어서,
    한 세트의 오브젝트 클래스들을 상기 메모리에 저장하는 단계로서, 각각의 오브젝트 클래스는 상기 오브젝트 클래스와 연관된 한 세트의 방법들을 참조하는 포인터와 상기 전역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 1차 가상 함수 테이블(VFT)을 포함하는 단계;
    로크된 로크 상태를 가지지 않은 상기 각각의 저장된 오브젝트와 상기 오브젝트 클래스 중 대응하는 하나의 오브젝트 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 연관시키는 단계;
    로크된 로크 상태를 갖는 상기 각각의 저장된 오브젝트에 대해, 상기 지역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 지역 가상 함수 테이블(VFT)을 상기 컴퓨터 메모리에 저장하는 단계; 및
    상기 전역 오브젝트 로킹 과정을 실행할 때, 상기 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작방법.
  7. 제 6항에 있어서,
    상기 로크 데이터 클린업 과정을 실행할 때, 상기 특정 오브젝트에 대응하는 오브젝트 클래스에 대한 상기 1차 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 변경하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작방법.
  8. 컴퓨터 시스템에 있어서,
    다수의 오브젝트와 다수의 과정을 저장하는 메모리로서, 각각의 저장된 오브젝트는 로크(loked) 및 언로크(unloked)로 이루어진 세트로부터 선택된 로크 상태(loke status)를 가지고 각각의 저장된 오브젝트는 데이터 구조에 대한 데이터 포인터를 구비하는 메모리;
    특정 언로크 오브젝트의 로크 상태를 로크로 변경하며 상기 특정 언로크 오브젝트에 대한 지역(local) 오브젝트 로킹 과정을 발생시키는 명령을 가지는 전역(global)오브젝트 로킹 과정으로서, 각각의 지역 오브젝트 로킹 과정은 로크 데이터를 저장하는 로크 데이터 서브어레이 및 상기 특정 언로크 오브젝트의 저장된 로크 데이터를 갱신하는 명령을 가지는 전역 오브젝트 로킹 과정; 및
    소정 해제(release) 기준이 만족될 때 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하는 로크 데이터 클린업 과정을 포함하는 컴퓨터 시스템으로서,
    상기 시스템은 로크 데이터 서브어레이를 가지지 않는 오브젝트상의 로크 요구를 처리하기 위해 상기 전역 오브젝트 로킹 과정을 이용하며, 로크 데이터 서브 어레이를 가지는 오브젝트상의 로크 요구를 처리하기 위해 상기 지역 오브젝트 로킹 과정을 이용하며, 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하기 위해 상기 로크 데이터 클린업 과정을 이용하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제 8항에 있어서,
    최근에 로크된 로크 상태를 가지지 않은 각각의 저장된 오브젝트는 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 포함하며;
    최근에 로크된 로크 상태를 가진 각각의 저장된 오브젝트는 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 포함하며; 그리고
    상기 전역 오브젝트 로킹 과정은 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제 8항에 있어서,
    로크된 로크 상태를 가지지 않은 각각의 저장된 오브젝트는 상기 전역 오브젝트 로킹 과정을 가진 상기 과정의 서브세트에 대한 방법 포인터를 포함하며;
    로크된 로크 상태를 가지는 각각의 저장된 오브젝트는 상기 지역 오브젝트 로킹 과정을 가진 상기 과정의 서브세트에 대한 방법 포인터를 포함하며;
    상기 전역 오브젝트 로킹 과정은 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제 10항에 있어서,
    상기 로크 데이터 클린업 과정은 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 변경하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  12. 제 8항에 있어서,
    상기 메모리는 한 세트의 오브젝트 클래스들을 추가로 저장하며, 상기 각각의 오브젝트 클래스는 상기 오브젝트 클래스와 연관된 한 세트의 방법들을 참조하는 포인터와 상기 전역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 1차 가상 함수 테이블(VFT)을 포함하며;
    최근에 로크된 로크 상태를 가지지 않은 상기 각각의 저장된 오브젝트는 상기 오브젝트 클래스 중 대응하는 하나의 오브젝트 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 포함하며;
    로크된 로크 상태를 가진 상기 각각의 저장된 오브젝트에 대해, 포인터를 가지는 지역 가상 함수 테이블(VFT)은 상기 지역 오브젝트 로킹 과정을 참조하며;
    상기 전역 오브젝트 로킹 과정은 상기 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  13. 제 8항에 있어서,
    상기 메모리는 한 세트의 오브젝트 클래스들을 추가로 저장하며, 상기 각각의 오브젝트 클래스는 상기 오브젝트 클래스와 연관된 한 세트의 방법들을 참조하는 포인터와 상기 전역 오브젝트 로킹 과정을 참조하는 포인터를 가지는 1차 가상 함수 테이블(VFT)을 포함하며;
    로크된 로크 상태를 가지지 않은 상기 각각의 저장된 오브젝트는 상기 오브젝트 클래스 중 대응하는 하나의 오브젝트 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 포함하며;
    로크된 로크 상태를 가진 상기 각각의 저장된 오브젝트에 대해, 포인터를 가지는 지역 가상 함수 테이블(VFT)은 상기 지역 오브젝트 로킹 과정을 참조하며;
    상기 전역 오브젝트 로킹 과정은 상기 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  14. 제 13항에 있어서,
    상기 로크 데이터 클린업 과정은 상기 특정 오브젝트에 대응하는 오브젝트 클래스에 대한 상기 1차 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 변경하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  15. 데이터 처리 시스템상에서 실행되는 프로그램에 의해 액세스하기 위한 데이터를 저장하는 컴퓨터 판독가능 기억 매체에 있어서,
    상기 메모리에 저장된 다수의 오브젝트와 다수의 과정으로서, 상기 각각의저장된 오브젝트는 로크 및 언로크로 이루어진 세트로부터 선택된 로크 상태를 가지며 상기 각각의 저장된 오브젝트는 상기 메체에 저장된 데이터 구조에 대한 데이터 포인터를 구비하는 다수의 오브젝트 및 다수의 과정;
    특정 언로크 오브젝트의 로크 상태를 언로크 상태로 변경하며 상기 특정 언로크 오브젝트에 대한 지역 오브젝트 로킹 과정을 발생시키는 명령을 가지는 전역 오브젝트 로킹 과정으로서, 상기 각각의 지역 오브젝트 로킹 과정은 로크 데이터를 저장하는 로크 데이터 서브어레이와 특정 언로크 오브젝트의 저장된 로크 데이터를 갱신하는 명령을 가지는 전역 오브젝트 로킹 과정; 및
    소정 해제기준이 만족될 때 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하는 로크 데이터 클린업 과정을 포함하는 컴퓨터 판독가능 기억 매체로서, 상기 시스템은 로크 데이터 서브어레이를 가지지 않는 오브젝트상의 로크 요구를 처리하기 위해 상기 전역 오브젝트 로킹 과정을 이용하며, 로크 데이터 서브어레이를 가지는 오브젝트상의 로크 요구를 처리하기 위해 상기 지역 오브젝트 로킹 과정을 사용하며, 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하기 위해 상기 로크 데이터 클린업 과정을 이용하는 것을 특징으로 하는 컴퓨터 판독가능 기억 매체.
  16. 제 15항에 있어서,
    최근에 로크된 로크 상태를 가지지 않은 상기 각각의 저장된 오브젝트는 상기 전역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 포함하며;
    최근에 로크된 로크 상태를 가진 상기 각각의 저장된 오브젝트는 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트에 대한 방법 포인터를 포함하며;
    상기 전역 오브젝트 로킹 과정은 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 상기 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 기억 매체.
  17. 제 15항에 있어서,
    로크된 로크 상태를 가진적이 없는 각각의 저장된 오브젝트는 상기 전역 오브젝트 로킹 과정을 포함하는 상기 과정들의 서브셋에 대한 방법 포인터를 포함하며;
    로크된 로크 상태를 가지는 각각의 저장된 오브젝트는 상기 지역 오브젝트 로킹 과정을 포함하는 상기 과정들의 서브셋에 대한 방법 포인터를 포함하며; 그리고
    상기 전역 오브젝트 로킹 과정은 상기 지역 오브젝트 로킹 과정을 포함하는 상기 과정들의 상기 서브셋을 지지하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령들을 포함하는 컴퓨터 판독가능 기억매체.
  18. 제 17항에 있어서,
    상기 로크 데이터 클린업 과정은 상기 전역 오브젝트 로킹 과정을 포함하는상기 과정들의 상기 서브셋을 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 변경시키는 명령을 포함하는 컴퓨터 판독가능 기억매체.
  19. 제 15항에 있어서,
    상기 컴퓨터 판독가능 기억매체는 오브젝트 클래스들 셋을 추가로 저장하며, 각각의 오브젝트 클래스는 상기 오브젝트 클래스와 관련된 방법들 셋을 언급하는 포인터들 및 상기 전역 오브젝트 로킹 과정을 언급하는 포인터를 포함하는 1차 가상 함수 테이블(VFT)을 포함하며;
    최근에 로크된 로크상태를 가지지 않은 상기 저장된 오브젝트 각각은 상기 오브젝트 클래스들 중 대응하는 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 포함하고;
    로크된 로크상태를 가지는 상기 저장된 오브젝트 각각에 대해, 포인터들을 포함하는 지역 가상 함수 테이블(VFT)은 상기 지역 오브젝트 로킹 과정을 참조하며; 그리고
    상기 전역 오브젝트 로킹 과정은 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 컴퓨터 판독가능 기억 매체.
  20. 제 15항에 있어서,
    상기 컴퓨터 판독가능 기억매체는 오브젝트 클래스들 셋을 추가로 저장하고,각각의 오브젝트 클래스는 상기 오브젝트 클래스와 관련된 방법들 셋을 언급하는 포인터들 및 상기 전역 오브젝트 로킹 과정을 언급하는 포인터를 포함하는 1차 가상 함수 테이블(VFT)을 포함하며;
    로크된 로크상태를 가진적이 없는 상기 각각의 저장된 오브젝트는 상기 오브젝트 클래스들 중 상응하는 하나의 클래스에 대한 상기 1차 VFT를 참조하는 방법 포인터를 포함하며;
    로크된 로크상태를 가지고 있는 상기 각각의 저장된 오브젝트는 상기 컴퓨터 판독가능 기억매체에 상기 지역 오브젝트 로킹 과정을 참조하는 포인터들을 포함하는 지역 가상 함수 테이블(VFT)을 저장하며; 그리고
    상기 전역 오브젝트 로킹 과정은 특정 오브젝트에 대한 상기 지역 VFT를 참조하기 위해 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 컴퓨터 판독가능 기억매체.
  21. 제 20항에 있어서,
    상기 로크 데이터 클린업 과정은 상기 특정 오브젝트에 상응하는 오브젝트 클래스에 대해 상기 1차 VFT를 참조하기 위해 상기 특정 오브젝트의 방법 포인터를 변경시키는 명령을 포함하는 컴퓨터 판독가능 기억매체.
  22. 데이터 처리 시스템에서, 통신링크를 통해 다수의 오브젝트 및 다수의 과정을 저장하는 다른 데이터 처리시스템에 전송하기 위해 사용되는데, 상기 각각의 저장된 오브젝트가 로크 및 언로크로 이루어진 세트로부터 선택된 로크 상태와 데이터 구조에 대한 데이터 포인터를 가지는 한 세트의 컴퓨터 판독가능 모듈에 있어서,
    상기 특정 언로크 오브젝트의 로크 상태를 로크 상태로 변경하며 상기 특정 언로크 오브젝트에 대한 지역 오브젝트 로킹 과정을 발생시키는 명령을 가지는 전역 오브젝트 로킹 과정으로서, 각각의 지역 오브젝트 로킹 과정은 로크 데이터를 저장하는 로크 데이터 서브어레이 및 특정 오브젝트의 저장된 로크 데이터를 갱신하는 명령을 포함하는 전역 오브젝트 로킹 과정; 및
    소정 해제기준이 만족될 때 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하는 로크 데이터 클린업 과정을 포함하는 한 세트의 컴퓨터 판독 가능 모듈로서,
    상기 다른 데이터 처리 시스템 각각은 로크 데이터 서브어레이를 가지지 않는 오브젝트상의 로크 요구를 처리하기 위해 상기 전역 오브젝트 로킹 과정을 이용하며, 로크 데이터 서브어레이를 가지는 오브젝트상의 로크 요구를 처리하기 위해 상기 지역 오브젝트 로킹 과정을 이용하며, 특정 오브젝트의 지역 오브젝트 로킹 과정을 해제하기 위해 상기 로크 데이터 클린업 과정을 이용하는 것을 특징으로 하는 한 세트의 컴퓨터 판독가능 모듈.
  23. 제 22항에 있어서,
    상기 전역 오브젝트 로킹 과정은 상기 지역 오브젝트 로킹 과정을 가지는 상기 과정의 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하며;
    상기 로크 데이터 클린업 과정은 상기 전역 로킹 과정을 가지는 상기 과정의 서브세트를 지시하기 위해 상기 특정 오브젝트의 방법 포인터를 갱신하는 명령을 포함하는 것을 특징으로 하는 한 세트의 컴퓨터 판독가능 모듈.
KR1019960062295A 1995-12-08 1996-12-06 공간효율적인오브젝트로킹을위한시스템및방법 KR100437704B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/569,753 1995-12-08
US08/569,753 US5701470A (en) 1995-12-08 1995-12-08 System and method for space efficient object locking using a data subarray and pointers
US08/640,244 1996-04-30
US08/640,244 US5761670A (en) 1995-12-08 1996-04-30 System and method for space efficient object locking using global and local locks

Publications (2)

Publication Number Publication Date
KR970049519A KR970049519A (ko) 1997-07-29
KR100437704B1 true KR100437704B1 (ko) 2004-08-02

Family

ID=27075139

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960062295A KR100437704B1 (ko) 1995-12-08 1996-12-06 공간효율적인오브젝트로킹을위한시스템및방법

Country Status (10)

Country Link
US (1) US5761670A (ko)
EP (1) EP0783150B1 (ko)
JP (1) JP3953130B2 (ko)
KR (1) KR100437704B1 (ko)
CN (1) CN1096642C (ko)
AU (1) AU707393B2 (ko)
CA (1) CA2191824C (ko)
DE (1) DE69626377T2 (ko)
HK (1) HK1002084A1 (ko)
SG (1) SG75107A1 (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862376A (en) * 1996-06-24 1999-01-19 Sun Microsystems, Inc. System and method for space and time efficient object locking
US6718550B1 (en) 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
US6289410B1 (en) * 1996-07-18 2001-09-11 Electronic Data Systems Corporation Method and system for maintaining consistency of shared objects based upon instance variable locking
US5974421A (en) * 1996-12-23 1999-10-26 Microsoft Corporation Cache-efficient object loader
US5930807A (en) * 1997-04-23 1999-07-27 Sun Microsystems Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US6324623B1 (en) 1997-05-30 2001-11-27 Oracle Corporation Computing system for implementing a shared cache
US6574720B1 (en) 1997-05-30 2003-06-03 Oracle International Corporation System for maintaining a buffer pool
US6078994A (en) * 1997-05-30 2000-06-20 Oracle Corporation System for maintaining a shared cache in a multi-threaded computer environment
US5946711A (en) * 1997-05-30 1999-08-31 Oracle Corporation System for locking data in a shared cache
GB2327134B (en) * 1997-07-08 2002-04-03 Ibm Apparatus,method and computer program for providing arbitrary locking requesters for controlling concurrent access to server resources
GB9717715D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Data processor with localised memory reclamation
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6510460B1 (en) * 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6105057A (en) * 1998-01-28 2000-08-15 Ericsson Inc. Method and apparatus for manipulating mutexes on network assets
US8434099B2 (en) 1998-09-09 2013-04-30 Microsoft Corporation Efficient linking and loading for late binding and platform retargeting
US7159222B1 (en) * 1998-09-09 2007-01-02 Microsoft Corporation Highly componentized system architecture with object mutation
US6289360B1 (en) * 1998-10-07 2001-09-11 International Business Machines Corporation Method and system for eliminating synchronization between sweep and allocate in a concurrent garbage collector
US6754898B2 (en) * 1998-12-08 2004-06-22 Sun Microsystems, Inc. Method and apparatus for converting a lightweight monitor to a heavyweight monitor
GB2345159B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
GB2345160B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
US6957436B1 (en) * 1999-01-29 2005-10-18 Iona Technologies, Plc Method and system for multi-threaded object loading and unloading
US6330714B1 (en) * 1999-02-08 2001-12-11 International Business Machines Corporation Method and computer program product for implementing redundant lock avoidance
US6691304B1 (en) * 1999-02-25 2004-02-10 Sun Microsystems, Inc. Monitor conversion in a multi-threaded computer system
JP3756352B2 (ja) * 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
US6401103B1 (en) 1999-08-06 2002-06-04 International Business Machines Corporation Apparatus, method, and article of manufacture for client-side optimistic locking in a stateless environment
GB9921719D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Thread locking
US7188344B1 (en) * 1999-12-21 2007-03-06 Unisys Corporation Architecture for a read/write thread lock
JP3611295B2 (ja) * 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
TW469452B (en) * 2000-04-27 2001-12-21 Darfon Electronics Corp Transformer
US6792601B1 (en) 2000-05-18 2004-09-14 International Business Machines Corporation Multiple mode object locking method and system
US7086053B2 (en) * 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
FR2810755B1 (fr) * 2000-06-27 2003-01-17 Cit Alcatel Procede de gestion d'informations en java
EP1202172A1 (en) * 2000-10-31 2002-05-02 Universiteit Gent Topological, on-the-fly classification of objects into a global set and local sets
US7392515B2 (en) * 2001-02-09 2008-06-24 International Business Machines Corporation Program components having multiple selectable implementations
GB0104764D0 (en) * 2001-02-24 2001-04-18 Ibm Method apparatus and computer program product for controlling access to a res urce
US6892200B2 (en) * 2001-11-13 2005-05-10 America Online, Incorporated Javascript engine
US7571439B1 (en) * 2002-05-31 2009-08-04 Teradata Us, Inc. Synchronizing access to global resources
US6915392B2 (en) * 2002-07-12 2005-07-05 Intel Corporation Optimizing memory usage by vtable cloning
US7036125B2 (en) * 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US20060212474A1 (en) * 2005-03-16 2006-09-21 Muzzy Lane Software Incorporated Specifying application content using data-driven systems
US7752620B2 (en) * 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7756911B2 (en) * 2006-06-09 2010-07-13 International Business Machines Corporation Method and system for executing a task and medium storing a program therefor
US7913236B2 (en) * 2006-09-29 2011-03-22 Intel Corporation Method and apparatus for performing dynamic optimization for software transactional memory
US8595202B2 (en) * 2007-10-03 2013-11-26 Siemens Aktiengesellschaft Method and system for intra-document object locking in collaborative authoring
US20100057741A1 (en) * 2008-08-29 2010-03-04 International Business Management Productions Software resource access utilizing multiple lock tables
US8458146B2 (en) * 2008-09-11 2013-06-04 International Business Machines Corporation Accessing data remotely
US8683583B2 (en) * 2010-12-02 2014-03-25 Microsoft Corporation Using virtual table protections to prevent the exploitation of object corruption vulnerabilities
JP2013097623A (ja) * 2011-11-01 2013-05-20 Fujitsu Ltd 排他制御プログラム、排他制御装置および排他制御方法
US9250976B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Tiered locking of resources
WO2016098142A1 (ja) * 2014-12-18 2016-06-23 三菱電機株式会社 産業コントローラおよび産業コントローラシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890702119A (ko) * 1987-05-01 1989-12-22 디지탈 이큅먼트 코오포레이숀 멀티프로세서 컴퓨터 시스템의 프로세서로 시스템 자원에 대한 적절한 액세스를 보장하기 위한 방법 및 장치
US5129083A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Conditional object creating system having different object pointers for accessing a set of data structure objects
JPH05120040A (ja) * 1991-10-28 1993-05-18 Yokogawa Electric Corp コンピユータシステム
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941083A (en) * 1987-05-01 1990-07-10 Digital Equipment Corporation Method and apparatus for initiating interlock read transactions on a multiprocessor computer system
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
JP2699600B2 (ja) * 1990-01-30 1998-01-19 日本電気株式会社 資源の排他制御方式
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5596754A (en) * 1992-10-29 1997-01-21 Digital Equipment Corporation Method for performing private lock management
US5603030A (en) * 1993-01-07 1997-02-11 Microsoft Corporation Method and system for destruction of objects using multiple destructor functions in an object-oriented computer system
JP2711216B2 (ja) * 1993-01-26 1998-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジェクトを管理するためのシステム及び方法
US5701470A (en) * 1995-12-08 1997-12-23 Sun Microsystems, Inc. System and method for space efficient object locking using a data subarray and pointers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890702119A (ko) * 1987-05-01 1989-12-22 디지탈 이큅먼트 코오포레이숀 멀티프로세서 컴퓨터 시스템의 프로세서로 시스템 자원에 대한 적절한 액세스를 보장하기 위한 방법 및 장치
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
US5129083A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Conditional object creating system having different object pointers for accessing a set of data structure objects
JPH05120040A (ja) * 1991-10-28 1993-05-18 Yokogawa Electric Corp コンピユータシステム

Also Published As

Publication number Publication date
EP0783150A2 (en) 1997-07-09
JPH1049380A (ja) 1998-02-20
DE69626377T2 (de) 2003-12-04
CA2191824C (en) 2003-01-21
KR970049519A (ko) 1997-07-29
JP3953130B2 (ja) 2007-08-08
AU7402096A (en) 1997-06-12
EP0783150A3 (en) 1998-04-15
AU707393B2 (en) 1999-07-08
CN1096642C (zh) 2002-12-18
DE69626377D1 (de) 2003-04-03
CA2191824A1 (en) 1997-06-09
EP0783150B1 (en) 2003-02-26
SG75107A1 (en) 2000-09-19
CN1160247A (zh) 1997-09-24
US5761670A (en) 1998-06-02
HK1002084A1 (en) 1998-07-31

Similar Documents

Publication Publication Date Title
KR100437704B1 (ko) 공간효율적인오브젝트로킹을위한시스템및방법
US5701470A (en) System and method for space efficient object locking using a data subarray and pointers
US5862376A (en) System and method for space and time efficient object locking
US5875461A (en) Method of synchronizing one of the objects with one of the threads at a time
AU731871B2 (en) Method and apparatus for thread synchronization in object-based systems
US7584222B1 (en) Methods and apparatus facilitating access to shared storage among multiple computers
US6546443B1 (en) Concurrency-safe reader-writer lock with time out support
US6161147A (en) Methods and apparatus for managing objects and processes in a distributed object operating environment
US5442763A (en) System and method for preventing deadlock in multiprocessor multiple resource instructions
US5797004A (en) System and method for caching and allocating thread synchronization constructs
US5321841A (en) System for determining the rights of object access for a server process by combining them with the rights of the client process
US5706515A (en) System and method for implementing an atomic wait for notification operation
US9183156B2 (en) Read-copy update implementation for non-cache-coherent systems
US5129083A (en) Conditional object creating system having different object pointers for accessing a set of data structure objects
US7653791B2 (en) Realtime-safe read copy update with per-processor read/write locks
US5129084A (en) Object container transfer system and method in an object based computer operating system
US7080375B2 (en) Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
JP4709469B2 (ja) スレッドを明示的に中断することなく整合状態とする方法及び装置
JPH03161859A (ja) リクエスト管理方法及びアクセス制御システム
Lozi et al. Fast and portable locking for multicore architectures
US6487652B1 (en) Method and apparatus for speculatively locking objects in an object-based system
US6349322B1 (en) Fast synchronization for programs written in the JAVA programming language
EP0889396B1 (en) Thread synchronisation via selective object locking
US6915392B2 (en) Optimizing memory usage by vtable cloning
US6233621B1 (en) System and method for space efficient hashcode allocation

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee