so wykl4

background image

Systemy operacyjne

wykład 4.

Wątki

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.2

Wykład 4: Wątki

Przegląd

Modele wielowątkowości

Biblioteki obsługi wątków

Zagadnienia dotyczące wątków

Przykłady wątków w S.O.

Wątki w Windows XP

Wątki w Linux

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.3

Cele

Wprowadzenie pojęcia wątku – podstawowej jednostki wykorzystania CPU
stanowiącej podstawę wielowątkowych systemów komputerowych

Przedyskutowanie APIs dla bibliotek: Pthreads, Win32 oraz Java

Przedyskutowanie zagadnień związanych z programowaniem
wielowątkowym

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.4

Procesy jedno- i wielowątkowe

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.5

Korzyści

Zdolność do reagowania

Współdzielenie zasobów

Ekonomika

Skalowalność

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.6

Architektura wielowątkowego serwera

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.7

Wątki użytkownika (User Threads)

Zarządzanie wątkami przez bibliotekę wątków na poziomie użytkownika

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.8

Wątki jądra (Kernel Threads)

Udostępniane przez jądro

Przykłady

– Windows XP/2000

– Solaris

– Linux

– Tru64 UNIX

– Mac OS X

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.9

Modele wielowątkowości (Multithreading
Models
)

Wiele-na-Jeden (Many-to-One)

Jeden-na-Jeden (One-to-One)

Wiele-na-Wiele (Many-to-Many)

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.10

Wiele-do-Jednego (Many-to-One)

Wiele wątków poziomu użytkownika zmapowanych na jeden wątek jądra

Przykłady:

– Solaris Green Threads

– GNU Portable Threads

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.11

Many-to-One Model

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.12

Jeden-na-Jeden (One-to-One)

Każdy wątek poziomu użytkownika jest mapowany na wątek jądra

Przykłady

– Windows NT/XP/2000

– Linux

– Solaris 9 i późniejsze

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.13

One-to-one Model

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.14

Model Wiele-na-Wiele (Many-to-Many)

Pozwala odwzorowywać wiele wątków poziomu użytkownika na wiele
wątków jądra

Pozwala s.o. tworzyć wystarczającą liczbę wątków jądra

Solaris (wersje wcześniejsze niż 9.)

Windows NT/2000 z pakietem ThreadFiber

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.15

Many-to-Many Model

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.16

Model dwupoziomowy

Podobny do M:M, ale pozwala skojarzyć wybrany wątek użytkownika z
wątkiem jądra

Przykłady

– IRIX

– HP-UX

– Tru64 UNIX

– Solaris 8 i wcześniejsze

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.17

Two-level Model

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.18

Thread Libraries

Biblioteka wątków

zapewnia programiście API do tworzenia i zarządzania

wątkami

Dwa główne sposoby implementacji:

– Biblioteka całkowicie w przestrzeni użytkownika

– Biblioteka na poziomie jądra wspierana przez s.o.

Trzy główne biblioteki wątków:

POSIX

Pthreads

wątki Win32

wątki Java

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.19

P-wątki (Pthreads)

Mogą być dostarczane zarówno jako wątki użytkownika jak i wątki jądra

Standard POSIX (IEEE 1003.1c) API do tworzenia wątków i ich
synchronizowania

API określa działanie biblioteki wątków, implementacja jest kwestią
związaną z tworzeniem biblioteki

Powszechne w systemach UNIX-owych (Solaris, Linux, Mac OS X)

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.20

Wątki Javy

Wątki Javy są realizowane i zarządzane przez JVM

Zwykle implementowane z wykorzystaniem modelu wątków udostępnianego
przez s.o. w którym działa JVM

Wątki Javy mogą być tworzone poprzez:

– Rozszerzenie klasy Thread

– Implementację interfejsu Runnable

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.21

Zagadnienia związane z wątkami

Semantyka wywołań systemowych

fork() i exec()

Kasowanie (Thread cancellation) wątku docelowego (target thread)

– Asynchroniczne lub odroczone

