Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

W ą t e k (lekki proces) thread. Co to jest wątek?  To wydzielony fragment wykonywanego programu  To jednostka wykonawcza w obrębie jednego procesu,

Podobne prezentacje


Prezentacja na temat: "W ą t e k (lekki proces) thread. Co to jest wątek?  To wydzielony fragment wykonywanego programu  To jednostka wykonawcza w obrębie jednego procesu,"— Zapis prezentacji:

1 W ą t e k (lekki proces) thread

2 Co to jest wątek?  To wydzielony fragment wykonywanego programu  To jednostka wykonawcza w obrębie jednego procesu, będąca kolejnym ciągiem instrukcji wykonywanym w obrębie tych samych danych (w tej samej przestrzeni adresowej).

3 W ą t k i  Wątki tego samego procesu korzystają ze wspólnego kodu i danych, mają jednak oddzielne stosy.  W systemach wieloprocesorowych, a także w systemach z wywłaszczaniem, wątki mogą być wykonywane równocześnie (współbieżnie). Równoczesny dostęp do wspólnych danych grozi jednak utratą spójności danych i w konsekwencji błędem działania programu.

4 W ą t e k  Stan wątku jest zdefiniowany małą ilością odrębnych danych.  Grupa równoprawnych wątków dzieli kod, przestrzeń adresową i zasoby systemu operacyjnego.  Środowisko w którym działa wątek nazywa się zadaniem lub procesem.

5 Tradycyjny proces  Tradycyjny (ciężki) proces jest równoważny zadaniu z tylko jednym wątkiem.  Zadanie nic nie robi, jeśli nie ma w nim ani jednego wątku, z kolei wątek może przebiegać w dokładnie jednym zadaniu.

6 Pojedynczy wątek  Pojedynczy wątek ma przynajmniej własny stan rejestrów i na ogół własny stos.  Daleko posunięty podział powoduje, że przełączanie procesora między równoprawnymi wątkami, jak również tworzenie wątków jest tanie w porównaniu z przełączaniem kontekstu między tradycyjnymi procesami.

7 W ą t k i  Wstrzymanie jednego wątku i włączenie innego wątku jest względnie dobrym rozwiązaniem zagadnienia – w jaki sposób jeden system obsługi może efektywnie wykonać wiele zamówień.  Wiele wątków sterowania jest powiązanych z kilkoma zasobami dzielonymi.

8 Sposoby traktowania wątków  Wątki mogą być obsługiwane przez jądro. (Jest tak w przypadku systemów operacyjnych Mach i OS/2).  W tym przypadku systemy zawierają zbiór funkcji podobnych do tych, które obsługują procesy.

9 Sposoby traktowania wątków Inne podejście polega na tworzeniu wątków powyżej jądra systemu za pomocą zbioru funkcji bibliotecznych wykonywanych na poziomie użytkownika (takie rozwiązanie przyjęto w systemie Andrew).

10 Systemy wielowątkowe  Przykładem takiego systemu jest system Mach.  Jego jadro może obsługiwać wiele zamówień naraz.  W tym przypadku wątki synchronizują się same – nowy wątek z tej samej grupy zadziała dopiero wtedy, gdy bieżący wątek odda sterowanie.

11 Systemy wielowątkowe  Wielowątkowość to cecha systemu operacyjnego, dzięki której w ramach jednego procesu może wykonywać kilka wątków lub jednostek wykonawczych. Nowe wątki to kolejne ciągi instrukcji wykonywane oddzielnie. Wszystkie wątki tego samego procesu współdzielą kod programu i dane. W systemach nie obsługujących wielowątkowości pojęcia procesu i wątku utożsamiają się.  Systemy wielowątkowe to m.in. BeOS, Microsoft Windows 95, Windows NT, Unix.

12 Systemy wielowątkowe  Wątek bieżący powinien oddawać sterowanie tylko w takiej chwili, w której nie zmienia on wspólnych danych.  W systemach z asynchronicznymi wątkami musi istnieć jawny mechanizm zajmowania danych, taki jak w systemach, w których wiele procesów dzieli wspólne dane.

13 Systemy wielowątkowe  Jeśli zadanie składa się z wielu wątków, to w czasie gdy jeden z wątków jest zablokowany, może wykonywać się inny wątek tego samego zadania.  Współpraca wielu wątków w jednym zadaniu pozwala zwiększać przepustowość poprawić wydajność.

14 Podręcznikowy przykład: ciąg instrukcji odczyt-zmiana-zapis. Załóżmy że program ma dane do przetwarzania, umieszczone w N pierwszych komórkach tablicy X. Liczba N zapisana jest w odpowiedniej zmiennej. Algorytm przetwarzania mógłby wyglądać następująco: 1. odczytaj zmienną N i sprawdź, czy jest równa 0 2. jeśli tak (nie ma danych w X), przejdź do kroku (tu wchodzimy, gdy N równe 1 lub więcej) odczytaj wartość X[N] 4. zmniejsz wartość N o 1 (zaznacz, że N-ta dana została już zabrana) 5. zrób coś z tą odczytaną daną (tu następuje właściwe przetwarzanie) 6. (dana obsłużona - zajmij się następną) przejdź do kroku (koniec pracy)

15 Podręcznikowy przykład: ciąg instrukcji odczyt-zmiana-zapis. Jest to najprostsza pętla opróżniająca stos X. W środowisku jednowątkowym działa zgodnie z oczekiwaniami, przetwarzając kolejno dane X[N], X[N-1], itd. aż do X[1], po czym zatrzymuje się z zerową wartością zmiennej N.

16 W środowisku wielowątkowym Jednak w środowisku wielowątkowym dwa równoczesne wątki mogą wykonać się w taki sposób (załóżmy N=2):

17 W środowisku wielowątkowym W dalszym ciągu wykonania tego samego programu możliwy jest również inny przypadek. Przypuśćmy, że wątek nr 1 wolniej przetwarzał X[2] i teraz wątek nr 2 zaczyna kolejny cykl:

18 Mechanizmy synchronizacji wątków Do zapobiegania takim sytuacjom wykorzystuje się mechanizmy synchronizacji wątków: - semafory, (jeden ze sposobów komunikacji międzyprocesowej ) - muteksy, ( wzajemne wykluczanie ) - sekcje krytyczne ( fragment kodu programu, który w danej chwili powinien być wykonywany przez nie więcej niż jeden proces ).


Pobierz ppt "W ą t e k (lekki proces) thread. Co to jest wątek?  To wydzielony fragment wykonywanego programu  To jednostka wykonawcza w obrębie jednego procesu,"

Podobne prezentacje


Reklamy Google