네이티브 POSIX 스레드 라이브러리

네이티브 POSIX 스레드 라이브러리(Native POSIX Thread Library, NPTL)는 리눅스 운영 체제를 위한 POSIX 스레드 사양의 구현체이다.

역사
리눅스 커널 2.6 버전 이전에는 프로세스가 스케줄링 가능한 엔터티였으며, 스레드를 위한 특별한 기능은 없었다.pthreads(7) — Linux manual page
그러나 호출 프로세스의 주소 공간을 공유하는 복사본을 생성하는 이라는 시스템 호출이 있었다. 리눅스 스레드 프로젝트는 이 시스템 호출을 사용하여 커널 수준 스레드를 제공했다(리눅스의 이전 스레드 구현 대부분은 완전히 사용자 영역에서 작동했다). 불행히도, 신호 처리, 스케줄링, 프로세스 간 동기화 프리미티브 영역에서 POSIX를 부분적으로만 준수했다.

리눅스 스레드를 개선하기 위해서는 일부 커널 지원과 새로운 스레딩 라이브러리가 필요하다는 것이 분명해졌다. 이 요구 사항을 해결하기 위해 두 가지 경쟁 프로젝트가 시작되었다: IBM의 개발자를 포함한 팀이 작업한 NGPT(차세대 POSIX 스레드)와 레드햇의 개발자가 작업한 NPTL이다. NGPT 팀은 NPTL 팀과 긴밀히 협력하여 두 구현의 최상의 기능을 NPTL에 통합했다. NGPT 프로젝트는 2003년 중반에 최상의 기능을 NPTL에 병합한 후 중단되었다.

NPTL은 레드햇 리눅스 9에서 처음 출시되었다. 구식 리눅스 POSIX 스레딩은 시스템에 양보하기를 거부하는 스레드에 문제가 있는 것으로 알려져 있었는데, 이는 당시 윈도우가 더 잘하는 것으로 알려진 선점 기회를 잡지 못했기 때문이다. 레드햇은 자바 웹사이트의 레드햇 리눅스 9의 자바에 대한 기사에서 NPTL이 이 문제를 해결했다고 주장했다.Red Hat Linux 9 and Java 2 Platform, Standard Edition 1.4.2: A Winning Combination

NPTL은 버전 3부터 레드햇 엔터프라이즈 리눅스의 일부였으며, 리눅스 커널 2.6 버전부터 포함되었다. 현재는 GNU C 라이브러리의 완전히 통합된 부분이다.GNU C Library version 2.3.3 release

NPTL을 위한 추적 도구인 POSIX Thread Trace Tool(PTT)이 존재한다. 그리고 POSIX 표준에 대해 NPTL 라이브러리를 테스트하기 위해 Open POSIX Test Suite(OPTS)가 작성되었다.

설계
리눅스 스레드와 마찬가지로 NPTL은 1:1 스레드 라이브러리이다. 라이브러리(pthread_create를 통해)에 의해 생성된 스레드는 커널의 스케줄링 가능한 엔터티(리눅스의 경우 프로세스)와 일대일로 대응한다. 이는 세 가지 스레딩 모델(1:1, N:1, 및 M:N) 중 가장 간단한 모델이다. 새 스레드는 NPTL 라이브러리를 통해 호출되는 clone() 시스템 호출로 생성된다. NPTL은 사용자 공간 잠금을 보다 효율적으로 구현하기 위해 futex에 대한 커널 지원에 의존한다.

 같이 보기 

 리눅스 스레드
 라이브러리 (컴퓨터 과학)
 그린 스레드

 각주 

 외부 링크 
 NPTL 추적 도구 NPTL을 사용하여 다중 스레드 응용 프로그램을 추적하고 디버깅하는 오픈 소스 도구.

분류:리눅스 커널
분류:C POSIX 라이브러리
분류:스레드