KR100745888B1 - 데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치 - Google Patents

데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치 Download PDF

Info

Publication number
KR100745888B1
KR100745888B1 KR1020057002791A KR20057002791A KR100745888B1 KR 100745888 B1 KR100745888 B1 KR 100745888B1 KR 1020057002791 A KR1020057002791 A KR 1020057002791A KR 20057002791 A KR20057002791 A KR 20057002791A KR 100745888 B1 KR100745888 B1 KR 100745888B1
Authority
KR
South Korea
Prior art keywords
thread
kernel
user
threads
kernel thread
Prior art date
Application number
KR1020057002791A
Other languages
English (en)
Other versions
KR20050058362A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20050058362A publication Critical patent/KR20050058362A/ko
Application granted granted Critical
Publication of KR100745888B1 publication Critical patent/KR100745888B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

스레드들을 관리하기 위한 방법, 장치, 및 컴퓨터 명령문이 개시된다. 사용자 스레드와 연관된 커널 스레드는, 그 사용자 스레드에 의해 불필요한 것으로서 검출된다. 커널 스레드가 불필요한 상태인 것에 응답하여, 스택들을 변경하지 않는 그 스레드에 대한 데이터에서, 커널 스레드는 반-분리된다.
스레드, 사용자 스레드, 커널 스레드, 분리 목록, 반 분리 목록, 스택

Description

