Wielowątkowość

Z Wikipedii, wolnej encyklopedii

Wielowątkowość (ang. multithreading) – cecha systemu operacyjnego, dzięki której w ramach jednego procesu może być wykonywanych kilka zadań nazywanych wątkami. Nowe zadania to kolejne ciągi instrukcji realizowane do pewnego stopnia niezależnie. Wszystkie wątki (zadania) w ramach tego samego procesu współdzielą tą samą wirtualną przestrzeń adresową zawierającą kod programu i jego dane.

Wielowątkowość może także odnosić się do samych procesorów. W takim przypadku oznacza ona możliwość jednoczesnego wykonywania wielu wątków w sposób sprzętowy na pojedynczej jednostce wykonawczej – rdzeniu fizycznym (ang. core). Wielowątkowość w procesorach możliwa jest do zrealizowania dzięki temu, że w danym momencie nie wszystkie części rdzenia są w jednakowym stopniu wykorzystywane przez pojedynczy wątek (ciąg instrukcji, zadanie). Nieaktywne części rdzenia mogą w tym samym czasie wykonywać inny wątek, zwiększając efektywność wykorzystania całego procesora, a tym samym jego wydajność. W zależności od rodzaju technik zastosowanych do obsługi dodatkowych wątków sprzętowych spotyka się od 2 (najczęściej) do nawet 8 wątków realizowanych sprzętowo na pojedynczym rdzeniu fizycznym procesora. Każdy taki wątek realizowany sprzętowo nazywany jest rdzeniem wirtualnym.

Cechy wielowątkowości[edytuj | edytuj kod]

  • wszystkie wątki wykonują się w ramach tylko jednego programu (procesu) – innymi słowy jeden proces posiada wiele instancji wykonawczych (wątków)
  • wątki zostały wprowadzone, aby umożliwić przetwarzanie współbieżne, np. gdy zachodzi potrzeba wykonania wielu zadań jednocześnie. Może się to wiązać również ze zwiększeniem wydajności przetwarzania o ile istnieją odpowiednie zasoby sprzętowe (co najmniej wiele procesorów jednordzeniowych lub pojedynczy procesor wielordzeniowy). Należy jednak pamiętać, iż zastosowanie wątków może obniżyć wydajność, ponieważ najczęściej wymagane jest przy tym wprowadzenie odpowiednich mechanizmów synchronizacji, takich jak np. semafory;
  • wszystkie wątki danego procesu współdzielą tę samą wirtualną przestrzeń adresową (mają dostęp do tych samych „egzemplarzy” zmiennych, obiektów i struktur) i korzystają z tych samych zasobów systemowych;
  • komunikacja między wątkami w odróżnieniu od procesów jest bardzo łatwa do wykonania – w przypadku wątków wystarczy odwoływać się do tych samych zmiennych i obiektów – komunikacja między procesami wymaga zastosowania mechanizmów IPC (ang. InterProcess Communication);
  • współdzielenie wirtualnej przestrzeni adresowej niesie zagrożenie – jeden „wadliwy” wątek może zagrozić wykonaniu całego procesu (programu);
  • każdy wielowątkowy system operacyjny zapewnia specyficzne metody synchronizacji wątków, które z wyżej wymienionych przyczyn muszą być bezwzględnie zaimplementowane.

Wielowątkowe systemy operacyjne to m.in. Windows 95, Windows NT i ich następcy, BeOS, Unix i systemy bazujące na jądrze Linux.

Zobacz też[edytuj | edytuj kod]