KR100763200B1 - 인터럽트 가능한 스레드 동기화 방법 및 장치 - Google Patents

인터럽트 가능한 스레드 동기화 방법 및 장치 Download PDF

Info

Publication number
KR100763200B1
KR100763200B1 KR1020060018411A KR20060018411A KR100763200B1 KR 100763200 B1 KR100763200 B1 KR 100763200B1 KR 1020060018411 A KR1020060018411 A KR 1020060018411A KR 20060018411 A KR20060018411 A KR 20060018411A KR 100763200 B1 KR100763200 B1 KR 100763200B1
Authority
KR
South Korea
Prior art keywords
thread
monitor
waiting
threads
variable
Prior art date
Application number
KR1020060018411A
Other languages
English (en)
Other versions
KR20070088159A (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 KR1020060018411A priority Critical patent/KR100763200B1/ko
Priority to US11/655,928 priority patent/US8286166B2/en
Priority to JP2007042022A priority patent/JP4685044B2/ja
Priority to EP07102974A priority patent/EP1826671B1/en
Priority to DE602007011131T priority patent/DE602007011131D1/de
Publication of KR20070088159A publication Critical patent/KR20070088159A/ko
Application granted granted Critical
Publication of KR100763200B1 publication Critical patent/KR100763200B1/ko

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L1/00Laying or reclaiming pipes; Repairing or joining pipes on or under water
    • F16L1/12Laying or reclaiming pipes on or under water
    • F16L1/16Laying or reclaiming pipes on or under water on the bottom
    • F16L1/161Laying or reclaiming pipes on or under water on the bottom the pipe being composed of sections of short length
    • 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L1/00Laying or reclaiming pipes; Repairing or joining pipes on or under water
    • F16L1/12Laying or reclaiming pipes on or under water
    • F16L1/16Laying or reclaiming pipes on or under water on the bottom
    • F16L1/165Laying or reclaiming pipes on or under water on the bottom by towing the pipe on or near the bottom
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L1/00Laying or reclaiming pipes; Repairing or joining pipes on or under water
    • F16L1/12Laying or reclaiming pipes on or under water
    • F16L1/20Accessories therefor, e.g. floats, weights
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Multimedia (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Synchronizing For Television (AREA)

Abstract

본 발명은 인터럽트 가능한 스레드 동기화 방법 및 장치에 관한 것이다.
본 발명의 실시예에 따른 인터럽트 가능한 스레드 동기화 방법은 소정의 모니터를 사용하여 소정의 객체에 대한 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 단계, 및 상기 모니터를 대기하는 제1 스레드를 인터럽트하는 단계를 포함한다.
스레드, 모니터, 동기화, 인터럽트

Description

인터럽트 가능한 스레드 동기화 방법 및 장치{Method and apparatus for interruptible synchronization for thread}
도 1은 본 발명의 일 실시예에 따른 모니터의 구조를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 스레드를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 모니터 잠금(lock) 과정을 나타낸 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 모니터 해제 과정을 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 인터럽트 지시 과정을 나타낸 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 인터럽트 과정을 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 디지털 연산 장치의 구성도이다.
<도면의 주요 부분에 관한 부호의 설명>
100 : 모니터 110 : 서브 모니터
120 : 조건 변수 130 : 카운터 변수
140 : 브로드캐스트 플래그 200 : 스레드
210 : 블록된 모니터 정보 220 : 인터럽트 플래그
710 : 주 기억부 720 : 입출력부
730 : 프로세싱부
본 발명은 스레드 동기화에 관한 것으로서, 더욱 상세하게는 인터럽트 가능한 스레드 동기화 방법 및 장치에 관한 것이다.
대부분의 스레드(thread) 프로그램은 여러 스레드 간에 데이터를 공유하도록 한다. 여기서 어느 한 스레드가 공유된 데이터의 불변 값을 수정하는 중에, 다른 스레드가 공유된 데이터를 사용하는 문제가 발생할 수 있다. 이런 문제가 발생하지 않도록 하기 위한 프로그램 기술을 동기화(synchronization)라고 하는데, 스레드들을 동기화하기 위한 종래의 기술로서 동일 데이터에 대한 모든 메모리 접근이 상호 배제적(mutually exclusive)으로 일어나도록 만드는 기술이 있다. 즉, 어느 한 순간에는 오직 한 스레드만이 데이터를 쓸 수 있으며, 다른 스레드들은 자신의 차례를 기다리게 만드는 것이다.
그런데, 종래의 기술에서는 특정 스레드의 수행을 중단시키고 이 스레드가 점유하고 있는 시스템 자원을 즉시 반환해야만 하는 상황에서, 이 스레드가 모니터를 획득하기 위해 동기화 대기중인 상태라면 이 스레드를 중단시킬 수 없게된다.
따라서, 동기화 대기중이던 스레드 중에서 필요시되는 특정 스레드만 모니터로부터 인터럽트시키고, 모니터를 획득하여 크리티컬 섹션(critical section)을 수행중인 스레드나 해당 모니터를 획득하기 위해 대기중인 다른 스레드들에게는 아무 런 영향을 주지 않는 기술이 요구된다.
특히, 스레드 라이브러리(thread library)를 수정하지 않고 종래의 표준(예를 들면 POSIX(Portable Operating System Interface) 표준)에 위배되지 않으면서도 이러한 요구를 충족시킬 수 있는 기술이라면 더욱 바람직할 것이다.
한국공개특허 10-2004-0068993(특정 메모리 액세스가 발생할 때까지 스레드의 실행을 중단하기 위한 방법 및 장치)는 멀티 스레딩 프로세서에서 하나의 스레드의 처리를 일시적으로 중단하는 기술을 개시하고 있다. 그러나 한국공개특허 10-2004-0068993의 기술은 스레드를 일시적으로 중단시키는 것므로, 모니터 대기 중인 스레드를 모니터로부터 완전히 해제시키기에는 어려움이 있다.
본 발명은 소정의 객체에 대하여 상호 배제적인 동기화를 제공하는 모니터에 대기중인 특정 스레드를 인터럽트시키는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 인터럽트 가능한 스레드 동기화 방법은 소정의 모니터를 사용하여 소정의 객체에 대한 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 단계, 및 상기 모니터를 대기하는 제1 스레드를 인터럽트하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
먼저 본 발명에서 사용되는 용어에 대하여 개략적으로 설명하기로 한다. 용어의 설명은 본 발명의 이해를 돕기 위한 것이다. 따라서 본 발명의 상세한 설명에 있어서 명시적으로 한정하지 않는 한, 이하 설명되는 용어들이 본 발명의 기술적 사상을 한정하는 의미로 사용되는 것이 아님을 주의해야 한다.
- 객체(object)
객체는 스레드가 특정 기능을 수행하기 위하여 접근하게 되는 대상으로서, 데이터 아이템, 리소스, 코드 세그먼트 등 다양한 형태로 존재할 수 있다.
- 동기화(synchronization)
동기화는 소정의 객체에 대하여 스레드(thread)들이 상호 배제적(mutually exclusive)으로 접근할 수 있는 상태를 말한다. 즉, 객체에 접근하고자 하는 복수의 스레드가 존재하는 경우, 어느 한 시점에서의 객체에 대한 접근은 복수의 스레 드 중에서 어느 한 스레드에게만 허용된다.
- 모니터(monitor)
모니터는 소정의 객체에 대한 상호 배제적인 접근을 제어한다. 즉 모니터는 객체에 대하여 복수의 스레드(thread)를 동기화시킴으로써, 복수의 스레드가 하나의 객체에 동시에 접근하는 것을 방지한다. 따라서 모니터를 획득한 스레드만이 객체에 접근할 수 있다. 다시 말하면 동기화된 객체에 접근하고자 하는 스레드는 우선 해당 객체에 대한 모니터를 획득하여야 한다. 참고로, 스레드를 정의하는 표준에 따라서는 '모니터 획득'이라는 표현대신 '모니터 잠금'이라는 표현을 사용하기도 하나, 본 발명은 이러한 용어에 한정되지 않도록 '모니터 획득'과 '모니터 잠금'을 동일한 의미로 사용할 것이다. POSIX(Portable Operating System Interface)의 뮤텍스(mutex)나 세마포어(semaphore)는 이러한 모니터의 일종이다. 본 발명에서는 새로운 유형의 모니터를 제안할 것이며, 그에 대한 내용은 도 1을 참조하여 후술하도록 한다.
- 인터럽트(interrupt)
인터럽트는 어떤 스레드의 정상적인 수행을 중단시키고 다른 동작을 수행시키는 것으로써, 본 발명에서의 인터럽트는 모니터를 대기하고 있는 스레드가 모니터를 획득하지 못한 채로 대기 상태에서 완전히 해제되어, 더 이상 획득하지 못한 모니터를 요청하지 않는 상태를 의미한다.
- 조건 변수(condition variable)
조건 변수는 스레드의 대기 조건을 나타내며, 특정 조건이 트루(true)가 될 때까지 스레드를 대기시킨다. 스레드는 시그널 대기 정보를 통해서 조건 변수에 대하여 대기하게 된다. POSIX 표준 API(Application Programming Interface)의 pthread_cond_wait 함수가 시그널 대기 정보의 대표적인 예로 사용될 수 있다. 한편, 조건 변수에 대하여 대기중인 스레드는 소정의 시그널 발생 정보를 통해서 깨어날 수 있다. 본 발명에서 시그널 발생 정보는 싱글 시그널과 브로드캐스트 시그널로 구분될 수 있다.
바람직하게는, 조건 변수는 스레드들을 대기시키기 위하여 뮤텍스와 함께 동작하게 된다. 예를 들어 제1 스레드가 뮤텍스를 잠근 후 지정된 조건의 발생을 기다리는 조건 변수에 의하여 블록(block)된다면, 제1 스레드가 블록되어 있는 동안 뮤텍스 잠금(lock)은 해제된다. 이 때, 제2 스레드가 지정된 조건의 상태를 변경시키고 제1 스레드를 깨우게되면, 제1 스레드는 다시 뮤텍스를 잠그고 지정된 조건을 검사한다. 만일 조건이 거짓인 경우 제1 스레드는 조건 변수에 의하여 다시 블록되지만, 지정된 조건이 트루라면 제1 스레드는 뮤텍스 잠금을 해제하고 필요한 작업을 수행하게 된다. 후술할 도 1의 실시예의 경우에는 조건 변수가 서브 모니터(110)와 함께 전술한 바와 같은 동작을 수행할 수 있다.
- 싱글 시그널(single signal)
싱글 시그널은 조건 변수에 대하여 대기중인 하나 이상의 스레드 중에서 어느 한 스레드를 깨우기 위하여 사용되는 정보이다. 본 발명의 일 실시예에 따라서, 싱글 시그널을 통하여 깨어난 스레드는 모니터를 획득할 수 있다. POSIX 표준 API에서의 pthread_cond_signal 함수가 싱글 시그널의 대표적인 예로 사용될 수 있 다.
- 브로드캐스트 시그널(broadcast signal)
브로드캐스트 시그널은 조건 변수에 대하여 대기중인 하나 이상의 스레드를 모두 깨우기 위하여 사용되는 정보이다. 브로드캐스트 시그널에 의하여 복수의 스레드는 순차적으로 깨어나게 된다. 본 발명의 일 실시예에 따라서 소정의 조건을 만족하는 스레드는 브로드캐스트 시그널을 통하여 인터럽트될 수 있다. POSIX 표준 API에서의 pthread_cond_broadcast 함수가 브로드캐스트 시그널의 대표적인 예로 사용될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 모니터의 구조를 나타낸 도면이다. 도시된 모니터(100)는 서브 모니터(110), 조건 변수(120), 카운터 변수(130), 및 브로드캐스트 플래그(140)를 포함한다.
서브 모니터(110)는 모니터(100) 내의 정보들에 대하여 스레드들을 동기화시킨다. 보다 구체적으로 서브 모니터(110)는 본 발명에서 구현하고자 하는 동작에 필요한 조건 변수(120)와 카운터 변수(130)에 대하여 스레드들을 동기화시키게 된다. 이러한 서브 모니터(110)의 일 예로서 뮤텍스(mutex)가 사용될 수 있다.
조건 변수(120)는 시그널 발생 정보와 시그널 대기 정보를 이용하여 소정 객체에 대한 동기화를 제공한다. 본 발명에서 조건 변수(120)는 어느 한 스레드에 의하여 잠긴(locked) 모니터(100)를 다른 스레드가 요청하는 경우, 모니터(100)를 요청한 스레드가 대기 상태로 진입하도록 한다.
대기 중인 스레드는 싱글 시그널을 통해서 깨어난 후 모니터(100)를 획득할 수 있다. 만약 대기중인 스레드가 복수라면, 그중 어느 한 스레드만이 깨어나게 된다. 한편, 대기 중인 스레드는 브로드캐스트 시그널을 통해서 깨어날 수도 있는데, 이때 소정의 조건을 만족하는 스레드는 대기 상태에서 완전히 해제되지만 그렇지 못한 스레드는 다시 대기 상태가 된다.
카운터 변수(130)는 모니터(100)를 획득한 스레드와 대기 중인 스레드들의 수를 나타내며, 음이 아닌 정수 값을 갖는 것이 바람직하다. 스레드가 모니터(100)를 요청할 때 카운터 변수(130)는 증가하고, 모니터(100)를 획득한 스레드가 모니터(100)를 해제하거나 모니터(100)를 대기하던 스레드가 모니터(100)로부터 인터럽트되면 카운터 변수(130)는 감소한다.
여기서 카운터 변수(130)는 음이아닌 정수 값을 갖으며, 카운터 변수(130)의 증가 폭과 감소 폭은 1인 것이 바람직하다. 이 경우, 카운터 변수(130)가 1로 설정되어 있다면 모니터(100)를 획득한 스레드 외에 모니터(100)를 대기중인 스레드는 없다는 의미이고, 카운터 변수가 0이라면 모니터(100)를 획득한 스레드마저 없다는 의미이다. 또한 카운터 변수(130)가 1보다 큰 정수 N으로 설정되어 있다면, 모니터(100) 대기 중인 스레드의 수가 N-1임을 나타낸다. 이하에서는 카운터 변수(130)가 음이아닌 정수이고 증감폭은 1인 것으로 설명할 것이나 본 발명은 이에 한정되지 않는다.
브로드캐스트 플래그(140)는 조건 변수(120)에 대기 중인 스레드들을 깨우기 위하여 브로드캐스트 시그널이 출력될 경우 트루(true) 값을 갖는다. 인터럽트될 스레드는 모니터(100)의 브로드캐스트 플래그(140)를 확인함으로써 해당 모니터(100)로부터 인터럽트되어야 함을 알 수 있다.
도 2는 본 발명의 일 실시예에 따른 스레드를 나타낸 도면이다. 도시된 스레드(200)는 블록된(blocked) 모니터 정보(210)와 인터럽트 플래그(220)를 포함하고 있으며, 이 밖에도 다양한 정보들을 더 포함할 수 있다.
블록된 모니터 정보(210)에는 스레드(200)가 대기중인 모니터에 대한 정보가 설정된다.
인터럽트 플래그(220)는 스레드(200)가 인터럽트 대상인지의 여부를 나타내는 정보가 설정된다. 예를 들어, 스레드(200)가 인터럽트 대상인 경우 인터럽트 플래그(220)는 트루(true) 값으로 설정될 수 있다. 인터럽트 플래그(220)가 트루 값으로 설정된 스레드는 브로드캐스트 시그널로 인하여 깨어날 경우 대기중인 상태에서 완전히 벗어날 수 있다. 즉, 대기하던 모니터로부터 인터럽트될 수 있다.
이하 본 발명의 일 실시예에 따른 인터럽트 가능한 스레드 동기화 방법에 대하여 설명하도록 한다.
도 3은 본 발명의 일 실시예에 따른 모니터 잠금(lock) 과정을 나타낸 흐름도이다.
모니터(100)를 요청하는 스레드(이하, 본 실시예에서 요청 스레드라 한다)는 우선, 모니터(100)의 카운터 변수(130)를 증가시킨다(S310). 그 후, 요청 스레드는 모니터(100)가 이미 다른 스레드에 의하여 사용 중인지 판단한다(S320). 모니터(100)가 다른 스레드에 의하여 사용중인지의 여부는 모니터(100)의 카운터 변수(130)를 통해서 확인 가능하다. 만약 카운터 변수(130)가 1이라면 모니터(100)는 사용 가능하며, 카운터 변수(130)가 1보다 크다면 모니터(100)는 다른 스레드에 의하여 사용 중인 것으로 판단할 수 있다. 또한, 앞서 설명한 바와 같이 카운터 변수(130)를 통해서 모니터(100)에 대기 중인 스레드가 몇 개나 존재하는지의 여부도 알 수 있는데, 카운터 변수(130)가 1이면 모니터(100)에 대기중인 스레드가 없는 것이고 카운터 변수(130)가 1보다 큰 정수 N이면 모니터(100)에 대기중인 스레드는 N-1개이다.
만약 모니터(100)를 사용중인 스레드가 없다면, 요청 스레드는 모니터(100)를 획득한다(S360).
한편, 과정 S320의 판단 결과 모니터(100)를 사용 중인 스레드가 존재하는 경우, 요청 스레드는 자신의 블록된 모니터 정보(210)에 모니터(100)에 대한 정보를 설정한다(S330). 그 후, 요청 스레드는 모니터(100)의 조건 변수(120)를 통하여 대기 상태로 있게 된다(S340).
대기 상태에서 조건 변수(120)에 대한 싱글 시그널이 출력되면(S350), 대기 중이던 요청 스레드는 깨어나고 모니터(100)를 획득하게 된다(S360). 만약 모니터(100)에 대기 중이던 스레드가 복수로 존재한다면, 싱글 시그널 출력시 복수의 스레드 중에서 어느 하나의 스레드가 깨어나게 된다.
한편, 대기 상태에서 브로드캐스트 신호가 출력되면(S370) 대기중이던 스레드의 인터럽트 과정이 진행될 수 있으며, 이에 대해서는 도 6을 참조하여 후술하도 록 한다.
싱글 시그널과 브로드캐스트 신호 중 어느것도 출력되지 않으면, 요청 슬레드는 계속하여 모니터(100)를 대기하게 된다.
도 4는 본 발명의 일 실시예에 따른 모니터 해제 과정을 나타낸 흐름도이다.
먼저 모니터(100)를 획득한 스레드(이하, 본 실시예에서 해제 스레드라 한다)가 모니터(100)를 통하여 동기화된 객체에 대한 소정의 처리 작업을 마침으로써 모니터(100)를 해제하려는 경우, 해제 스레드는 해당 모니터(100)를 대기하고 있는 스레드가 존재하는지 판단한다(S410). 모니터(100)에 대기 중인 스레드가 존재하는가의 여부는 모니터(100)의 카운터 변수(130)를 통해서 확인 가능하다.
보다 구체적으로 설명하면, 모니터(100)가 아직 해제되기 전이므로, 카운터 변수(130)는 0보다 큰 값으로 설정되어 있을 것이다. 만약 카운터 변수(130)가 1이라면 모니터(100)에 대기중인 스레드가 없는 것으로 판단할 수 있으며, 카운터 변수(130)가 1보다 크면 모니터(100)에 대기중인 스레드가 존재하는 것으로 판단할 수 있다.
만약 모니터(100)에 대기 중인 스레드가 없다면, 해제 스레드는 모니터(100)의 카운터 변수(130)를 1만큼 감소시킴으로써(이 경우 모니터(100)의 카운터 변수(130)는 1에서 0으로 변경된다) 모니터(100)를 해제할 수 있다(S430).
한편, 과정 S410의 판단 결과 모니터(100)에 대기 중인 스레드가 존재한다면, 해제 스레드는 조건 변수(120)에 대한 싱글 시그널을 출력한다(S420). 그 후, 해제 스레드는 모니터(100)의 카운터 변수(130)를 1만큼 감소시킴으로써(이 경우 모니터(100)의 카운터 변수(130)는 1보다 큰 정수 N에서 N-1로 변경된다) 모니터(100)를 해제한다(S430).
도 5는 본 발명의 일 실시예에 따른 인터럽트 지시 과정을 나타낸 흐름도이다.
다른 스레드를 인터럽트시키고자 하는 스레드(이하, 본 실시예에서 인터럽트 지시 스레드라 한다)는 먼저 인터럽트 대상이되는 스레드(이하, 본 실시예에서 타겟 스레드라 한다)가 소정의 모니터에 대하여 대기 중인지 판단한다(S510). 이를 위하여, 타겟 스레드에 설정된 블록된 모니터 정보(210)가 사용될 수 있다. 즉, 인터럽트 스레드는 타겟 스레드의 블록된 모니터 정보(210)를 통해서 타겟 스레드가 대기중인 모니터를 알 수 있다.
타겟 스레드가 모니터에 대기 중이라면, 인터럽트 지시 스레드는 타겟 스레드에 인터럽트 대상이라는 정보를 기록한다(S520). 인터럽트 대상이라는 정보는 타겟 스레드의 인터럽트 플레그(220)로 설정될 수 있다.
그 후, 인터럽트 지시 스레드는 타겟 스레드가 대기 중인 모니터의 조건 변수에 대한 브로드캐스트 시그널을 출력한다(S530). 이 경우 조건 변수에 대기 중이던 스레드들이 순차적으로 깨어나게 된다.
도 6은 본 발명의 일 실시예에 따른 인터럽트 과정을 나타낸 도면이다. 도시된 과정은 도 5의 과정을 통해서 브로드캐스트 시그널이 출력되는 경우 도 3의 과정 중을 통해서 모니터를 대기하고 있던 스레드의 동작 과정이다. 즉, 도 6은 도 3의 과정 S370에서 '예'인 경우 진행되는 과정을 나타낸다.
도 5의 과정을 통해서 브로드캐스트 시그널이 출력되면 대기 중이던 스레드들이 순차적으로 깨어나는데, 깨어난 스레드는 자신이 인터럽트 대상인지 판단한다(S610). 인터럽트 대상인지의 여부는 스레드 자신에 설정된 인터럽트 플래그(220)를 통해서 확인 가능한데, 인터럽트 대상이 되는 스레드의 인터럽트 플래그(220)에는 도 5의 과정 S520에 의하여 인터럽트 대상이라는 정보가 기록되어 있다.
만약 깨어난 스레드가 인터럽트 대상이라면, 인터럽트 대상 스레드는 대기중이던 모니터에 대한 정보를 삭제하는데(S620), 대기중이던 모니터에 대한 정보는 각 스레드의 블록된 모니터 정보(210)에 설정되어 있다.
그리고, 인터럽트 대상 스레드는 모니터의 카운터 변수(130)를 감소시킴으로써 모니터로부터 인터럽트된다(S630). 여기서 모니터의 카운트 변수(130)는 1보다 큰 정수 L에서 L-1로 변경된다. 이렇게 인터럽트된 스레드는 다른 작업의 실행을 위해서 동작하거나 종료될 수 있다.
한편, 과정 S610의 판단결과 인터럽트 대상이 아닌 스레드는 다시 대기중인 상태로 진입한다(S340, 도 3 참조).
도 3 내지 도 6에 도시하지는 않았으나, 스레드가 모니터의 내부 정보에 접근할 때, 모니터의 서브 모니터(110)를 통해서 모니터 내부 정보에 대한 동기화를 제어하는 과정이 추가될 수 있다. 예를 들어 도 4에서 과정 S410이 수행되기 전에 서브 모니터(110)를 잠금으로써 모니터(100) 내의 정보에 대하여 다른 스레드의 접근을 차단시키는 과정이 수행되고, 과정 S430이 수행된 후에 서브 모니터(110)를 해제하여 모니터(100) 내의 정보에 대하여 다른 스레드의 접근을 허용시키는 과정 이 수행될 수 있다.
본 발명의 일 실시예에 따르면, 도 1내지 도 6을 참조하여 설명한 동작 과정을 실행하기 위한 소정의 컴퓨터 코드로 구성되고 컴퓨터로 읽을 수 있는 프로그램을 플래쉬 메모리, CD, 하드디스크 등 소정의 기록매체에 기록하여 두고, 기록매체에 기록된 프로그램을 컴퓨터가 수행함으로써 본 발명을 구현하는 것도 가능하다.
도 7은 본 발명의 일 실시예에 따른 디지털 연산 장치의 구성도이다. 도시된 디지털 연산 장치(700)는 주 기억부(710), 입출력부(720), 및 프로세싱부(730)를 포함한다. 이러한 디지털 연산 장치(700)는 휴대폰, PDA, 디지털 TV, 셋탑 박스, 노트북 컴퓨터, 데스크탑 컴퓨터 등 데이터 저장 능력과 프로세싱 능력을 갖는 다양한 전자 제품으로 구현될 수 있다.
주 기억부(710)는 프로세싱부(730)가 프로그램(10)의 실행을 위하여 필요한 메모리를 제공한다. 본 발명의 일 실시예에 따르면, 주 기억부(120)는 램(Random Access Memory)으로 구현될 수 있으며, 램의 종류로는 DRAM, SRAM, SDRAM 등을 들 수 있다.
입출력부(720)는 프로그램(10)의 실행에 필요한 데이터를 프로세싱부(730)에게 제공하고, 프로세싱부(730)의 작업 결과를 출력 받는다. 예를 들어, 사용자가 리모콘, 키보드, 키패드, 마우스 등의 입력 장치를 통하여 실행 중인 프로그램(10)에 대한 요청 사항을 입력하면, 입출력부(720)는 이러한 요청사항을 프로세싱부(730)에게 전달할 수 있다. 다른 예로써, 입출력부(720)는 프로세싱부(730)가 프로그램(10)을 실행킴으로써 수행한 작업 결과를 디스플레이나 스피커로 출력시킬 수도 있다.
프로세싱부(730)는 프로그램(10)을 실행시킨다. 이를 위하여 프로세싱부(730)는 프로그램(10)에 대한 읽기, 쓰기, 변환, 연산 등의 작업을 수행할 수 있다. 프로세싱부(730)는 프로그램(10)을 실행함으로써 도 1 및 도 2를 참조하여 설명한 설명한 모니터(100) 및 스레드(200)들을 구현해내고, 도 3 내지 도 6을 참조하여 설명한 동작들을 수행할 수 있다.
프로그램(10)은 프로세싱부(730)에 의하여 처리될 때 본 발명의 일 실시예에 모니터(100)와 스레드(200)를 생성할 수 있는 컴퓨터 코드로 구성되어 있을 수 있다.
도 7을 참조하여 설명한 디지털 연산 장치(700)를 구성하는 구성 요소인 '~부'는 일종의 모듈로 구현될 수 있다. 여기서 모듈은 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수 들을 포함한다. 구성요소들과 모듈들에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 인터럽트 가능한 스레드 동기화 방법 및 장치에 따르면 소정의 객체에 대하여 상호 배제적인 동기화를 제공하는 모니터로부터 특정 스레드를 인터럽트시킬 수 있는 효과가 있다.

Claims (13)

  1. 소정의 모니터를 사용하여 소정의 객체에 대한 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 단계; 및
    상기 모니터를 대기하는 제1 스레드를 인터럽트하는 단계를 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  2. 제 1항에 있어서,
    상기 모니터는 대기 조건을 나타내는 조건 변수와, 상기 모니터를 획득한 제2 스레드의 존재 여부와 상기 조건 변수에 대하여 대기 중인 스레드의 존재 여부를 나타내는 카운터 변수를 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  3. 제 2항에 있어서,
    상기 모니터는 상기 조건 변수와 상기 카운터 변수에 대한 상기 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 서브 모니터를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  4. 제 2항에 있어서,
    상기 카운터 변수는 음이 아닌 정수인, 인터럽트 가능한 스레드 동기화 방법.
  5. 제 2항에 있어서,
    상기 제어하는 단계는,
    상기 제1 스레드가 상기 모니터를 요청하는 단계;
    상기 카운터 변수를 증가시키는 단계; 및
    상기 제2 스레드가 존재하는 경우, 상기 제1 스레드를 상기 조건 변수에 대하여 대기시키는 단계를 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  6. 제 2항에 있어서,
    상기 제2 스레드가 상기 객체에 대한 소정의 처리 작업을 완료한 경우, 상기 카운터 변수를 감소시키는 단계를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  7. 제 2항에 있어서,
    상기 제2 스레드가 상기 객체에 대한 소정의 처리 작업을 완료한 후, 상기 모니터에 대기 중인 제3 스레드가 존재하면 상기 제3 스레드를 깨우는 싱글 시그널을 출력하는 단계를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  8. 제 2항에 있어서,
    상기 제2 스레드가 상기 모니터에 포함된 소정의 정보에 대한 상기 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 단계를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  9. 제 2항에 있어서,
    상기 인터럽트하는 단계는,
    상기 제1 스레드에 인터럽트 대상에 해당한다는 정보를 설정하는 단계; 및
    상기 모니터를 대기하는 하나 이상의 스레드들을 순차적으로 깨우는 브로드캐스트 시그널을 출력하는 단계를 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  10. 제 9항에 있어서,
    상기 인터럽트하는 단계는,
    상기 제1 스레드가 상기 브로드캐스트 시그널을 통해서 깨어나는 단계; 및
    상기 카운터 변수를 감소시키는 단계를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  11. 제 10항에 있어서,
    상기 인터럽트하는 단계는,
    상기 제1 스레드에 설정된 상기 모니터에 대한 정보를 삭제하는 단계를 더 포함하는, 인터럽트 가능한 스레드 동기화 방법.
  12. 제 1항 내지 제 11항 중 어느 한 항에 의한 방법을 실행하기 위한 컴퓨터로 읽을 수 있는 프로그램을 기록한 기록매체.
  13. 소정의 프로그램을 실행하는 프로세싱부; 및
    상기 프로세싱부의 동작에 필요한 메모리를 제공하는 주 저장부를 포함하고,
    상기 프로그램은 소정의 모니터를 사용하여 소정의 객체에 대한 하나 이상의 스레드들의 상호 배제적인 접근을 제어하는 제1 컴퓨터 코드, 및 상기 모니터를 대기하는 스레드를 인터럽트하는 제2 컴퓨터 코드를 포함하는, 디지털 연산 장치.
KR1020060018411A 2006-02-24 2006-02-24 인터럽트 가능한 스레드 동기화 방법 및 장치 KR100763200B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020060018411A KR100763200B1 (ko) 2006-02-24 2006-02-24 인터럽트 가능한 스레드 동기화 방법 및 장치
US11/655,928 US8286166B2 (en) 2006-02-24 2007-01-22 Interruptible thread synchronization method and apparatus
JP2007042022A JP4685044B2 (ja) 2006-02-24 2007-02-22 インタラプト可能なスレッド同期化方法および記録媒体
EP07102974A EP1826671B1 (en) 2006-02-24 2007-02-23 Interruptible thread synchronization method and apparatus
DE602007011131T DE602007011131D1 (de) 2006-02-24 2007-02-23 Verfahren und Vorrichtung für unterbrechbare Threadsynchronisation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060018411A KR100763200B1 (ko) 2006-02-24 2006-02-24 인터럽트 가능한 스레드 동기화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070088159A KR20070088159A (ko) 2007-08-29
KR100763200B1 true KR100763200B1 (ko) 2007-10-04

Family

ID=38137445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060018411A KR100763200B1 (ko) 2006-02-24 2006-02-24 인터럽트 가능한 스레드 동기화 방법 및 장치

Country Status (5)

Country Link
US (1) US8286166B2 (ko)
EP (1) EP1826671B1 (ko)
JP (1) JP4685044B2 (ko)
KR (1) KR100763200B1 (ko)
DE (1) DE602007011131D1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101963922B (zh) * 2010-09-29 2012-12-05 用友软件股份有限公司 任务处理方法和装置
WO2013156040A1 (en) 2012-04-17 2013-10-24 Volvo Lastvagnar Ab A device for preventing theft of a first vehicle component, which is releasably connected to a second vehicle component
JP6295990B2 (ja) * 2015-03-31 2018-03-20 京セラドキュメントソリューションズ株式会社 電子機器および情報処理プログラム

Citations (7)

* 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
KR19990013394A (ko) * 1997-07-07 1999-02-25 제프리엘.포맨 컴퓨터 자원 억세스 제어 장치 및 그 방법
JPH1173334A (ja) * 1997-08-29 1999-03-16 Sony Corp データ処理方法、記録媒体及びデータ処理装置
EP0909094A1 (en) 1997-10-07 1999-04-14 CANAL+ Société Anonyme Multithread data processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
KR20030018891A (ko) * 2001-08-31 2003-03-06 현대자동차주식회사 멀티 스레드 처리방법
KR20030056656A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2781742B2 (ja) 1995-05-30 1998-07-30 甲府日本電気株式会社 並列計算機
US6108754A (en) * 1997-04-03 2000-08-22 Sun Microsystems, Inc. Thread-local synchronization construct cache
US5924098A (en) * 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6026427A (en) * 1997-11-21 2000-02-15 Nishihara; Kazunori Condition variable to synchronize high level communication between processing threads
JP3575593B2 (ja) 1999-12-27 2004-10-13 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトのロック管理方法及び装置
US6951018B2 (en) * 2000-05-30 2005-09-27 Sun Microsystems, Inc. Method and apparatus for efficiently tracking monitors
US20020103942A1 (en) * 2000-06-02 2002-08-01 Guillaume Comeau Wireless java device
US6910209B2 (en) * 2001-04-30 2005-06-21 Sun Microsystems, Inc. Clean thread termination
GB0112571D0 (en) * 2001-05-24 2001-07-18 Ibm Priority inversion in computer system supporting multiple processes
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP3798726B2 (ja) * 2002-04-26 2006-07-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体
US7216346B2 (en) 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7844973B1 (en) * 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US20060136886A1 (en) * 2004-12-16 2006-06-22 Bret Patterson Process and implementation for interrupting locked threads
US7716249B2 (en) * 2005-09-16 2010-05-11 Microsoft Corporation Transaction and task scheduler
US7681197B1 (en) * 2005-09-21 2010-03-16 Sun Microsystems, Inc. Nested monitor handling processes

Patent Citations (7)

* 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
KR19990013394A (ko) * 1997-07-07 1999-02-25 제프리엘.포맨 컴퓨터 자원 억세스 제어 장치 및 그 방법
JPH1173334A (ja) * 1997-08-29 1999-03-16 Sony Corp データ処理方法、記録媒体及びデータ処理装置
EP0909094A1 (en) 1997-10-07 1999-04-14 CANAL+ Société Anonyme Multithread data processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
KR20030018891A (ko) * 2001-08-31 2003-03-06 현대자동차주식회사 멀티 스레드 처리방법
KR20030056656A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법

Also Published As

Publication number Publication date
JP2007226807A (ja) 2007-09-06
EP1826671A2 (en) 2007-08-29
EP1826671B1 (en) 2010-12-15
KR20070088159A (ko) 2007-08-29
EP1826671A3 (en) 2009-07-08
US8286166B2 (en) 2012-10-09
JP4685044B2 (ja) 2011-05-18
US20070204269A1 (en) 2007-08-30
DE602007011131D1 (de) 2011-01-27

Similar Documents

Publication Publication Date Title
JP4759273B2 (ja) データ処理装置及び共用資源へのアクセス制御方法
US8327336B2 (en) Enhanced thread stepping
US7904436B2 (en) Realtime-safe read copy update with lock-free readers
CN108139946B (zh) 用于在冲突存在时进行有效任务调度的方法
US8938738B2 (en) Shared user-mode for controlling synchronized access to a shared resource
JP6219445B2 (ja) 中央処理ユニット及び画像処理ユニットの同期機構
US20140380101A1 (en) Apparatus and method for detecting concurrency error of parallel program for multicore
US20110047549A1 (en) Manipulating a spin bit within the wait primitive
CA2999755A1 (en) Accelerating task subgraphs by remapping synchronization
US9286120B2 (en) Resource management with dynamic resource budgeting
JP6367490B2 (ja) プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護
US7444634B2 (en) Method and apparatus for providing dynamic locks for global resources
KR100763200B1 (ko) 인터럽트 가능한 스레드 동기화 방법 및 장치
US8390631B2 (en) Synchronizing queued data access between multiple GPU rendering contexts
US20140149621A1 (en) Switching a Locking Mode of an Object in a Multi-Thread Program
US20120059997A1 (en) Apparatus and method for detecting data race
US20150019846A1 (en) System level architecture verification for transaction execution in a multi-processing environment
US20150193268A1 (en) File lock and unlock mechanism
US9021483B2 (en) Making hardware objects and operations thread-safe
CN111338831B (zh) 一种多线程运行性能的处理方法、装置、介质和电子设备
US8276147B2 (en) Low synchronization means of scheduler finalization
US20150268706A1 (en) System and method for memory power management in a system on a chip with multiple execution environments
US20170371675A1 (en) Iteration Synchronization Construct for Parallel Pipelines
US9141310B1 (en) Methods and apparatuses for shared state information among concurrently running processes or threads
US20130179731A1 (en) Recovering from a thread hang

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

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140822

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150820

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160819

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170817

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180820

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190814

Year of fee payment: 13