Native POSIX Thread Library: Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja nieprzejrzana] |
Linki do stron w innych język |
zm kategorii: programowanie równoległe |
||
Linia 2: | Linia 2: | ||
==Historia== |
==Historia== |
||
NPTL jest dostępna od wersji 2.6 jądra systemu [[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 systemie 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. |
NPTL jest dostępna od wersji 2.6 jądra systemu [[Linux (jądro)]]. 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 systemie 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 systemie 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]]. |
Jednak [[LinuxThreads]] jest stosunkowo powolnym rozwiązaniem, dlatego firma [[IBM]] zaprezentowała swoją koncepcję realizacji wątków w systemie 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]]. |
||
Linia 12: | Linia 12: | ||
* [[Linux]] |
* [[Linux]] |
||
* [[Planista]] |
* [[Planista]] |
||
* [[POSIX Threads]] |
|||
==Linki zewnętrzne== |
==Linki zewnętrzne== |
||
Linia 18: | Linia 19: | ||
{{Oprogramowanie stub}} |
{{Oprogramowanie stub}} |
||
[[Kategoria:Linux]] |
[[Kategoria:Linux]] |
||
[[Kategoria:Programowanie równoległe]] |
|||
[[en:Native POSIX Thread Library]] |
[[en:Native POSIX Thread Library]] |
Wersja z 18:36, 30 lis 2007
NPTL (ang. Native POSIX Thread Library) - to linuksowa implementacja wątków. Cechuje ją bardzo duża szybkość działania. 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 systemu Linux (jądro). 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 systemie 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 systemie 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.