Native POSIX Thread Library
Native POSIX Thread Library (NPTL) - biblioteka umozliwiajaca efektywne uruchamianie programow zgodnych ze standardem POSIX Threads na jadrze Linux. Cechuje ja bardzo duza wydajnosc, np. uruchomienie 100 000 watkow na komputerze klasy IA-32 zajmuje bez uzycia NPTL ok. 15 minut, a przy uzyciu NPTL czas ten zmniejsza sie do okolo 2 sekund.
Historia
[edytuj | edytuj kod]NPTL jest dostepna od wersji 2.6 jadra Linux. Wczesniej tworzono watki przy uzyciu wywolania systemowego clone() z odpowiednimi flagami. Proces macierzysty rozgalezial sie wtedy na dwa watki, ktore wspoldzielily ze soba przestrzen adresowa i tablice deskryptorow plikow. Pierwsza ,,prawdziwa" implementacja watkow w jadrze Linux byl projekt o nazwie LinuxThreads. To on wprowadzil mozliwosc prostszego korzystania z watkow w przestrzeni uzytkownika. W wielu dystrybucjach do dzis mozna spotkac te wlasnie implementacje watkow.
Jednak LinuxThreads jest stosunkowo powolnym rozwiazaniem, dlatego firma IBM zaprezentowala swoja koncepcje realizacji watkow w jadrze Linux. Rozwiazanie to nosi nazwe NGPT (ang. Next Generation POSIX Threads). Okazalo sie jednak, ze rozwiazanie proponowane przez firme Red Hat jest zdecydowanie wydajniejsze. W roku 2003 firma IBM zakonczyla prace nad NGPT.
Pomyslem promowanym przez Red Hata byla wlasnie biblioteka NPTL. Wymagala ona pewnych zmian w jadrze i do dzis nie wszyscy dystrybutorzy systemu Linux zdecydowali sie przejsc na te implementacje watkow. NPTL pojawila sie pierwszy raz w systemie Red Hat Linux 9. NPTL wychodzi z zalozenia, ze kazdy watek mozna zaprezentowac jako proces. Jadro nie widzi roznicy miedzy watkiem a procesem, poza jednym wyjatkiem - przy przelaczaniu watkow nie trzeba przelaczac przestrzeni adresowej, co znacznie skraca czas potrzebny na przelaczenie procesu.