데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법 및 장치{METHOD AND APPARATUS FOR HANDLING THREADS IN A DATA PROCESSING SYSTEM}
본 발명은 일반적으로 향상된 데이터 처리 시스템에 관한 것이고, 구체적으로는 데이터 처리 시스템에서 스레드들을 관리하기 위한 방법 및 장치에 관한 것이다.
스레드는 중앙 처리 장치 이용의 기본 유닛이다. 스레드는 일반적으로 프로그램 카운터(program counter), 레지스터 세트(register set), 및 스택 공간(stack space)을 갖는다. 스레드는 그 코드 섹션(code section), 데이터 섹션, 그리고 오픈 파일들 및 신호들과 같은 운영 체계 자원들(operating system resources)을 다른 스레드와 공유한다. 이러한 컴포넌트들은 "태스크(task)"라고도 알려져 있다. 어떤 시스템들은, 스레드 스위칭(thread switching)이 운영 체계를 호출하여 커널에 인터럽트를 발생시킬 필요가 없도록, 시스템 호출을 통하지 않고 사용자 레벨 라이브러리에서 사용자 스레드들을 구현한다.
스레드는 여러 국면에서 프로세스와 동일한 방식으로 동작한다. 스레드는 다음의 몇몇 상태들 중 하나의 상태에 있을 수 있다: 준비(ready), 차단(blocked), 휴면(sleeping), 실행(running), 또는 종료(terminated). 사용자 공간 내의 사용 자 스레드들은 커널(kernel) 내의 커널 스레드들에 의해 실행된다. 커널 스레드는 "가상 프로세서 (virtual processor)" 라고도 불린다. 어떤 경우에는, 각각의 사용자 스레드가 그에 대응하는 커널 스레드를 갖는 일대일 모델이 사용된다. 다른 경우에는, 향상된 성능을 위해서, 많은 수의 사용자 스레드가 적은 수의 커널 스레드 상에서 실행되는 M:N 모델이 사용된다. 이러한 모델에서는, 특정 사용자 스레드를 실행하기 위해서 커널 스레드가 더 이상 필요하지 않은, 뮤텍스(mutex) 차단과 같은 상황이 발생한다. 뮤텍스(mutex)는, 객체를 잡고(grab) 해제(release)하는 데 사용되는 프로그래밍 플래그(flag)의 사용을 포함하는 잠금 메커니즘(locking mechanism)이다. 공유될 수 없는 데이터를 얻거나 시스템 내의 다른 곳에서 동시에 수행될 수 없는 처리가 시작된 때에는, 뮤텍스는 "잠금(lock)"으로 설정되어, 그것을 사용하고자 하는 다른 시도들을 차단한다. 그러한 데이터가 더 이상 필요하지 않거나 그 루틴(routine)이 끝난 때에는, 뮤텍스는 "잠금 해제(unlock)"로 설정된다. 현재 실행 가능한 다른 사용자 스레드가 없는 경우에, 이러한 커널 스레드는 그 특정 사용자 스레드로부터 그 자체를 분리(detach)하여 휴면 상태에 들어갈 것이다.
휴면 상태에 들어가기 위한 커널 스레드의 분리는 다수의 동작(action)의 발생을 야기한다. 한 가지 동작은, 커널 스레드가 사용자 스택으로부터 그 자체의 보다 작은 스택으로 스위칭하는 것이다. 또한, 커널 스레드는 대부분의 신호들을 차단하도록 신호 마스킹(signal masking)을 설정한다. 커널 스레드가 다시 필요한 경우에, 이 스레드는 사용자 스레드의 스택으로 스위칭하여, 신호 마스크들과 같은 몇몇 스레드 고유 속성들(thread specific attributes)을 설정할 것이다.
본 발명은 현재 사용되는 이러한 분리 및 후속하는 재부착 메커니즘(reattachment mechanism)이 큰 성능 부하(performance overhead)를 수반함을 인식한다. 각각의 분리 또는 재부착은, 사용자 공간으로부터 커널 공간으로 또는 커널 공간으로부터 사용자 공간으로 데이터를 복사하기 위한 시스템 호출(system call)을 요구한다. 게다가 몇몇 잠금들(locks)은 커널 라이브러리 및 커널 양쪽에서 사용되어 잠금 경합(lock contention)의 증가를 초래한다. 이러한 유형의 분리는 또한 잠재적인 신호 핸들링 문제들을 포함한다. 구체적으로는, 커널 스레드가 그 작은 커널 스택 상에서 실행되는 동안 신호를 수신할 수 있는 작은 창(small window)이, 그 커널 스레드가 신호들을 차단하기 이전에 존재한다. 본 발명은 또한, 보다 큰 사용자 스레드 스택 상에서는 잘 실행되는 신호 핸들러(signal handler)가, 보다 작은 커널 스레드 스택에 오버플로를(overflow) 발생시켜 메모리를 손상(corrupt)시키고, 그리고/또는 애플리케이션에 코어 덤프(core dump)를 유발함을 인식한다.
이러한 두 가지 문제, 즉 성능 부하 및 스택 오버플로(overflow)는 별개의 문제이지만 유사한 근본 원인을 갖는다. 이 원인은 "유휴(idle)" 커널 스레드의 분리이다. 그러므로 성능 부하를 감소시키고, 스택 오버플로(overflow)를 막는 방식으로 유휴 커널 스레드들을 핸들링하기 위한 향상된 방법, 장치, 및 컴퓨터 명령문을 갖는 것이 유익할 것이다.
본 발명은 스레드들을 관리하기 위한 방법, 장치, 및 컴퓨터 명령문을 제공한다. 사용자 스레드와 연관된 커널 스레드는, 그 사용자 스레드가 필요로 하지 않는 것으로서 검출된다. 커널 스레드가 불필요한 상태인 것에 응답하여, 스택들을 변경하지 않는 그 스레드에 대한 데이터에서, 커널 스레드는 반-분리(semi-detached)된다.
바람직하게는 커널 스레드는 반-분리 목록(semi-detached list)에 올려지며, 사용자 스레드와 동시에(concurrent) 실행 불가 상태(unrunnable state)에 놓인다.
바람직하게는 사용자 스레드가 휴면 상태(sleeping)에서 깨어난 때에, 커널 스레드는 사용자 스레드에의 재부착이 불필요하도록 반-분리 목록으로부터 제거된다.
바람직하게는 스레드들은 AIX 운영 체계에서 실행된다.
바람직하게는 커널 스레드에 대한 데이터는, 그 커널 스레드를 반-분리하기 위해 그 데이터를 커널 스택으로 복사하는 단계를 요구하지 않고 사용자 스택 상에 잔존한다.
바람직하게는 커널 스레드가 불필요함을 검출하는 단계, 및 커널 스레드를 반-분리하는 단계는 라이브러리(library)를 이용하여 수행된다.
바람직하게는 사용자 스레드가 휴면 상태에서 깨어난 때에, 제2 커널 스레드가 반-분리되지 않고 분리되는지 여부가 결정되며, 제2 커널 스레드가 분리되는 경우에 이는 사용자 스레드에 부착된다.
바람직하게는, 실행 불가 상태는 대기 상태(waiting state) 또는 휴면 상태 중 하나이다.
다른 국면에 따르면, 본 발명은 스레드들을 관리하기 위한 데이터 처리 시스템을 제공한다. 이 데이터 처리 시스템은 버스 시스템(bus system), 버스 시스템에 접속된 통신 유닛(communication unit), 버스 시스템에 접속되며 한 세트의 명령문을 포함하는 메모리, 및 버스 시스템에 접속되는 처리 유닛을 포함하며, 상기 처리 유닛은, 사용자 스레드와 연관된 커널 스레드가 그 사용자 스레드에 의해 불필요한 때에 그 커널 스레드를 검출하고, 커널 스레드가 불필요한 상태인 것에 응답하여, 스택들을 변경하지 않는 그 스레드에 대한 데이터에서, 커널 스레드를 반-분리하도록 한 세트의 명령문을 실행한다.
본 발명은 단지 예시로서, 첨부된 도면에서 도시된 바와 같은 바람직한 실시예를 참조하여 기술될 것이다.
도 1은 본 발명의 바람직한 실시예에 따라 본 발명이 구현될 수 있는 데이터 처리 시스템 (data processing system)의 도시적 표현(pictorial representation).
도 2는 본 발명이 구현될 수 있는 데이터 처리 시스템의 블록도.
도 3은 커널 스레드들을 핸들링하는데 사용되는 컴포넌트를 도시하는 도면.
도 4A 내지 4C는 반-분리 목록에 사용되는 데이터 구조들을 도시하는 도면들.
도 5는 차단 호출들(blocking calls)을 핸들링하기 위해 사용되는 공지된 방법의 흐름도.
도 6은 유휴 스레드들을 관리하기 위해 사용되는 방법의 흐름도.
도 7은 커널 스레드를 휴면 상태에서 깨우기 위해 사용되는 공지된 방법의 흐름도.
도 8은 커널 스레드를 핸들링하기 위해 사용되는 방법의 흐름도.
이제 도면들과 구체적으로는 도 1을 참고하면, 본 발명이 구현될 수 있는 데이터 처리 시스템의 도시적 표현이 본 발명의 바람직한 실시예에 따라 도시되어 있다. 시스템 유닛(102), 비디오 디스플레이 터미널(104), 키보드(106), 플로피 드라이브 및 다른 유형의 영구적(permanent) 및 착탈식(removable) 저장 매체를 포함할 수 있는 저장 장치(108), 및 마우스(110)를 포함하는 컴퓨터(100)가 도시되어 있다. 부가적인 입력 장치들이 컴퓨터(100)에 포함될 수 있는데, 이들은, 예를 들면, 조이스틱, 터치패드, 터치스크린, 트랙볼, 마이크로폰 등이다. 컴퓨터(100)는 임의의 적합한 컴퓨터, 이를테면 뉴욕 아몬크(Armonk)에 위치한 International Business Machines Corporation의 제품들이 IBM eServer 컴퓨터 또는 IntelliStation 컴퓨터를 사용하여 구현될 수 있다. 도시된 표현이 컴퓨터를 보여주고 있지만, 본 발명의 다른 실시예들은 네트워크 컴퓨터와 같은 다른 유형의 데이터 처리 시스템에서 구현될 수도 있다. 컴퓨터(100)는 또한 바람직하게는, 컴퓨터(100) 내에서 동작하는 컴퓨터 판독 가능 매체에 상주하는 시스템 소프트웨어에 의해 구현될 수 있는 그래픽 사용자 인터페이스(graphical user interface)를 포함한다.
이제 도 2를 참조하면, 본 발명이 구현될 수 있는 데이터 처리 시스템의 블록도가 도시되어 있다. 데이터 처리 시스템(200)은 도 1의 컴퓨터(100)와 같은 컴퓨터의 일례로서, 그 내부에 본 발명의 프로세스들을 구현하는 코드 또는 명령문이 위치할 수 있다. 데이터 처리 시스템(200)은 주변 컴포넌트 상호접속 로컬 버스 아키텍처(peripheral component interconnect local bus architecture)를 사용한다. 도시된 예는 PCI 버스를 사용하지만, 가속 그래픽 포트(Accelerated Graphics Port; AGP) 및 산업계 표준 아키텍처(Industry Standard Architecture; ISA)와 같은 다른 버스 구조들도 사용될 수 있다. 프로세서(202) 및 주기억장치(204)는 PCI 브리지(PCI bridge; 208)를 통해 PCI 로컬 버스(206)에 접속된다. PCI 브리지(208)는 또한 프로세서(202)를 위해 통합된 메모리 컨트롤러 및 캐시 메모리(cache memory)를 포함할 수도 있다. 도시된 예에서, 근거리 통신망 어댑터(LAN adapter; 210), 작은 컴퓨터 시스템 인터페이스 SCSI 호스트 버스 어댑터(212), 및 확장 버스 인터페이스(expansion bus interface; 214)는, 직접 컴포넌트 연결에 의해 PCI 로컬 버스(206)에 접속된다. 반면, 오디오 어댑터(216), 그래픽 어댑터(218), 그리고 오디오/비디오 어댑터(219)는, 확장 슬롯들 내로 삽입된 추가 기능 보드들(add-in boards)에 의해 PCI 로컬 버스(206)에 접속된다. 확장 버스 인터페이스(214)는 키보드 및 마우스 어댑터(220), 모뎀(222), 및 추가 메모리(224)를 위한 접속을 제공한다. SCSI 호스트 버스 어댑터(212)는 하드디스크 드라이브(226), 테이프 드라이브(228), 및 CD-ROM 드라이브(230)를 위한 접속을 제공한다. 전형적인 PCI 로컬 버스 구현들은 세 개 혹은 네 개의 PCI 확장 슬롯 또는 추가 기능 커넥터 를 지원한다.
운영 체계는 프로세서(202) 상에서 실행되며 도 2의 데이터 처리 시스템(200) 내의 다양한 컴포넌트들의 제어를 조정(coordinate)하고 제공하는데 사용된다. 운영 체계는 Advanced Interactive eXecutive (AIX) 또는 윈도우즈 XP와 같은 상용화된 운영 체계일 수 있다. AIX는 유닉스(UNIX)의 한 버전이며 IBM 코퍼레이션(International Business Machines Corporation)으로부터 구할 수 있다. 윈도우 XP는 마이크로소프트 코퍼레이션(Microsoft Corporation)으로부터 구할 수 있다. 운영 체계를 위한 명령문 및 애플리케이션 또는 프로그램은, 하드디스크 드라이브(226)와 같은 저장장치 상에 위치하며, 프로세서(202)에 의한 실행을 위해 주기억장치(204) 내로 로딩될 수 있다.
당업자들은 도 2의 하드웨어가 구현에 따라 달라질 수 있음을 인식할 것이다. 플래시 판독-전용 메모리(ROM), 등가 비휘발성 메모리(equivalent nonvolatile memory), 또는 광디스크 드라이브 등과 같은 다른 내장 하드웨어 또는 주변 장치들이 도 2에 도시된 하드웨어에 추가적으로 혹은 이를 대체하여 사용될 수 있다. 또한 본 발명의 프로세스들은 다중 프로세서 데이터 처리 시스템에도 적용될 수 있다.
예를 들어, 데이터 처리 시스템(200)은, 선택적으로 네트워크 컴퓨터로서 구성되는 경우에, SCSI 호스트 버스 어댑터(212), 하드디스크 드라이브(226), 테이프 드라이브(228), 및 CD-ROM 드라이브(230)를 포함하지 않을 수 있다. 그러한 경우에, 컴퓨터, 정확히 말하면, 클라이언트 컴퓨터는, LAN 어댑터(210), 모뎀(222) 등 과 같은 어떤 유형의 네트워크 통신 인터페이스를 포함한다. 다른 예로, 데이터 처리 시스템(200)은, 데이터 처리 시스템(200)이 어떤 유형의 네트워크 통신 인터페이스를 포함하는지 여부와 무관하게, 어떤 유형의 네트워크 통신 인터페이스에 의존하지 않고도 부팅 가능(bootable)하도록 구성된 자립형 시스템일 수 있다. 추가적인 예로, 데이터 처리 시스템(200)은, 운영 체계 파일들 및/또는 사용자 생성 데이터(user-generated data)를 저장하기 위한 비휘발성 메모리를 제공하도록 ROM 및/또는 플래시 ROM으로 구성된 개인 휴대 정보 단말기(personal digital assistant; PDA)일 수 있다.
도 2에 도시된 예와 앞서 기술된 예들은 구조적 제한(architectural limitation)을 의미하고자 하는 것이 아니다. 예를 들어, 데이터 처리 시스템(200)은, PDA의 형태를 취하는 것 외에도 노트북 컴퓨터 또는 휴대용 컴퓨터(hand-held computer)일 수 있다. 데이터 처리 시스템(200)은 또한 키오스크(kiosk) 또는 웹 어플라이언스(web-appliance)일 수 있다.
본 발명의 프로세스들은, 예를 들면, 주기억장치(204), 메모리(224)와 같은 메모리, 또는 하나 이상의 주변 장치들(226 내지 230)에 위치할 수 있는 컴퓨터 구현 명령문(computer implemented instruction)을 사용하여 프로세서(202)에 의해 수행된다.
이제 도 3을 살펴보면, 커널 스레드들을 핸들링하는데 사용되는 컴포넌트들을 기술하는 도면이 본 발명의 바람직한 실시예에 따라 도시되어 있다. 이 예에서 사용자 스레드들(300, 302, 304, 306, 및 308)은 사용자 스페이스(310)에 위치하는 한편, 커널 스레드들(312, 314, 및 316)은 커널 스페이스(318)에 위치한다. 이 예의 이러한 스레드들은, 성능을 향상시키도록 많은 수의 사용자 스레드가 적은 수의 커널 스레드 상에서 실행되는 M:N 모델을 따른다.
현재, 사용자 스레드(300)는 커널 스레드(312)에 의해 실행되고, 사용자 스레드(304)는 커널 스레드(314)에 의해 실행되며, 사용자 스레드(306)는 커널 스레드(316)에 의해 실행된다. 이러한 사용자 스레드들에 대해 수행되는 동작들(operations)은 사용자 스레드 스택들(320)에 위치한다. 각각의 사용자 스레드는 하나의 사용자 스레드 스택과 연관된다. 커널 스레드들(312, 314, 및 316)은 사용자 스레드 스택들(320) 내에 위치한 데이터를 갖는다. 사용자 스레드 스택들(320) 내의 특정 스택은 커널 스레드에 의해 실행되는 사용자 스레드와 연관된 스택이다.
일반적으로, 커널 스레드(312)와 같은 커널 스레드가, 사용자 스레드(300)와 같은 사용자 스레드를 실행하는데 더 이상 필요하지 않은 경우에는, 커널 스레드(312)는 그 자체를 분리시켜 사용자 스레드(300)와 함께 휴면 상태에 들어갈 것이다. 휴면 상태에 있는 커널 스레드는 일반적으로 P스레드 라이브러리(Pthread library; 324)에 의해 관리되는 분리 목록(322)에 올려진다. P스레드 라이브러리(324)는, AIX에서 사용되는, 동적 로드가능 라이브러리(dynamically loadable library)이다. 사용자 스레드(300)로부터 분리됨에 따라, 사용자 스레드 스택들(320) 내의 사용자 스레드 스택을 가리키는(point) 현재 스택 포인터를 나타내는, 커널 스레드(312)에 대한 정보는 커널 스레드 스택들(326) 내의 그 커널 스레드 스택을 위해 예정된(reserved) 공간을 가리키도록 수정된다. 사용자 스레드(300)가 휴면 상태에서 깨어날 때, 커널 스레드(312)는 분리 목록(322)으로부터 제거되며 사용자 스레드(300)에 재부착된다. 대안적으로, 커널 스레드(312)가 가용불가(unavailable)한 경우, 분리 목록(322) 내의 다른 가용한 커널 스레드가 사용자 스레드(300)에 부착될 수 있다.
본 발명의 바람직한 실시예에 따라, 사용자 스레드(300)가, 커널 스레드(312)가 불필요한 상태, 이를테면 휴면 상태에 들어가면, 커널 스레드(312)는 P스레드 라이브러리(324)에 의해 분리 목록(322)이 아닌, 반-분리 목록(328) 상에 올려진다. 반-분리 시, 커널 스레드(312)는 그것의 스택 또는 신호 마스크를 변경하지 않는다. 그 대신, 커널 스레드(312)는 반-분리 목록(328) 상에 올려지며 사용자 스레드(300)와 동시에 휴면 상태에 들어간다. 이러한 동시적 휴면 상태에서, 커널 스레드(312)는 그와 동시에 휴면 상태에 들어간 사용자 스레드의 스택 및 신호 마스크와 같은 정보를 유지한다. 이러한 정보를 "사용자 스레드 고유 속성들(user thread specific attributes)" 이라고 한다. 이러한 동시적 휴면 상태를 통해, 커널 스레드(312)는 그 자체를 다른 사용자 스레드들을 실행하는데 가용한 것으로 식별하지만, 분리 목록(322) 상의 스레드가 우선적으로 사용되는 것을 선호할 것이다. 우선권(preference)은 커널 스레드(312)가 연관되어 있는 사용자 스레드, 즉 사용자 스레드(300)를 실행하는 것에 주어진다. 반-분리 목록(328)은, 특정 구현에 따라 상이한 방식으로도 구현될 수 있다. 이 예에서, 이러한 목록은 스레드 구조들의 링크된 커널(linked kernel)로서 구현되었다.
사용자 스레드(300)가 휴면 상태에서 깨어난 경우, 커널 스레드(312)는 그 자체를 반-분리 목록(328)에서 삭제하고 사용자 스레드(300)의 실행을 계속할 것이다. 이러한 메커니즘은 P스레드 라이브러리(324) 내의 스레드를 깨우는데 있어 보다 적은 지연시간(latency)이 걸리는 경로(path)를 제공한다. 그러한 메커니즘은 경쟁 뮤텍스(contested mutex), 조건 변수(condition variable), 또는 신호로부터 깨어나는 경우에 유용한데, 이는 이러한 이벤트들에 이어서 수행되는 동작들이 종종 프로그램의 나머지 부분이 진행하기 전에 완료되어야 할 필요가 있기 때문이다.
반-분리 목록(328) 내의 커널 스레드가 차후에 다른 사용자 스레드를 실행하는데 필요한 경우에, 잔존하는 분리(remaining detachment)에 대한 성능 불이익(performance penalty)은, 커널 스레드를 분리하지 않고 현재 사용자 스레드의 상태로부터 새로운 사용자 스레드의 상태로 분리함으로써 피할 수 있다. 예를 들어, 커널 스레드(312)가 반-분리 목록(328) 상에 있고, 사용자 스레드(302)와 같은 다른 사용자 스레드가 그 스레드를 실행하기 위해 커널 스레드(312)를 요구하는 경우에, 사용자 스레드(300)와 연관된 스택은, 사용자 스레드(302)의 속성들과 매칭(match)되도록 사용자 스레드(300)에 대한 그 스택 내의 속성들을 변경함으로써, 사용자 스레드(302)에 부착될 수 있다. 예를 들어, 스택 포인터와 신호 마스크는 사용자 스레드(300)에 대한 것들로부터 사용자 스레드(302)에 대한 것들로 변경될 수 있다.
그 결과, 커널 스레드는, 그 커널 스레드와 연관된 사용자 스레드가 나가거나(exit) 종료하는 경우에만 완전히 분리된다. 따라서 일반적인 분리들과 연관된 성능 부하는 대부분의 경우에 방지된다.
도 4A 내지 4C를 살펴보면, 반-분리 목록에서 사용되는 데이터 구조들의 예시들이 본 발명의 바람직한 실시예에 따라 도시되어 있다. 이러한 데이터 구조들은, 도 3의 반-분리 목록(328)과 같은, 반-분리 목록을 구현하는데 사용될 수 있다.
도 4A에서, 링크 목록(linked list)은 상이한 커널 스레드들을 가리키는데 사용된다. 예를 들어, 엔트리들(entries; 400 및 402)은 상이한 커널 스레드들을 가리키는데 사용된다. 목록 헤드 마커(list head marker)(406)는 링크 목록의 시작을 식별한다. 엔트리(400)는 이전 포인터(previous pointer; 408) 및 다음 포인터(next pointer; 410)를 포함한다. 엔트리(402)는 이전 포인터(412) 및 다음 포인터(414)를 포함한다. 이러한 포인터들은 링크 목록 내의 이전 및 다음 엔트리를 가리키는데 사용된다. 나아가, 엔트리(400)는 포인터(416)를 포함하고, 엔트리(402)는 포인터(418)를 포함하며, 이 포인터들은 커널 스레드들(420 및 422)과 같은 커널 스레드들을 가리킨다.
다음으로 도 4B에서, 목록 구조에서 사용된 정보는 스레드 구조들로 통합된다. 이 예에서 목록 헤드 마커(430)는 시작 또는 제1 스레드인 커널 스레드(432)를 가리킨다. 커널 스레드(432)는, 커널 스레드(436)를 가리키는 다음 포인터(434)를 포함한다. 커널 스레드(432)는 또한, 목록 내의 어떤 이전 커널을 가리키는 이전 포인터(438)를 포함한다. 커널 스레드(436)는, 커널 스레드(432)를 도로 가리키는 이전 포인터(440)를 포함한다. 커널 스레드(436) 내의 다음 포인터(442)는 목록 내의 다음 커널 스레드를 가리킨다. 이 예는 도시된 예들에서 바람직한 목록 구조이다.
도 4C에서, 배열(array; 450)은 상이한 커널 스레드들을 가리키는 데 사용된다. 목록 헤드 마커(452)는 포인터들(454, 456, 및 458)을 포함하는 배열(450)의 시작을 가리킨다. 이 포인터들은 각각 커널 스레드들(460, 462, 및 464)을 가리킨다. 이러한 예들은 반-분리 목록이 어떻게 구현될 수 있는지에 대한 예시들로서 제공된다. 트리(tree)와 같은 다른 유형의 구조들이 특정 구현예에 따라 사용될 수도 있다.
이제 도 5를 참고하면, 차단 호출(blocking call)을 핸들링하기 위해 사용되는 공지된 방법의 흐름도가 도시되어 있다. 도 5에서 도시된 방법은, 도 3의 P스레드 라이브러리(324)와 같은 라이브러리에서 구현될 수 있다. 차단 호출은, 사용자 레벨 스레드로 하여금 실행 상태 또는 실행가능 상태로부터 대기 상태 또는 휴면 상태인 다른 상태로 변경되도록 하는 임의의 호출이다.
이 방법은 잠재적인 차단 호출(potentially blocking call)을 검출함으로써 시작된다(단계(500)). 이 방법은 커널 스레드를 사용자 스레드로부터 분리시킨다(단계(502)). 단계(502)는, 신호 마스킹(signal masking)을 차단 신호들(block signals)로 변경하는 것과 같은 다른 동작들뿐만 아니라, 사용자 스레드 스택으로부터 커널 스레드 스택으로 정보를 복사하는 것의 부하를 요구한다. 이어서, 그 방법은 실행할 새로운 사용자 스레드를 찾는다(단계(504)). 실행 가능한 스레드가 발견되면, 커널 스레드는 그 새로운 사용자 스레드에 부착된다(단계(506)). 단계(506)는, 신호 마스크를 설정(set up)하는 것뿐만 아니라, 커널 스레드 스택으로부 터 사용자 스레드 스택으로 데이터를 복사하는 것과 같은 부하를 포함한다. 새로운 사용자 스레드가 실행된 후(단계 (508)), 그 방법은 종료된다.
다시 단계(504)를 참조하면, 실행 가능한 스레드가 없는 경우에, 커널 스레드는 분리 목록 상에 올려지며 휴면 상태로 들어간다(단계(510)). 그 후에, 방법은 실행 가능한 사용자 스레드가 검출되기를 기다린다(단계(512)). 그 후, 커널 스레드는 실행 가능한 것으로 검출된 사용자 스레드에 부착된다(단계(514)). 사용자 스레드는 이어서 커널 스레드에 의해 실행되며(단계(516)), 그 후에 방법은 종료된다.
이제 도 6을 살펴보면, 본 발명의 바람직한 실시예에 따라 유휴 스레드들(idle threads)을 관리하기 위한 방법의 흐름도가 도시되어 있다. 도 6에 도시된 방법은 도 3의 P스레드 라이브러리(324)와 같은 라이브러리에서 구현될 수 있다.
이 방법은 잠재적인 차단 호출을 검출함으로써 시작된다(단계(600)). 이러한 잠재적인 차단 호출은 사용자 레벨 스레드를 대기 또는 휴면 상태로 들어가게 하는 것이다. 대기 상태 또는 휴면 상태의 스레드를 실행 불가(non-runnable) 스레드라고 한다. 그 후, 방법은 실행할 새로운 사용자 스레드를 찾는다(단계(602)). 실행 가능한 스레드가 발견되면, 방법은 커널 스레드를 새로운 사용자 스레드로 스위칭한다(단계(604)). 단계(604)에서의 스위칭은 사용자 레벨 실행 배정기(user level dispatcher)의 사용을 통해 이루어질 수 있다. 특정 구현예에 따라, 이러한 스위칭은 커널 스레드의 분리 및 재부착을 요구할 수도 있고 그렇지 않을 수도 있다. 사용자 스레드는 커널 스레드에 의해 실행되며(단계(606)), 그 후 방법은 종료된다.
다시 단계(602)로 돌아가서, 실행 가능한 사용자 스레드들이 발견되지 않은 경우에는, 커널 스레드는 반-분리 휴면 상태에 놓일 것이다(단계(608)). 이러한 유형의 휴면에서, 커널 스레드는 반-분리 목록 상에 올려지며 이어서 휴면 상태로 들어간다. 그 커널 스레드와 연관된 사용자 스레드는 유지되거나 커널 스레드와 함께 반-분리 목록 상에 열거된다. 이러한 연관은, 사용자 스레드를 실행하기 위해 그 특정 커널 스레드를 사용하는 것이, 필요하지 않은 이상 다른 사용자 스레드를 실행하는 것보다 선호됨을 나타내기 위해 행해진다.
그 후에, 이벤트가 검출되고 처리된다(단계(610)). 그 이벤트가 커널 스레드와 연관된 사용자 스레드가 실행 가능하게 된 것이라면, 그 사용자 스레드는 커널 스레드에 의해 실행되며(단계(612)), 그 후 방법은 종료된다. 다시 단계(610)를 참조하면, 커널 스레드와 연관된 사용자 스레드가 나가거나(exit) 그 커널 스레드를 필요로 하지 않는 경우에, 커널 스레드는 분리 목록상에 올려지고 휴면 상태에 들어가며(단계(614)), 그 후 방법은 종료된다. 보다 구체적으로, 단계(614)는 도 5에서 도시된 일련의 단계들로 들어가서 단계(510)에서 시작된다.
단계(610)로 돌아가서, 이벤트가 임의의 다른 이벤트인 경우에는, 방법은 실행할 사용자 스레드를 찾는다(단계(616)). 실행 가능한 스레드를 발견하지 못한 경우에, 방법은 단계(608)로 돌아간다. 그렇지 않고, 다른 사용자 스레드가 실행 가능하게 된 경우에는, 방법은 실행 가능하게 된 사용자 스레드로 커널 스레드를 스위칭한다(단계(618)). 이 단계는 분리 및 부착의 두 가지 동작을 포함한다. 대 안적으로, 커널 스레드가 현재 사용자 스레드로부터 새로운 사용자 스레드로 스위칭되는 하나의 동작이 채택될 수도 있다. 이어서 그 사용자 스레드는 커널 스레드에 의해 실행되며(단계(620)), 그 후 방법은 종료된다.
이제 도 7을 참고하면, 커널 스레드를 깨우기 위해 사용되는 공지된 방법의 흐름도가 도시되어 있다. 도 7에서 도시된 방법은 도 3의 P스레드 라이브러리(324)와 같은 라이브러리에서 구현될 수 있다. 이 도면에서 도시된 방법은, 사용자 스레드가 실행 가능하게 된 것으로 검출될 때까지, 스레드로 하여금 대기 또는 휴면하도록 한다.
이 방법은 커널 스레드들에 대한 분리 목록을 점검함으로써 시작된다(단계(700)). 분리 목록이 비어있지 않으면, 커널 스레드는 그 분리 목록으로부터 제거된다(단계(702)). 커널 스레드가 휴면 상태에서 깨어나고(단계(704)), 방법은 그 후 종료된다. 다시 단계(700)를 참조하면, 분리 목록이 비어있는 경우에, 방법은 종료된다.
이제 도 8을 살펴보면, 본 발명의 바람직한 실시예에 따라 커널 스레드를 핸들링하기 위한 방법의 흐름도가 도시되어 있다. 도 8에서 도시된 방법은 도 3의 P스레드 라이브러리(324)와 같은 라이브러리에서 구현될 수 있다. 이러한 방법은 다른 커널 스레드를 실행 가능하게 하는 커널 스레드에서 개시된다.
이 방법은 커널 스레드에 대한 분리 목록을 점검함으로써 시작된다(단계 (800)). 분리 목록이 비어있는 경우에, 방법은 커널 스레드에 대한 반-분리 목록을 점검한다(단계(802)). 반-분리 목록이 비어있으면, 방법은 종료된다. 그렇지 않고, 반-분리 목록이 비어있지 않은 경우에는, 커널 스레드는 그 반-분리 목록으로부터 제거된다(단계(804)). 반-분리 목록으로부터 제거된 이러한 커널 스레드는 휴면 상태에서 깨어나고(단계(806)), 방법은 그 후 종료된다. 이 시점에서, 커널 스레드가 실행된다.
다시 단계(800)를 참조하면, 분리 목록이 비어있지 않은 경우에, 커널 스레드는 분리 목록으로부터 제거된다(단계(808)). 커널 스레드는 휴면 상태에서 깨어나고(단계(810)), 방법은 그 후 종료된다. 어떤 상황에서는 반-분리보다는 분리가 필요할 수 있기 때문에, 본 발명의 메커니즘은 여전히 분리 목록을 이용한다. 이러한 목록은 현존하는 사용자 스레드들에게 필요할 수 있다. 이러한 경우에, 사용자 스레드를 깨우는 때에, 분리 목록으로부터 커널 스레드를 선택하는 것이, 반-분리 목록으로부터 커널 스레드를 선택하는 것보다 선호된다.
따라서 본 발명은 유휴 커널 스레드들의 핸들링을 위한, 개선된 방법, 장치, 및 컴퓨터 명령문을 제공한다. 본 발명의 메커니즘은, 커널 스레드들의 분리 및 후속하는 재부착에 일반적으로 수반되는 부하를 방지한다. 나아가, 본 발명의 메커니즘은, 발생할 수 있는 스택 오버플로(stack overflow)도 방지한다. 이러한 장점들은, 반-분리 방법의 사용을 통해 제공된다. 이 방법은 커널 스레드를 반-분리 목록에 올리는 단계와, 그 후 커널 스레드를 휴면 상태에 놓는 단계를 포함한다. 이러한 단계들은 사용자 스레드로부터 커널 스레드를 분리하는데 일반적으로 요구되는 단계들을 요구하지 않고도 일어난다.
본 발명이 완전히 기능하는 데이터 처리 시스템의 문맥으로 기술되었지만, 당업자들은, 본 발명의 프로세스들이 명령문의 컴퓨터 판독가능 매체의 형태 및 다양한 형태로 배포될 수 있으며, 본 발명이 그 배포를 수행하는데 실제로 사용되는 신호 운반 매체(signal bearing media)의 특정 유형에 관계없이 동등하게 적용된다는 점을 인식할 것이라는 점에 유념하는 것이 중요하다.
컴퓨터 판독가능 매체의 예들은, 플로피 디스크, 하드디스크 드라이브, RAM, CD-ROM, DVD-ROM과 같은 기록가능 유형 매체(recordable-type media), 및 디지털 및 아날로그 통신 링크, 유선 또는 무선 통신 링크(예를 들어, 무선 주파수 및 광파 전송과 같은 전송 형태들을 사용)와 같은 전송 유형 매체(transmission-type media)를 포함한다. 컴퓨터 판독가능 매체는, 특정 데이터 처리 시스템에서의 실제 사용에 대하여 디코딩되는, 코딩된 포맷들(coded formats)의 형태를 취할 수 있다.

