W tym artykule zrozumiemy model wielowątkowości w systemie operacyjnym.
Model wielowątkowy:
Wielowątkowość pozwala aplikacji podzielić swoje zadania na poszczególne wątki. W przypadku wielowątkowości ten sam proces lub zadanie można wykonać poprzez liczbę wątków lub możemy powiedzieć, że w przypadku wielowątkowości istnieje więcej niż jeden wątek do wykonania zadania. Dzięki zastosowaniu wielowątkowości można osiągnąć wielozadaniowość.
klauzule sql
Główną wadą systemów jednowątkowych jest to, że w danym momencie można wykonywać tylko jedno zadanie, więc aby przezwyciężyć tę wadę jednowątkową, istnieje wielowątkowość, która umożliwia wykonywanie wielu zadań.
Na przykład:
W powyższym przykładzie klient1, klient2 i klient3 uzyskują dostęp do serwera WWW bez żadnego oczekiwania. W przypadku wielowątkowości kilka zadań może być wykonywanych jednocześnie.
W systemie operacyjnym wątki dzielą się na wątek na poziomie użytkownika i wątek na poziomie jądra. Wątki na poziomie użytkownika obsługiwane są niezależnie od jądra i tym samym zarządzane bez jakiejkolwiek obsługi jądra. Z drugiej strony system operacyjny bezpośrednio zarządza wątkami na poziomie jądra. Niemniej jednak musi istnieć jakaś forma relacji między wątkami na poziomie użytkownika i na poziomie jądra.
Istnieją trzy ustalone modele wielowątkowości klasyfikujące te relacje:
- Model wielowątkowości wiele do jednego
- Model wielowątkowości jeden do jednego
- Wiele do wielu modeli wielowątkowych
Model wielowątkowości wiele do jednego:
Model wiele do jednego odwzorowuje wiele wątków poziomów użytkownika na jeden wątek jądra. Ten typ relacji ułatwia efektywne środowisko przełączania kontekstu, które można łatwo zaimplementować nawet na prostym jądrze bez obsługi wątków.
referencyjne typy danych w Javie
Wadą tego modelu jest to, że ponieważ w danym momencie istnieje tylko jeden harmonogram wątków na poziomie jądra, model ten nie może wykorzystać akceleracji sprzętowej oferowanej przez procesy wielowątkowe lub systemy wieloprocesorowe. W tym przypadku całe zarządzanie wątkami odbywa się w przestrzeni użytkownika. Jeśli nastąpi blokowanie, model ten blokuje cały system.
Na powyższym rysunku model wiele do jednego kojarzy wszystkie wątki na poziomie użytkownika z pojedynczymi wątkami na poziomie jądra.
np.histogram
Model wielowątkowy jeden do jednego
Model jeden do jednego odwzorowuje pojedynczy wątek na poziomie użytkownika na pojedynczy wątek na poziomie jądra. Ten typ relacji ułatwia równoległe działanie wielu wątków. Jednak ta zaleta ma swoją wadę. Generowanie każdego nowego wątku użytkownika musi obejmować utworzenie odpowiedniego wątku jądra, powodując obciążenie, które może utrudniać działanie procesu nadrzędnego. Systemy operacyjne Windows i Linux próbują rozwiązać ten problem, ograniczając wzrost liczby wątków.
Na powyższym rysunku jeden model kojarzy jeden wątek na poziomie użytkownika z pojedynczym wątkiem na poziomie jądra.
Wiele do wielu Model wielowątkowy modelu
W tego typu modelu istnieje kilka wątków na poziomie użytkownika i kilka wątków na poziomie jądra. Liczba utworzonych wątków jądra zależy od konkretnej aplikacji. Deweloper może utworzyć dowolną liczbę wątków na obu poziomach, ale mogą one nie być takie same. Model wiele do wielu jest kompromisem pomiędzy dwoma pozostałymi modelami. W tym modelu, jeśli jakikolwiek wątek wykona blokujące wywołanie systemowe, jądro może zaplanować wykonanie innego wątku. Ponadto wraz z wprowadzeniem wielu wątków nie występuje złożoność, jak w poprzednich modelach. Chociaż model ten pozwala na tworzenie wielu wątków jądra, nie można w nim osiągnąć prawdziwej współbieżności. Dzieje się tak dlatego, że jądro może zaplanować tylko jeden proces na raz.
Wiele lub wiele wersji modelu wielowątkowości wiąże kilka wątków na poziomie użytkownika z tą samą lub znacznie mniejszą różnorodnością wątków na poziomie jądra na powyższym rysunku.