Native POSIX Thread Library
Native POSIX Thread Library (NPTL) – biblioteka umożliwiająca efektywne uruchamianie programów zgodnych ze standardem POSIX Threads na jądrze Linux. Cechuje ją bardzo duża wydajność, np. uruchomienie 100 000 wątków na komputerze klasy IA-32 zajmuje bez użycia NPTL ok. 15 minut, a przy użyciu NPTL czas ten zmniejsza się do około 2 sekund.
Historia
NPTL jest dostępna od wersji 2.6 jądra Linux. Wcześniej tworzono wątki przy użyciu wywołania systemowego clone() z odpowiednimi flagami. Proces macierzysty rozgałęział się wtedy na dwa wątki, które współdzieliły ze sobą przestrzeń adresową i tablicę deskryptorów plików. Pierwszą „prawdziwą” implementacją wątków w jądrze Linux był projekt o nazwie LinuxThreads. To on wprowadził możliwość prostszego korzystania z wątków w przestrzeni użytkownika. W wielu dystrybucjach do dziś można spotkać tę właśnie implementację wątków.
Jednak LinuxThreads jest stosunkowo powolnym rozwiązaniem, dlatego firma IBM zaprezentowała swoją koncepcję realizacji wątków w jądrze Linux. Rozwiązanie to nosi nazwę NGPT (ang. Next Generation POSIX Threads). Okazało się jednak, że rozwiązanie proponowane przez firmę Red Hat jest zdecydowanie wydajniejsze. W roku 2003 firma IBM zakończyła prace nad NGPT.
Pomysłem promowanym przez Red Hata była właśnie biblioteka NPTL. Wymagała ona pewnych zmian w jądrze i do dnia dzisiejszego nie wszyscy dystrybutorzy systemu Linux zdecydowali się przejść na tę implementację wątków. NPTL pojawiła się pierwszy raz w systemie Red Hat Linux 9. NPTL wychodzi z założenia, że każdy wątek można zaprezentować jako proces. Jądro nie widzi różnicy między wątkiem a procesem, poza jednym wyjątkiem – przy przełączaniu wątków nie trzeba przełączać przestrzeni adresowej, co znacznie skraca czas potrzebny na przełączenie procesu.
Zobacz też
- wątek
- planista
- Linux
- POSIX Threads