Claims (11)

  1. 데이터 처리 시스템에서 스레드들(threads)을 관리하기 위한 방법으로서,
    사용자 스레드와 연관된 커널 스레드(kernel thread)로서, 상기 사용자 스레드에 의해 현재 필요로 되고 있지 않은 커널 스레드를 검출하는 단계 - 상기 사용자 스레드는 연관된 사용자 스레드 스택을 가짐 -; 및
    상기 커널 스레드가 현재 필요로 되고 있지 않은 상태임에 응답하여, 상기 사용자 스레드와 연관된 상기 사용자 스레드 스택 상에 상기 커널 스레드에 대한 데이터를 유지하면서 상기 커널 스레드를 반-분리 목록(semi-detached list)에 올림으로써 상기 커널 스레드를 반-분리(semi-detach)하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 커널 스레드를 상기 사용자 스레드와 동시에 실행 불가 상태(unrunnable state)에 놓는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 사용자 스레드가 휴면 상태(sleep)에서 깨어난 것에 응답하여, 상기 커널 스레드를 상기 반-분리 목록으로부터 제거하는 단계 - 이 경우 상기 사용자 스레드에의 재부착(reattachment)은 불필요함 - 를 더 포함하는 방법.
  4. 제2항에 있어서,
    또 다른 사용자 스레드가 휴면 상태에서 깨어난 것에 응답하여, 제2의 커널 스레드가 반-분리가 아닌 분리된 상태인지 여부를 판정하는 단계; 및
    상기 제2의 커널 스레드가 현재 분리된 상태임에 응답하여, 상기 제2의 커널 스레드를 상기 또 다른 사용자 스레드에 부착하는 단계
    를 더 포함하는 방법.
  5. 제2항에 있어서, 상기 실행 불가 상태는 대기 상태 또는 휴면 상태 중 하나인 방법.
  6. 스레드들을 관리하기 위한 데이터 처리 시스템으로서,
    제1 내지 5항 중 어느 한 항에 따른 방법의 각 단계를 수행하기 위한 각 수단을 포함하는 데이터 처리 시스템.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 스레드들을 관리하기 위한, 컴퓨터 판독 가능한 기록 매체로서, 제1항 내지 제5항 중 어느 한 항에 따른 방법을 수행하기 위한 명령문(instructions)을 포함하는 컴퓨터 판독 가능한 기록 매체.
