1 / 25

Systemy operacyjne

Systemy operacyjne. Wykład nr 5: Wątki. Piotr Bilski. 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

Télécharger la présentation

Systemy operacyjne

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Kod Kod Dane Pliki Dane Pliki Stos Rejestry Rejestry Rejestry Rejestry Stos Stos Stos wątek wątek wątek wątek Jedno- i wielowątkowość 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ątek wątek poziom użytkownika aplikacja aplikacja poziom użytkownika Biblioteka wątków wątek wątek jądro jądro poziom jądra poziom jądra Wątki jądra Wątki użytkownika Wątki użytkownika i 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. wątek użytkownika wątek użytkownika wątek użytkownika poziom użytkownika poziom jądra Wątek jądra jądro Model „wiele na jeden”

  8. Model „jeden na jeden” wątek użytkownika 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 wiele” wątek użytkownika 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 • Sygnał synchroniczny proces1 proces2 proces działanie sygnał sygnał działanie jądro jądro • 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 zadanie3 zadanie2 zadanie1 W1 W2 W3 W1 W2 W3 W1 K4 K6 K5 K3 K1 K2 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. Stan procesu wskaźnik Numer procesu Mapa pamięci Priorytet Wykaz otwartych plików Struktura procesu w systemie Solaris LWP2 LWP1

  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)

More Related