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

Native POSIX Thread Library

NPTL(Native POSIX Thread Library)은 리눅스 운영 체제용 POSIX Threads 사양의 구현이다.

역사

Linux 커널의 2.6 버전 이전에는 프로세스가 스케줄링 가능한 엔터티였으며, 스레드를 위한 특별한 설비가 없었다.[1]하지만 시스템 호출이 있었다.복제 - 이 복사본이 발신자의 주소 공간을 공유하는 호출 프로세스의 복사본을 만든다.LinuxThreads 프로젝트는 커널 레벨 스레드를 제공하기 위해 이 시스템 호출을 사용했다(Linux의 이전 스레드 구현의 대부분은 전적으로 사용자랜드에서 작동했다).불행히도, 특히 신호 처리, 스케줄링 및 프로세스 간 동기화 원시 요소 영역에서 POSIX를 부분적으로만 준수했다.

LinuxThreads를 개선하려면 일부 커널 지원과 새로운 스레딩 라이브러리가 필요할 것이 분명했다.IBM의 개발자가 참여한 팀이 작업한 차세대 POSIX 스레드(NGPT)와 Red Hat의 개발자가 작업한 NPTL 등 두 가지 경쟁 프로젝트가 시작되었다.NGPT 팀은 NPTL 팀과 긴밀하게 협력하여 두 구현의 최상의 기능을 NPTL로 결합했다.그 후 NGPT 프로젝트는 그것의 최고의 특징을 NPTL로 통합한 후 2003년 중반에 포기되었다.

NPTL은 Red Hat 리눅스 9에서 처음 출시되었다.구식 리눅스 POSIX 스레딩은 윈도즈가 당시 더 잘했다고 알려진 것, 발생 시 선점할 기회를 잡지 않기 때문에 가끔 시스템에 양보하지 않는 스레드에 문제가 있는 것으로 알려져 있다.레드햇은 NPTL이 레드햇 리눅스9의 자바에 대한 Java 웹사이트의 기사에서 이 문제를 해결했다고 주장했다.[2]

NPTL은 버전 3부터 Red Hat Enterprise Linux에 속했고, 버전 2.6부터는 Linux 커널에 속했다.그것은 이제 GNU C 라이브러리에 완전히 통합된 부분이다.[3]

PTT(PosIX Trad Trace Tool)라고 불리는 NPTL에 대한 추적 툴이 있다.그리고 POSIX 표준과 비교하여 NPTL 라이브러리를 테스트하기 위해 OPTS(Open POSIX Test Suite)가 작성되었다.

디자인

NPTL은 커널에 의해 알려진 1차 추상화는 여전히 프로세스라는 점에서 LinuxThreads와 유사한 접근방식을 사용하며, 클론() 시스템 호출(NPTL 라이브러리에서 호출)으로 새로운 스레드가 생성된다.그러나 NPTL은 스레드가 절전 모드로 전환하고 다시 깨울 수 있는 동기화 원시성의 경합된 사례를 구현(예:)하기 위해 전문 커널 지원이 필요하다.이것에 사용된 원시적인 것은 futex라고 알려져 있다.

NPTL은 사용자가 만든 그 스레드(srads)에서 이른바 1×1 스레드 라이브러리다.pthread_create()라이브러리 함수)는 커널(Linux의 경우 tasks)에서 스케줄링 가능한 엔터티와 1-1로 대응된다.이것은 가능한 가장 간단한 스레딩 구현이다.

NPTL의 1×1 모델의 대안은 m×n 모델이다.

참고 항목

참조

외부 링크