Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

W ą t e k (lekki proces) thread.

Podobne prezentacje


Prezentacja na temat: "W ą t e k (lekki proces) thread."— 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 7. 3. (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 1. 7. (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): Jak widać, oba wątki pobrały do przetwarzania tę samą daną X[2]. Jeśli nasz program jest systemem księgowym, a w X[2] było zapisane "dokonaj przelewu kwoty xxxx z rachunku nnnn na rachunek mmmm", to przelew zostanie zaksięgowany dwukrotnie

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: Pomimo posłużenia się licznikiem N, wątek nr 1 usiłuje pobrać nieistniejący element danych spod nielegalnego indeksu - X[0]. W zależności od różnych czynników spowoduje to albo natychmiastowe awaryjne przerwanie działania programu, albo dowolne, nieprzewidywalne zaburzenia (błędy) w dalszym jego działaniu.

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."

Podobne prezentacje


Reklamy Google