03 procesywatki (2)


Systemy operacyjne
Systemy operacyjne
Maciej J. Bargielski
Maciej J. Bargielski
Procesy i wÄ…tki
Procesy i wÄ…tki
Procesy i wÄ…tki
Koncepcja procesu.
Planowanie procesów.
Działania na procesach.
Procesy współpracujące.
Komunikacja międzyprocesowa.
WÄ…tki.
Implementacja wątków
Modele wielowątkowości
Schematy wielowątkowości
Zagadnienia dotyczące wątków
Przykłady implementacji wątków
2
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Koncepcja procesu
Koncepcja procesu
Jak nazwać wszystkie czynności procesora?
System wsadowy: zadania (jobs);
System z podziałem czasu: programy użytkownika (user programs)
lub prace (tasks).
Terminy zadanie i proces często używane są zamiennie 
obecnie preferowany jest termin proces.
Proces  wykonywany program; wykonywanie procesu
musi przebiegać sekwencyjnie. W skład procesu wchodzi:
Kod programu (text section, code section);
Licznik rozkazów (program counter);
Stos procesu (process stack);
Sekcja danych (data section).
3
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Stan procesu
Stan procesu
Wykonujący się proces zmienia swój stan (state). Każdy
proces może się znajdować w jednym z następujących
stanów:
Nowy: proces został utworzony;
Aktywny: sÄ… wykonywane instrukcje;
Oczekiwanie: proces czeka na wystÄ…pienie jakiegoÅ› zdarzenia
(np. zakończenie operacji WE/WY);
Gotowy: proces czeka na przydział procesora;
Zakończony: proces zakończył działanie.
W każdej chwili w procesorze tylko jeden proces może
być aktywny, ale wiele procesów może być gotowych do
działania lub czekających.
4
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Diagram stanów procesu
Diagram stanów procesu
Zakończony
Przyjęcie
Nowy
Wyjście
Decyzja planisty
Aktywny
Gotowy
Przerwanie
Oczekiwanie na
Obsłużenie
zdarzenie lub
zdarzenia lub
CzekajÄ…cy
wykonanie
operacji WE-WY
operacji WE-WY
5
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Blok kontrolny procesu
Blok kontrolny procesu
Proces jest reprezentowany w systemie przez blok kontrolny
procesu (process control block  PCB), który zawiera
następujące informacje:
Stan procesu: nowy, gotowy, aktywny itd.
Licznik rozkazów: wskazuje adres następnego rozkazu do wykonania w
procesie.
Rejestry procesora: akumulatory, rejestry indeksowe, wskazniki stosu,
rejestry ogólnego przeznaczenia, rejestry przerwań.
Informacje o planowaniu przydziału procesora: priorytet procesu,
wskazniki do kolejek porządkujących zamówienia i inne parametry
planowania.
Informacje o zarządzaniu pamięcią: zawartości rejestrów granicznych,
tablice stron lub segmentów.
Informacje do rozliczeń: ilość zużytego czasu procesora i czasu
rzeczywistego, numery kont, numery procesów itd.
Informacje o stanie WE/WY: informacje o urzÄ…dzeniach WE/WY
przydzielonych do procesu, wykaz otwartych plików itd.
6
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Blok kontrolny procesu 2
Blok kontrolny procesu 2
7
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Przełączanie procesora pomiędzy procesy
Przełączanie procesora pomiędzy procesy
System operacyjny
Proces P0 Proces P1
Przerwanie lub wywołanie systemowe
wykonywanie
Przechowaj stan w BK 0 bezczynność
Odtwórz stan z BK 1
bezczynność
Przerwanie lub wywołanie systemowe wykonywanie
Przechowaj stan w BK 1
bezczynność
Odtwórz stan z BK 0
wykonywanie
8
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Planowanie procesów
Planowanie procesów
Celem planowania procesów jest jak najlepsze
wykorzystanie procesora  szczególnie ważne w systemach
wieloprogramowych z podziałem czasu.
Kolejki planowania  zbiory procesów czekających na jakieś
zdarzenia:
Kolejka zadań (job queues): zbiór wszystkich procesów w systemie.
Kolejka procesów gotowych (ready queue): zbiór procesów
rezydujących w pamięci operacyjnej, gotowych i czekających na
wykonanie (ma postać listy powiązanej).
Kolejka do urządzenia (device queue): zbiór procesów czekających
na konkretne urządzenie WE/WY (każde urządzenie ma własną
kolejkÄ™).
Procesy wędrują między różnymi kolejkami.
9
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Kolejki procesów
Kolejki procesów
Nagłówek Blok
kolejki Kontrolny 1 BK 5
Kolejka
czoło
procesów
ogon
rejestry rejestry
gotowych
czoło
TM1
ogon
BK 3 BK 7
czoło
Dysk 1
ogon
rejestry rejestry rejestry
BK 4
czoło
Drukarka 1
ogon
rejestry
10
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Diagram kolejek
Diagram kolejek
Kolejka procesów
Procesor
gotowych
Kolejka wejścia Kolejka wejścia
Wejście /
/ wyjścia / wyjścia
wyjście
Czekaj na
WystÄ…pienie
przerwanie
przerwania
Kwant
zużycia czasu
Potomek Potomek Powołaj
kończy wykonywany potomka
11
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Planiści (Schedulers)
Planiści (Schedulers)
Planista (program szeregujÄ…cy)  program systemowy
wybierajÄ…cy procesy z kolejek.
Planista długoterminowy (long-term scheduler) lub planista zadań
(job scheduler)  wybiera procesy z puli zadań (zwykle na dyskach) i
ładuje do pamięci operacyjnej (do kolejki procesów gotowych).
Wywoływany jest rzadziej (sekundy, minuty)  może być wolny.
Nadzoruje stopień wieloprogramowości, tj. liczbę procesów w
pamięci (bardzo ważne dla wydajności systemu komputerowego).
Planista krótkoterminowy (short-term scheduler) lub planista
przydziału procesora (CPU scheduler)  wybiera jeden proces
spośród procesów gotowych do wykonania i przydziela mu procesor.
Wywoływany jest często (milisekundy)  musi być szybki!
Procesy można podzielić na:
Procesy ograniczone przez WE/WY  spędzają większość czasu na
wykonywaniu operacji WE/WY, a mniej używają procesora.
Procesy ograniczone przez dostęp do procesora  większość czasu
spędzają na obliczeniach wykonywanych przez procesor, a tylko
sporadycznie korzystajÄ… z WE/WY.
12
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Planowanie średnioterminowe
Planowanie średnioterminowe
Planista średnioterminowy (mid-term scheduler) 
odpowiedzialny za wymianę (swapping) procesów
między pamięcią operacyjną a dyskiem  stosowany
często w systemach z podziałem czasu.
Sprowadz do PaO Usuń z PaO
Usunięte procesy
częściowo wykonane
Kolejka procesów
Procesor
gotowych
Kolejka wejścia
Wejście /
/ wyjścia
wyjście
13
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Przełączanie kontekstu
Przełączanie kontekstu
Przełączanie procesora do innego procesu wymaga
przechowania stanu starego procesu i załadowania
przechowanego stanu nowego procesu  przełączanie
kontekstu (context switch).
Czas przełączania kontekstu jest czystą daniną na rzecz
systemu  system nie wykonuje żadnej użytecznej pracy
podczas tej czynności.
Wartość czasu przełączania zależy od możliwości sprzętu
(zwykle od 1 do 100 mikrosekund).
Niektóre procesory mają po kilka zbiorów rejestrów:
przełączanie kontekstu realizowane jest przez zmianę
wartości wskaznika do bieżącego zbioru rejestrów.
Przełączanie kontekstu jest nierzadko  wąskim gardłem w
systemach operacyjnych  rozwiÄ…zanie: wÄ…tki.
14
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Działania na procesach
Działania na procesach
Tworzenie procesu
Tworzenie procesu
Proces macierzysty (parent process) tworzy procesy
potomne (children processes), a te mogą tworzyć dalsze
procesy  drzewo procesów.
Dzielenie zasobów:
Proces macierzysty i procesy potomne dzielÄ… wszystkie zasoby.
Procesy potomne dzielą podzbiór zasobów procesu macierzystego.
Proces macierzysty i potomny nie dzielą żadnych zasobów.
Wykonywanie:
Proces macierzysty i procesy potomne wykonują się współbieżnie.
Proces macierzysty czeka na zakończenie procesów potomnych.
Przestrzeń adresowa:
Proces potomny staje siÄ™ kopiÄ… procesu macierzystego (Unix: fork)
Proces potomny otrzymuje nowy program (Unix: exec)
15
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Drzewo procesów w systemie Unix
Drzewo procesów w systemie Unix
Proces root
proces pagedemon proces swapper proces init
proces proces proces
użytkownika-1 użytkownika-2 użytkownika-3
16
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Kończenie procesu
Kończenie procesu
Proces wykonuje ostatniÄ… komendÄ™ i prosi system
operacyjny (poprzez funkcjÄ™ exit), aby go usunÄ…Å‚.
Proces może przekazać dane (wyjście) do procesu macierzystego (za
pomocÄ… funkcji wait).
Wszystkie zasoby procesu zostajÄ… odebrane (dealokowane) przez
system operacyjny.
Proces macierzysty może zakończyć wykonywanie procesu
potomnego (funkcjÄ… abort), gdy:
Potomek nadużył któregoś z przydzielonych zasobów;
Wykonywane przez potomka zadanie stało się zbędne;
Proces macierzysty kończy swoje działanie:
System operacyjny nie pozwala potomkowi na dalsze działanie.
W wielu systemach następuje kaskadowe kończenie procesów
potomnych.
17
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Procesy współpracujące
Procesy współpracujące
Proces niezależny (independent)  proces, który nie może
oddziaływać z innymi procesami w systemie.
Proces współpracujący (cooperating)  proces, który może
wpływać na inne procesy lub inne procesy mogą wpływać
na niego (np. przez dzielenie danych).
Zalety współpracy procesów:
dzielenie informacji (np. plików);
przyspieszanie obliczeń (podział zadania na podzadania i
wykonywanie równoległe  przy wielu procesorach itd.);
modularność (modularny system z podziałem na osobne procesy);
wygoda (np. możliwość wykonywania wielu zadań równolegle).
18
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Problem Producenta-Konsumenta
Problem Producenta-Konsumenta
Proces producent (producer) wytwarza informacje, które
zużywa proces konsument (consumer)  popularny
wzorzec współpracujących procesów (np. program
drukujący wytwarza znaki, które są pobierane przez
program obsługi drukarki).
Potrzebny jest bufor, który może być zapełniany przez
producenta, a opróżniany przez konsumenta:
Bufor nieograniczony (unbounded buffer)  brak praktycznych
ograniczeń na rozmiar bufora;
Bufor ograniczony (bounded buffer)  ma ustaloną długość.
Bufor może być dostarczony przez system operacyjny
przez mechanizm komunikacji międzyprocesowej (IPC) lub
stworzony przez programistę w pamięci dzielonej.
Procesy producenta i konsumenta muszą podlegać
synchronizacji, aby wszystkie jednostki  towaru mogły być
wiernie przekazane od producenta do konsumenta.
19
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Komunikacja międzyprocesowa
Komunikacja międzyprocesowa
Komunikacja międzyprocesowa (interprocess
communication  IPC)  mechanizm systemu operacyjnego
umożliwiający procesom łączność i synchronizację.
System przekazywania komunikatów (message system) 
procesy komunikują się między sobą bez odwoływania się
do zmiennych dzielonych.
Mechanizm IPC dostarcza dwie operacje:
nadaj(komunikat)  rozmiar komunikatu może być stały lub zmienny;
odbierz(komunikat)
Jeżeli procesy P i Q chcą się ze sobą komunikować, to
muszÄ…:
Utworzyć między sobą łącze komunikacyjne (communication link);
Wymieniać komunikaty przy użyciu operacji nadaj/odbierz.
Implementacja Å‚Ä…cza komunikacyjnego:
Fizyczna (np. pamięć dzielona, szyna sprzętowa, sieć);
Logiczna (logiczne cechy Å‚Ä…cza).
20
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Pytania implementacyjne
Pytania implementacyjne
Jak ustanawia się połączenia?
Czy łącze może być powiązane z więcej niż dwoma
procesami?
Ile może być łączy między każdą parą procesów?
Jaka jest pojemność łącza? Czy łącze ma jakiś obszar
buforowy? Jeśli tak, to jak duży?
Jaki jest rozmiar komunikatów? Czy łącze akceptuje
komunikaty stałej czy zmiennej długości?
Czy Å‚Ä…cze jest jednokierunkowe, czy dwukierunkowe?
Metody logicznej implementacji:
Komunikacja bezpośrednia lub pośrednia;
Komunikacja symetryczna lub asymetryczna;
Buforowanie automatyczne lub jawne;
Wysyłanie na zasadzie tworzenia kopii lub odsyłacza;
Komunikaty stałej lub zmiennej długości.
21
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Komunikacja bezpośrednia
Komunikacja bezpośrednia
W komunikacji bezpośredniej (direct communication) proces
musi jawnie nazwać nadawcę lub odbiorcę:
nadaj(P, komunikat)  nadaj komunikat do procesu P;
odbierz(Q, komunikat)  odbierz komunikat od procesu Q.
Własności łącza komunikacyjnego:
Aącze jest ustawiane automatycznie (wystarczy aby procesy znały
swoje identyfikatory);
Aącze dotyczy dokładnie dwóch procesów;
Między każdą parą procesów istnieje dokładnie jedno łącze;
Aącze może być jednokierunkowe, choć zwykle jest dwukierunkowe.
Wada: ograniczona modularność  zmiana nazwy
jednego procesu może pociągać za sobą konieczność
zweryfikowania definicji wszystkich innych procesów.
22
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Komunikacja pośrednia
Komunikacja pośrednia
W komunikacji pośredniej (indirect communication)
komunikaty sÄ… nadawane i odbierane za pomocÄ… skrzynek
pocztowych (mailboxes), zwanych także portami (ports).
Każda skrzynka pocztowa ma jednoznaczną identyfikację;
Procesy mogą się komunikować tylko wtedy, gdy mają jakąś wspólną
skrzynkÄ™ pocztowÄ….
Operacje nadawania i odbioru komunikatów:
nadaj(A, komunikat)  nadaj komunikat do skrzynki A;
odbierz(A, komunikat)  odbierz komunikat ze skrzynki A.
Własności łącza komunikacyjnego:
Aącze między procesami jest ustawiane tylko wtedy, gdy dzielą one
jakÄ…Å› skrzynkÄ™ pocztowÄ…;
Aącze może być związane z więcej niż dwoma procesami;
Każda para komunikujących się procesów może mieć wiele łączy;
Aącze może być jednokierunkowe lub dwukierunkowe.
23
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Zagadnienia komunikacji pośredniej
Zagadnienia komunikacji pośredniej
Dzielenie skrzynki pocztowej:
Procesy P1, P2 i P3 dzielÄ… skrzynkÄ™ A.
Proces P1 wysyła komunikat, a procesy P2 i P3 go odbierają.
Kto otrzyma komunikat?
Możliwe rozwiązania:
Zezwalać na łącza tylko między dwoma procesami.
Zezwalać tylko jednemu procesowi na wykonanie w danej chwili operacji
odbierz.
Pozwolić, aby system wybierał arbitralnie odbiorcę komunikatu,
powiadamiając nadawcę, kto został odbiorcą.
Kto może być właścicielem skrzynki pocztowej?
Proces: proces-właściciel może tylko odbierać, proces-użytkownik może
tylko nadawać komunikaty (skrzynka znika wraz z właścicielem).
System operacyjny  musi dostarczać mechanizmów do:
tworzenia nowej skrzynki;
nadawania i odbierania komunikatów za pośrednictwem skrzynki;
likwidowania skrzynki.
24
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Synchronizacja i buforowanie
Synchronizacja i buforowanie
Synchronizacja
Przekazywanie komunikatów może być:
blokujÄ…ce, czyli synchroniczne,
nieblokujÄ…ce, czyli asynchroniczne.
Operacje nadaj i odbierz mogą być blokujące lub
nieblokujÄ…ce.
Buforowanie
Aącze ma pewną pojemność; komunikaty są w nim ułożone
w postaci kolejki. Możliwe pojemności:
Pojemność zerowa: maksymalna długość kolejki wynosi 0, czyli
nadawca musi czekać aż odbiorca odbierze komunikat
(synchronizacja typu rendez-vous).
Pojemność ograniczona: kolejka ma skończoną długość n; nadawca
musi czekać kiedy kolejka jest pełna (blokowanie).
Pojemność nieograniczona: kolejka ma (potencjalnie) nieskończoną
długość; nadawca nigdy nie jest opózniany.
25
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Przykład  system Mach
Przykład  system Mach
Mach (Carnegie-Mellon University)  system operacyjny oparty na
komunikatach  jądro umożliwia tworzenie i likwidowanie wielu zadań,
które mają wiele wątków sterowania.
Większość komunikacji odbywa się poprzez przesyłanie komunikatów
(nawet wywołania systemowe są wykonywane za pomocą komunikatów).
Komunikaty przekazywane są za pośrednictwem skrzynek pocztowych,
nazywanych w systemie Mach portami.
Przy tworzeniu każdego zadania powstają dwie skrzynki pocztowe:
Skrzynka jądra (kernel mailbox)  używana przez jądro do komunikacji z
zadaniem.
Skrzynka zawiadomień (notify mailbox)  do niej jądro wysyła zawiadomienia o
występujących zdarzeniach.
Do przesyłania komunikatów służą trzy funkcje systemowe:
port_allocate  tworzy nową skrzynkę i przydziela pamięć na kolejkę jej
komunikatów; zadanie tworzące skrzynkę zostaje jej właścicielem i dostaje
prawo odbioru z niej komunikatów; komunikaty składają z nagłówka o stałej
długości i danych o różnej długości  od tego samego nadawcy są ustawiane w
kolejce FIFO (first-in, first-out), ale od różnych nadawców mogą być w
dowolnym porzÄ…dku.
msg_send  wysyła komunikat do skrzynki pocztowej.
msg_receive  odbiera komunikat ze skrzynki pocztowej.
Ponadto, do zdalnego wywołania procedury (RPC) służy funkcja msg_rpc.
26
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Przykład  system MS Windows XP
Przykład  system MS Windows XP
System operacyjny Windows XP tworzy zaplecze dla wielu środowisk
operacyjnych, czyli podsystemów, z którymi programy użytkowe komunikują się
drogą przekazywania komunikatów (są klientami serwera podsystemu).
Do łączności między dwoma procesami na tej samej maszynie służy mechanizm
lokalnego wywołania procedury (local procedure call  LPC)  podobny do RPC,
ale zoptymalizowany i specyficzny dla środowiska Windows XP.
Do ustanowienia i utrzymywania połączenia między dwoma procesami używany
jest obiekt portu (jak w systemie Mach).
Są dwa rodzaje portów: porty połączeń i porty komunikacyjne  w istocie takie
same, ale w zależności od sposobu użycia nadaje się im różne nazwy.
Porty połączeń, zwane obiektami, są widoczne dla wszystkich procesów i
umożliwiają aplikacji utworzenie kanału komunikacyjnego.
Komunikacja staje się możliwa po utworzeniu/uzyskaniu uchwytu do portu.
Stosowane są dwie techniki przekazywania komunikatów:
Kopiowanie komunikatów między procesami za pośrednictwem kolejki
komunikatów portu  dla małych komunikatów, do 256 bajtów.
Za pośrednictwem obiektu sekcji (pamięci dzielonej)  wysyłany jest tylko mały
komunikat zawierajÄ…cy wskaznik i rozmiar danych w obiekcie sekcji; stosowana
przy przesyłaniu większych komunikatów  szybsza, ale bardziej
skomplikowana!
Komunikacja może odbywać się synchronicznie lub asynchronicznie (callback).
27
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Komunikacja Klient-Serwer
Komunikacja Klient-Serwer
Gniazda (sockets)  BSD UNIX:
Gniazdo jest zdefiniowane jako punkt końcowy komunikacji;
Gniazdo posiada adres: połączenie adresu IP i numeru portu, np. gniazdo
149.156.64.9:1625 dotyczy portu 1625 na maszynie 149.156.64.9;
Komunikacja odbywa się między parami gniazd.
Zdalne wywołanie procedury (remote procedure call  RPC):
Zdalne wywołanie procedury jest uogólnieniem mechanizmu wywołania
procedury na systemy sieciowe.
Komunikat zawiera identyfikator funkcji oraz parametry, które mają być jej
przekazane i jest adresowany do demona RPC w odległym systemie.
Klient wysyła komunikat do serwera, a serwer wykonuje odpowiednią funkcję
i odsyła wyniki do klienta w oddzielnym komunikacie.
Zdalne wywołanie metody (remote method invocation  RMI):
RMI jest mechanizmem systemu Java podobnym do RPC.
RMI pozwala programowi Javy działającemu na jednej maszynie wywołać
metodę w odległym obiekcie (na innej JVM, innym komputerze).
28
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
WÄ…tki
WÄ…tki
Wątek (thread), zwany także procesem lekkim (light-weight process 
LWP), jest podstawowÄ… jednostkÄ… wykorzystania CPU  posiada:
licznik rozkazów, zbiór rejestrów i obszar stosu.
Wątek dzieli wraz z innymi równorzędnymi wątkami: sekcję kodu,
sekcję danych oraz zasoby systemowe (pliki, sygnały)  łącznie
nazywa siÄ™ to zadaniem.
Tradycyjny proces, tzw. ciężki (heavy-weight), jest równoważny
zadaniu z jednym wÄ…tkiem.
Zadanie nic nie robi, jeśli nie ma w nim ani jednego wątku; wątek może
przebiegać dokładnie w jednym zadaniu.
Zalety wątków:
Dzielenie zasobów sprawia, ze przełączanie między wątkami oraz tworzenie
wątków jest tanie w porównaniu z procesami ciężkimi.
Oszczędne wykorzystanie zasobów  dzięki ich współużytkowaniu.
Współpraca wielu wątków pozwala zwiększyć przepustowość i poprawić
wydajność (np. jeśli jeden wątek jest zablokowany, to może działać inny).
Wykorzystanie architektury wieloprocesorowej (każdy wątek na innym CPU)
29
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Zadania jedno- i wielowÄ…tkowe
Zadania jedno- i wielowÄ…tkowe
Kod Dane Pliki Kod Dane Pliki
Rejestry Stos Rejestry Rejestry Rejestry
Stos Stos Stos
WÄ…tek
WÄ…tek 1 WÄ…tek 2 WÄ…tek 3
Zadanie jednowÄ…tkowe Zadanie wielowÄ…tkowe
30
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Implementacja wątków
Implementacja wątków
Wątki poziomu użytkownika (user-level threads)  tworzone za pomocą funkcji
bibliotecznych; przełączanie między wątkami nie wymaga wzywania systemu
operacyjnego (POSIX Pthreads).
Zalety:
Szybkie przełączanie między wątkami.
Wydajne obsługiwanie wielu zamówień.
Wady:
Przy jednowątkowym jądrze każde odwołanie wątku poziomu użytkownika do systemu
powoduje wstrzymanie całego zadania.
Nieadekwatny przydział czasu procesora (zadanie wielowątkowe i jednowątkowe
mogą dostawać tyle samo kwantów czasu).
Wątki jądra (kernel threads)  obsługiwane przez jądro systemu (np. systemy
Mach, OS/2, Windows XP, Linux).
Zalety:
Wydajniejsze planowanie przydziału czasu procesora.
Wady:
Wolniejsze przełączanie wątków  zajmuje się tym jądro (za pomocą przerwań)
Wątki mieszane  zrealizowane oba rodzaje wątków (Solaris 2).
31
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Modele wielowątkowości
Modele wielowątkowości
Model wiele-na-jeden (many-to-one):
Wiele wątków poziomu użytkownika odwzorowanych na jeden
wÄ…tek jÄ…dra.
Stosowany w systemach nie posiadających wątków jądra.
Model jeden-na-jeden (one-to-one):
Każdy wątek poziomu użytkownika odwzorowany wzajemnie
jednoznacznie na jeden wÄ…tek jÄ…dra.
Przykłady: Windows 95/98/NT/2000, OS/2.
Model wiele-na-wiele (many-to-many):
Wiele wątków poziomu użytkownika może być odwzorowanych na
wiele wątków jądra.
Pozwala systemowi operacyjnemu utworzyć dostateczną liczbę
wątków jądra.
Często występuje poziom pośredni w postaci procesów lekkich
(LWP) będących dla wątków użytkownika czymś w rodzaju
wielowątkowych wirtualnych procesorów  z każdym LWP związany
jest jeden wątek jądra, natomiast zwykły proces może składać się z
jednego lub więcej LWP.
Przykłady: Solaris 2, HP-UX, IRIX.
32
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Schematy wielowątkowości
Schematy wielowątkowości
WÄ…tek poziomu
użytkownika
WÄ…tek
jÄ…dra
J J J J J J
Wiele-Na-Jeden Jeden-Na-Jeden Wiele-Na-Wiele
33
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Zagadnienia dotyczące wątków
Zagadnienia dotyczące wątków
Kasowanie wątków (thread cancellation)
Kasowanie asynchroniczne  dany wątek kończy natychmiast wątek docelowy
(target thread); może być niebezpieczne dla dzielonych zasobów.
Kasowanie odroczone  wątek docelowy może okresowo sprawdzać, czy
powinien się zakończyć, co daje mu możliwość zakończenia w sposób
uporządkowany, np. wątki Pthreads posiadają punkty, w których można je
bezpiecznie kasować, tzw. punkty kasowania (cancellation points).
Obsługa sygnałów
Sygnał (signal) służy w systemach uniksowych do powiadamianiu o wystąpieniu
konkretnego zdarzenia.
Sygnały synchroniczne są dostarczanie do procesu, który wykonał operację
powodującą sygnał, natomiast asynchroniczne pochodzą od zdarzeń
zewnętrznych.
Możliwości dostarczania sygnałów do procesów wielowątkowych:
Dostarczyć sygnał tylko do tego wątku, do którego się on odnosi.
Dostarczyć sygnał do wszystkich wątków w procesie.
Dostarczyć sygnał do niektórych wątków (np. tych, które go nie blokują).
Przydzielić specjalny wątek do odbierania wszystkich sygnałów do procesu.
Różne systemy realizują różne możliwości, zależy to też od rodzaju sygnału.
System Windows XP nie implementuje jawnie sygnałów, można je emulować za pomocą
asynchronicznych wywołań procedur (asynchronous procedure call  APC) 
adresowane do konkretnych wątków, możliwość przekazania funkcji.
34
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Zagadnienia dotyczące wątków 2
Zagadnienia dotyczące wątków 2
Pule wątków (thread pools)
Wielowątkowość jest powszechnie stosowana w serwerach WWW  kiedy
taki serwer otrzymuje zamówienie, wtedy tworzy wątek do jego obsługi.
Brak ograniczeń dotyczących wątków może doprowadzić do wyczerpania
zasobów systemu, takich jak pamięć lub czas procesora.
Jednym z rozwiązań jest zastosowanie puli wątków  w chwili uruchomienia
proces tworzy pewną liczbę wątków (pulę), które oczekują na zamówienia;
kiedy nadchodzi zamówienie, wątek z puli jest budzony przez serwer, a po
obsłużeniu zamówienia wraca do puli i czeka na kolejne zlecenie.
Zwykle łatwiej jest obsłużyć zamówienie za pomocą istniejącego wątku niż
tworzyć do tego celu nowy wątek.
Pula wątków ogranicza liczbę wątków, co chroni przed wyczerpaniem
zasobów systemowych, a także spadkiem wydajności systemu.
Dane specyficzne wÄ…tku (thread-specific data)
Wątki należące do procesu dzielą jego dane, co jest zaletą wielowątkowości.
W pewnych sytuacjach wątek może potrzebować własnej kopii jakichś
danych (np. identyfikator transakcji w wielowÄ…tkowych systemach
transakcyjnych)  większość bibliotek wątków dostarcza możliwości
utrzymywania danych specyficznych wÄ…tku (np. Pthreads, Win32, Java).
35
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki
Przykłady implementacji wątków
Przykłady implementacji wątków
P-wątki (Pthreads)  specyfikacja (API) wątków standardu POSIX:
Dostępne głównie w systemach uniksowych (np. Linux, Solaris, Mac OS X).
MS Windows na ogół ich nie udostępniają, ale można je zainstalować
korzystajÄ…c z oprogramowania shareware.
Udostępniane jako biblioteka poziomu użytkownika  brak wyraznych związków
między P-wątkami a stowarzyszonymi z nimi wątkami jądra.
Wątki w Windows XP  dostępne poprzez interfejs Win32 API:
Aplikacja Windows działa jako osobny proces, który może zawierać jeden lub
więcej wątków  stosowane jest odwzorowanie jeden-na-jeden.
Dostarczana jest także biblioteka włókien (fiber) wg. modelu wiele-na-wiele.
WÄ…tki Linuxa  od wersji 2.2:
Oprócz funkcji systemowej fork do powielania procesów, Linux posiada
funkcję systemową clone, która umożliwia tworzenie oddzielnego procesu
dzielącego przestrzeń adresową procesu macierzystego (co ma być dzielone
określa się za pomocą parametrów funkcji)  taki proces zachowuje się bardzo
podobnie jak oddzielny wÄ…tek.
Linux nie rozróżnia procesów i wątków  przy odnoszeniu się do przepływu
sterowania w programie używany jest na ogół terminu zadanie (praca, task).
Wątki Javy  wątki na poziomie języka programowania, realizowane
przez JVM, odwzorowanie w wątki jądra zależy od implementacji JVM w
danym systemie.
36
Maciej J. Bargielski © 2009: Systemy operacyjne. Procesy i wÄ…tki


Wyszukiwarka

Podobne podstrony:
03 Procesor i jego architektura
03 Skutki malpiego procesu (2007)
2009 03 Parallel Thinking Optimizing Bash Scripts for Multi Core Processors
03 modelowanie procesu
03 Przebieg procesu technologicznego i kwas mlekowy
Wyroki w procesie o przemyt silników do Iraku utrzymane (03 02 2009)
03 Creating New Processes
03 Wykonywanie czynności związanych z procesem sprzedażyidE38
863 03
procesy
Wyświetlacz MMI z 6 kanałowym procesorem dźwięku (9VD)
ALL L130310?lass101
Mode 03 Chaos Mode

więcej podobnych podstron