Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.

Podobne prezentacje


Prezentacja na temat: "Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski."— Zapis prezentacji:

1 Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski

2 Pojęcie wątku (procesu lekkiego)
Jest to fragment procesu wykonywany w jego przestrzeni adresowej Może istnieć wiele wątków wykonywanych równolegle w ramach jednego procesu Wątki muszą być związane z niezależnymi fragmentami kodu Wieloprocesory i procesory wielordzeniowe zwiększają wydajność procesów wielowątkowych Udostępniane są przez biblioteki wątków (Pthreads, Wind32)

3 Jedno- i wielowątkowość
Kod Dane Pliki Rejestry Stos wątek Kod Dane Pliki Rejestry Stos wątek Proces jednowątkowy Proces wielowątkowy

4 Zalety wątków Utrudnione blokowanie procesu Łatwe dzielenie zasobów
Tworzenie i likwidacja wątków jest tania Wsparcie ze strony architektur wieloprocesorowych

5 Wątki użytkownika i jądra
Biblioteka wątków wątek jądro poziom użytkownika poziom jądra Wątki użytkownika jądro wątek aplikacja poziom użytkownika poziom jądra Wątki jądra

6 Modele wielowątkowości
Model „wiele na jeden” (green threads – Solaris 2) Model „jeden na jeden” (Windows NT, Windows 2000, OS/2) Model „wiele na wiele” (Solaris 2, HP-UX)

7 Model „wiele na jeden” wątek użytkownika Wątek jądra jądro
poziom użytkownika poziom jądra

8 Model „jeden na jeden” wątek użytkownika wątek użytkownika
poziom użytkownika Wątek jądra Wątek jądra Wątek jądra jądro poziom jądra

9 Model „wiele na jeden” wątek użytkownika wątek użytkownika
poziom użytkownika Wątek jądra Wątek jądra Wątek jądra jądro poziom jądra

10 Wątki a wywołania systemowe
Tworzenie wątku – fork i exec Kasowanie wątku Obsługa sygnałów Pule wątków Dane charakterystyczne wątku

11 Kasowanie wątku Operacja likwidacji wątku przed czasem
Likwidowany wątek to „wątek docelowy” (target thread) Dwa rodzaje likwidacji wątku: asynchroniczna (wątek docelowy likwidowany natychmiast) odroczona (opóźniona, uporządkowana likwidacja) – tylko w punktach anulowania Problem zwalniania zasobów przez likwidowane wątki

12 Obsługa sygnałów i APC Sygnał (UNIX) lub APC (Windows) służy do poinformowaniu o wystąpieniu zdarzenia (np. dzielenie przez zero) Po wygenerowaniu dostarczany jest do procesu Musi być obsłużony! Istnieją domyślne procedury obsługi sygnałów oraz procedury użytkownika

13 Sygnały synchroniczne i asynchroniczne
proces proces1 proces2 działanie sygnał sygnał działanie jądro jądro Sygnał synchroniczny Sygnał asynchroniczny

14 Procedury obsługi sygnałów
Procedura domyślna – wykonywana, gdy nic innego nie zostało zdefiniowane Procedura użytkownika – zdefiniowana, gdy proces ma wykonać niestandardową operację w odpowiedzi na sygnał Który wątek procesu ma odebrać sygnał: Wątek powodujący wygenerowanie sygnału Wszystkie wątki Wybrane wątki Wątek dedykowany do tego celu

15 Szczegóły obsługi sygnałów
Sygnał synchroniczny musi być dostarczony do wątku, który go spowodował Pewne sygnały asynchroniczne muszą być odebrane przez wszystkie wątki (np. zakończenie procesu) Możliwe jest blokowanie odebrania sygnału przez wątek Sygnał jest obsługiwany tylko raz - na ogół przez pierwszy wątek

16 Pule wątków Z góry określona grupa wątków możliwych do wykorzystania przez system Wątki te są tworzone przy starcie systemu i mogą być wielokrotnie użyte przez różne procesy Problem ustalenia potrzebnej liczby wątków (kryteria – liczba procesorów, dostępna pamięć, spodziewana liczba wątków klienckich) Rozwiązanie: dynamiczne pule wątków

17 P-wątki Jest to standard POSIX definiujący API do tworzenia i obsługi wątków Sposób implementacji wątków nie jest narzucony Plik nagłówkowy – pthread.h Standard umożliwia tworzenie, usuwanie oraz operacje na atrybutach wątków

18 Wątki w systemie Solaris
Udostępniane na poziomie jądra i użytkownika Implementują standard P-wątków Istnieją wątki (LWP) na poziomie pośrednim pomiędzy wątkami użytkownika i jądra. Każdy LWP ma wątek jądra

19 Realizacja wątków w systemie Solaris
wątek związany zadanie1 zadanie2 zadanie3 W1 W2 W3 W1 W1 W2 W3 W1 W1 W1 W1 W1 W1 jądro CPU CPU CPU CPU CPU

20 Szczegóły implementacji wątków w systemie Solaris
Wątki jądra są planowane przez planistę Blokada wątku jądra umożliwia procesorowi przejście do innego wątku Biblioteka wątków utrzymuje procesy lekkie dynamicznie Gdy LWP są bezczynne przez określony czas, usuwa się je

21 Informacje o wątkach w systemie Solaris
Wątek użytkownika: ID, rejestry ( w tym PC, SP), priorytet Proces lekki: zbiór rejestrów, pamięć, statystyki – działa w przestrzeni jądra! Watek jądra: rejestry, wskaźnik do procesu lekkiego, priorytet, stos

22 Struktura procesu w systemie Solaris
wskaźnik Stan procesu Numer procesu Mapa pamięci Priorytet Wykaz otwartych plików LWP1 LWP2

23 Wątki w systemie Windows
Udostępniane przez interfejs Win32 API Implementacja odwzorowania „jeden-na-jeden” oraz „wiele na wiele” przy pomocy biblioteki włókien Składowe wątku: ID, zbiór rejestrów, stos użytkownika, stos jądrowy, obszar pamięci prywatnej (kontekst wątku)

24 Wątki w systemie Windows (c.d.)
Struktury danych: ETHREAD – blok wykonawczy wątku (wskaźnik do procesu macierzystego, adres procedury, którą wątek rozpoczyna działanie) KTHREAD – blok jądrowy wątku (stos jądra i wskaźnik do bloku środowiska wątku) TEB – blok środowiska wątku (stos trybu użytkownika, lokalna pamięć wątku) – dostępny w trybie użytkownika ETHREAD i KTHREAD – jądro, TEB – przestrzeń użytkownika

25 Wątki Javy Ze względu na obecność JVM, wątki mają postać hybrydową
Wspierane przez klasę Thread Dwie podstawowe metody: start oraz run Brak informacji o odwzorowaniu wątków Javy na wątki systemu operacyjnego (zależne od systemu)


Pobierz ppt "Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski."

Podobne prezentacje


Reklamy Google