KR1020057002791A 2002-09-19 2003-08-11 데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치 KR100745888B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/246,889 US7275247B2 (en) 2002-09-19 2002-09-19 Method and apparatus for handling threads in a data processing system
US10/246,889 2002-09-19

Publications (2)

Publication Number Publication Date
KR20050058362A KR20050058362A (ko) 2005-06-16
KR100745888B1 true KR100745888B1 (ko) 2007-08-02

Family

ID=31992385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057002791A KR100745888B1 (ko) 2002-09-19 2003-08-11 데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치

Country Status (9)

Country Link
US (1) US7275247B2 (ko)
JP (1) JP4418752B2 (ko)
KR (1) KR100745888B1 (ko)
CN (1) CN100356328C (ko)
AU (1) AU2003249094A1 (ko)
BR (1) BRPI0314853B1 (ko)
CA (1) CA2498050C (ko)
TW (1) TWI235953B (ko)
WO (1) WO2004027599A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185895B2 (en) * 2005-11-30 2012-05-22 International Business Machines Corporation Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data
US8214834B2 (en) * 2007-04-30 2012-07-03 Hewlett-Packard Development Company, L.P. Asynchronous wakeup mechanism that places reference to process on sleep queue if execution of copyout functionality is caused to sleep
US20080307419A1 (en) * 2007-06-06 2008-12-11 Microsoft Corporation Lazy kernel thread binding
US20080313656A1 (en) * 2007-06-18 2008-12-18 Microsoft Corporation User mode stack disassociation
US20080313647A1 (en) * 2007-06-18 2008-12-18 Microsoft Corporation Thread virtualization techniques
TWI386814B (zh) 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
US8752057B1 (en) * 2008-06-30 2014-06-10 Emc Corporation Techniques for synchronizing processing of at least two code threads
US8321874B2 (en) * 2008-09-30 2012-11-27 Microsoft Corporation Intelligent context migration for user mode scheduling
US8473964B2 (en) 2008-09-30 2013-06-25 Microsoft Corporation Transparent user mode scheduling on traditional threading systems
DE102012104461A1 (de) 2012-05-23 2013-12-12 B. Braun Avitum Ag Medizinisches Gerät zur extrakorporalen Blutbehandlung mit mehreren Sensoreinheiten
US8930956B2 (en) * 2012-08-08 2015-01-06 International Business Machines Corporation Utilizing a kernel administration hardware thread of a multi-threaded, multi-core compute node of a parallel computer
US20150074436A1 (en) * 2013-09-10 2015-03-12 Nvidia Corporation In-Kernel CPU Clock Boosting on Input Event
US9411642B2 (en) 2014-01-17 2016-08-09 Nvidia Corporation Using high priority thread to boost CPU clock rate
US9594660B2 (en) * 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9678901B2 (en) 2015-11-16 2017-06-13 International Business Machines Corporation Techniques for indicating a preferred virtual processor thread to service an interrupt in a data processing system
US10503576B2 (en) * 2016-02-19 2019-12-10 International Business Machines Corporation Maintaining core dump privacy during application fault handling
US10331500B2 (en) 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
US10599430B2 (en) * 2017-04-05 2020-03-24 Cavium, Llc Managing lock and unlock operations using operation prediction
US10895954B2 (en) * 2017-06-02 2021-01-19 Apple Inc. Providing a graphical canvas for handwritten input
CN115934372A (zh) * 2023-03-09 2023-04-07 浪潮电子信息产业股份有限公司 一种数据处理方法、系统、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980079506A (ko) * 1997-03-28 1998-11-25 포맨 제프리 엘 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치
KR19990079641A (ko) * 1998-04-08 1999-11-05 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
KR20010094951A (ko) * 2000-04-04 2001-11-03 포만 제프리 엘 다중 스레드를 이용하는 처리 시스템과 다중 스레드 이용방법, 다중 독립 스레드 실행 방법과 스레드 실행 제어장치, 스레드와 연계한 프리페치 버퍼 이용 방법, 및스레드 실행 콘트롤러

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US6732138B1 (en) * 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US5812852A (en) * 1996-11-14 1998-09-22 Kuck & Associates, Inc. Software implemented method for thread-privatizing user-specified global storage objects in parallel computer programs via program transformation
US5950221A (en) * 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6654781B1 (en) * 1998-12-11 2003-11-25 International Business Machines Corporation Enhanced thread processing
US6542920B1 (en) * 1999-09-24 2003-04-01 Sun Microsystems, Inc. Mechanism for implementing multiple thread pools in a computer system to optimize system performance
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6832266B1 (en) * 2000-02-07 2004-12-14 Sun Microsystems, Inc. Simplified microkernel application programming interface
US6728722B1 (en) * 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980079506A (ko) * 1997-03-28 1998-11-25 포맨 제프리 엘 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치
KR19990079641A (ko) * 1998-04-08 1999-11-05 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
KR20010094951A (ko) * 2000-04-04 2001-11-03 포만 제프리 엘 다중 스레드를 이용하는 처리 시스템과 다중 스레드 이용방법, 다중 독립 스레드 실행 방법과 스레드 실행 제어장치, 스레드와 연계한 프리페치 버퍼 이용 방법, 및스레드 실행 콘트롤러

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TR-14-07-95 of Friedrich-Alexander University, "Sleeping Threads: A Kernel Mechanism for Support of efficient User Level Threads", Christoph Koppe (Aug. 1995)