Obsługa sygnałów (Signal handling)

Pule wątków (Thread pools)

Dane charakterystyczne wątku (Thread-specific data)

Aktywacje planisty (Scheduler activations)

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.22

Semantyka fork() i exec()

Czy

fork() powiela tylko wywołujący tę funkcję wątek czy wszystkie wątki?

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.23

Kasowanie wątku

Zakończenie wątku przed końcem jego pracy

Dwa główne podejścia:

Kasowanie asynchroniczne (Asynchronous cancellation) kończy
natychmiast wątek docelowy

Kasowanie odroczone (Deferred cancellation) pozwala wątkowi
docelowemu okresowo sprawdzać czy powinien się zakończyć

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.24

Obsługa sygnałów

Sygnały są używane w systemach uniksowych do informowania procesu o
wystąpieniu określonego zdarzenia

Procedura obsługi sygnału (

signal handler)

ijest wykorzystywana do

przetworzenia sygnału

1. Sygnał zostaje wygenerowany przez dane zdarzenie

2. Sygnał zostaje dostarczony do procesu

3. Sygnał zostaje obsłużony

Opcje:

– Dostarczyć sygnał do wątku, do którego się odnosi dany sygnał

– Dostarczyć sygnał do każdego wątku w procesie

– Dostarczyć sygnał do pewnych wątków w procesie

– Przypisać wybrany wątek do obsługi wszystkich sygnałów w procesie

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.25

Pule wątków

Utworzyć pewną liczbę wątków tworzących pulę, gdzie będą czekać na
prace do wykonania

Zalety:

– Zwykle nieco szybsza obsługa żądań w przypadku istniejącego wątku niż

dla wątku, który trzeba dopiero utworzyć

– Pozwala na ograniczenie liczby wątków aplikacji do wielkości puli

wątków

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.26

Dane charakterystyczne wątku (Thread
Specific Data
)

Pozwalają każdemu wątkowi na posiadanie własnej kopii pewnych danych

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.27

Aktywacje planisty

Oba modele M:M i Two-level wymagają komunikacji pomiędzy biblioteka
poziomu użytkownika

Aktywacje planisty – schemat komunikacji

upcalls

– sposób informowania aplikacji przez jądro o zdarzeniach

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.28

Windows XP Threads

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.29

Linux Threads

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.30

Windows XP Threads

Implementuje mapowanie jeden-na-jeden, poziom jądra

Każdy wątek zawiera

– Identyfikator wątku

– Zbiór rejestrów

– Oddzielne: sotos użytkownika i jądra

– Obszar danych prywatnych

Zbiór rejestrów, stosy i obszar na dane prywatne są zwane kontekstem
wątku

Podstawowe struktury danych wątku zawierają:

– ETHREAD (executive thread block)

– KTHREAD (kernel thread block)

– TEB (thread environment block)

background image

Opracowano na podst.: Operating System Concepts – 8

th

Edition

,

Silberschatz, Galvin and Gagne ©2009

1.31

Linux Threads

Linux odnosi się do nich raczej jako do zadań (tasks) niż wątków (threads)

Tworzenie wątków za pomocą f. systemowej

clone()

clone() pozwala zadaniu potomnemu współdzielić przestrzeń adresową z
zadaniem (procesem) rodzicielskim


Wyszukiwarka

Podobne podstrony:
so c4
so c3
so w3
Oznaczanie kwasowości Wymiennej i Glinu Wymiennego metodą So, gleboznawstwo
blankiety Karta odejscia dla?solwentow
Zestawienie wzorow SO id 589004 Nieznany
Japan and the Arctic not so Poles apart Sinclair
Polecenia linuxa i unixa, Technik Informatyk - materiały, SO I SK
JADLOSPIS SO compressed
so, Akademia Morska, IV semestr, systemy operacyjne
SO
SO PI U9 TestA
SO PI U8 TestB
SO UI U4 PODCAST
SO UI U1 2 TestB
SO E U11 TestA
What's so extreme?out extreme sports

więcej podobnych podstron