Also Published As

Publication number Publication date
AU2003249094A1 (en) 2004-04-08
CN1735865A (zh) 2006-02-15
CN100356328C (zh) 2007-12-19
KR20050058362A (ko) 2005-06-16
JP4418752B2 (ja) 2010-02-24
WO2004027599A2 (en) 2004-04-01
US7275247B2 (en) 2007-09-25
TWI235953B (en) 2005-07-11
CA2498050C (en) 2010-07-27
JP2005539322A (ja) 2005-12-22
BR0314853A (pt) 2005-08-09
BRPI0314853B1 (pt) 2016-03-22
TW200409020A (en) 2004-06-01
AU2003249094A8 (en) 2004-04-08
CA2498050A1 (en) 2004-04-01
WO2004027599A3 (en) 2005-04-21
US20040060049A1 (en) 2004-03-25

Similar Documents

Publication Publication Date Title
KR100745888B1 (ko) 데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치
US7734881B2 (en) Adapting RCU for real-time operating system usage
US9304794B2 (en) Virtual machine control method and virtual machine system using prefetch information
US5991790A (en) Generation and delivery of signals in a two-level, multithreaded system
US20150169346A1 (en) Method for controlling a virtual machine and a virtual machine system
US7971205B2 (en) Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status
US6629175B1 (en) Efficient adapter context switching
JP4840945B2 (ja) ユーザ・モード・ドライバへ割り込みを配送する方法
US6931553B1 (en) Preventing general purpose event interrupt storms in a computer system
US20100287360A1 (en) Task Processing Device
JP2003345612A (ja) 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びにコンピュータ・プログラム
US20120216204A1 (en) Creating a thread of execution in a computer processor
US7404193B2 (en) Method, system, and program for accessing device driver functions
US7412597B2 (en) Computer system and booting method thereof
US7743234B2 (en) Facilitating communication within an emulated processing environment
JP2001216172A (ja) マルチos構成方法
JP3519047B2 (ja) レジスタ・ビット更新処理方法,プロセッサ及びデータ処理システム
US20080288693A1 (en) Parallel Processing Device and Exclusive Control Method
WO2023144939A1 (ja) コンピュータ、制御方法及び制御プログラム
JPH06259383A (ja) 割込み制御方法及び割込み制御装置
JPS63276635A (ja) 割り込み制御方法
JPH10312294A (ja) 情報処理装置、情報処理方法、及び、情報処理プログラムを記録した読み取り可能な記録媒体

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee