Procesy, wątki i zasoby

31
Systemy operacyjne Wykład 2 1/31 Procesy, wątki i zasoby • Koncepcja procesu i zasobu, • Obsługa procesów i zasobów, • Cykl zmian stanów procesu i kolejkowanie, • Klasyfikacja zasobów, • Wątki, • Procesy i wątki we współczesnych systemach operacyjnych.

Transcript of Procesy, wątki i zasoby

Page 1: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 1/31

Procesy, wątki i zasoby

• Koncepcja procesu i zasobu,• Obsługa procesów i zasobów,• Cykl zmian stanów procesu i kolejkowanie,• Klasyfikacja zasobów,• Wątki,• Procesy i wątki we współczesnych

systemach operacyjnych.

Page 2: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 2/31

Procesy• Proces jest elementarną jednostką pracy (aktywności)

zarządzaną przez system operacyjny, która ubiega sięo zasoby systemu komputerowego w celu wykonaniaprogramu.

• Proces = wykonujący się program.• Elementy składowe procesu:

– program — definiuje zachowanie procesu,– dane — zbiór wartości przetwarzanych oraz wyniki,– zbiór zasobów tworzących środowisko wykonawcze,– blok kontrolny procesu (PCB, deskryptor) — opis

bieżącego stanu procesu.

Page 3: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 3/31

Zasoby

• Zasobem jest element sprzętowy lub programowysystemu komputerowego, którego brak możepotencjalnie zablokować wykonywanie programu(przetwarzanie).

• Przykłady zasobów: procesor, pamięć, plik (dane)itp.

Page 4: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 4/31

Jądro systemu w zarządzaniu

procesami i zasobami

• Operacje tworzenia i usuwania procesów orazelementarna komunikacja międzyprocesowa.

• Operacje przydziału i zwalniania jednostek zasobów.

• Elementarne operacje wejścia-wyjścia.• Procedury obsługi przerwań.

Page 5: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 5/31

Zarządcy procesów i zasobów

• Zarządca procesów (process manager) —kontroluje stany procesów w celu efektywnego ibezpiecznego wykorzystania współdzielonychzasobów systemu.

• Zarządca zasobów (resource manager) —realizuje przydział zasobów stosownie do żądańprocesów, aktualnego stanu systemu orazogólnosystemowej polityki przydziału.

Page 6: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 6/31

Struktury danych w zarządzaniu

• Deskryptor procesu (blok kontrolny procesu, PCB) — używany przez zarządcę procesów w celurejestrowania stanu procesu w czasie jegomonitorowania i kontroli.

• Deskryptor zasobu — przechowuje informacje odostępności i zajętości danego typu zasobu.

Page 7: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 7/31

Deskryptor procesu

• Identyfikator procesu.• Stan procesu (nowy, gotowy, oczekujący, itd.).• Identyfikator właściciela.• Identyfikator przodka.• Lista przydzielonych zasobów.• Zawartość rejestrów procesora.• Prawa dostępu (domena ochrony).• Informacje na potrzeby zarządzania pamięcią.• Informacje na potrzeby planowania (np. priorytet).• Informacje do rozliczeń.• Wskaźniki do kolejek porządkujących.

Page 8: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 8/31

Stany procesu

• Nowy (new) — proces jest tworzony.• Wykonywany (running) — wykonywane są

instrukcje programu.• Oczekujący (waiting) — proces oczekuje na

jakieś zdarzenie, np. na zakończenie operacjiwejścia-wyjścia, na przydział dodatkowego zasobu,synchronizuje się z innymi procesami.

• Gotowy (ready) — proces czeka na przydziałprocesora.

• Zakończony (terminated) — proces zakończyłdziałanie i zwalnia zasoby.

Page 9: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 9/31

Cykl zmian stanu procesu

zakończenie operacjiwe –wy lub

wystąpienie zdarzenia

zażądanie operacjiwe – wy lub

oczekiwanie na zdarzenie

oczekujący

nowy

gotowy wykonywany

zakończony

wywłaszczenie

decyzjaplanisty

przyjęcie wyjście

Page 10: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 10/31

Deskryptor zasobu

• Identyfikator zasobu.• Rodzaj zasobu.• Identyfikator twórcy zasobu.• Lista i liczba dostępnych jednostek zasobu.• Lista (kolejka) procesów oczekujących na

jednostki danego zasobu.• Procedura przydziału.

Page 11: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 11/31

Podział zasobów

• Ze względu na sposób wykorzystania:– zasoby odzyskiwalne (zwrotne, reusable),– zasoby nieodzyskiwalne (niezwrotne,

zużywalne, consumable).• Ze względu na sposób odzyskiwania:

– zasoby wywłaszczalne,– zasoby niewywłaszczalne.

• Ze względu na tryb dostępu:– współdzielone,– wyłączne.

Page 12: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 12/31

Kolejki procesów

• Kolejka zadań (job queue) — wszystkie procesysystemu.

• Kolejka procesów gotowych (ready queue) —procesy gotowe do działania, przebywające w pamięci głównej.

• Kolejka do urządzenia (device queue) — procesyczekające na zakończenie operacji wejścia-wyjścia.

• Kolejka procesów oczekujących na sygnał synchronizacji od innych procesami (np. kolejkaprocesów na semaforze).

Page 13: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 13/31

Kolejki w planowaniu przydziału

procesora

wej - wyj

sygnał

procesor

kolejka operacjiwej - wyj

kolejka procesówuśpionych

zamówienieoperacji wej - wyj

upłynięciekwantu czasu

synchronizacja

kolejka procesówgotowych

Page 14: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 14/31

Przełączanie kontekstu

proces 3

proces 2

proces 1bezczynność

bezczynność bezczynność

bezczynność bezczynność

zachowanie kontekstuw bloku kontrolnym 1

odtworzenie kontekstuz bloku kontrolnym 2

Page 15: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 15/31

Planista

• Planista krótkoterminowy, planista przydziału procesora (CPU scheduler) — zajmuje sięprzydziałem procesora do procesów gotowych.

• Planista średnioterminowy (medium-termscheduler) — zajmuje się wymianą procesówpomiędzy pamięcią główną a pamięciązewnętrzną (np. dyskiem).

• Planista długoterminowy, planista zadań (long-term scheduler, job scheduler) — zajmuje sięładowaniem nowych programów do pamięci ikontrolą liczby zadań w systemie oraz ichodpowiednim doborem w celu zrównoważeniawykorzystania zasobów.

Page 16: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 16/31

Cykl zmian stanów procesu z

uwzględnieniem wymiany

gotowyzawieszony

oczekującyzawieszony

oczekującyaktywny

wykonywany

zakończony

gotowyaktywny

nowy

wymiana(PS)

wymiana(PS)

przydziałproc. (PK)

przyjęcie (PD)

przerwanie

Page 17: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 17/31

Obsługa procesów• Tworzenie procesu:

– POSIX: fork,

– Windows: CreateProcess.

• Usuwanie procesu:– POSIX: exit, abort, kill,

– Windows: ExitProcess, TerminateProcess.

• Zawieszanie i aktywacja procesu.• Wstrzymywanie i wznawianie procesu.• Zmiana priorytetu procesu:

– POSIX: nice (setpriority),– Windows: SetPriorityClass.

• Oczekiwanie na zakończenie procesu:– POSIX: wait, waitpid,

– Windows: brak bezpośredniego wsparcia, należyużyć odpowiednich mechanizmów synchronizacji

Page 18: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 18/31

Elementarne operacje na zasobach

• Tworzenie deskryptora zasobu.• Usuwanie deskryptora zasobu.• Realizacja żądania przydziału jednostek

zasobu.• Zwolnienie i odzyskiwanie jednostek

zasobu odzyskiwalnego.• Uwolnienie (wyprodukowanie) jednostki

zasobu nieodzyskiwalnego.

Page 19: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 19/31

Wątki

• Wątek (lekki proces, lightweight process — LWP)jest obiektem w obrębie procesu ciężkiego(heavyweight), posiadającym własne sterowanie iwspółdzielącym z innymi wątkami tego procesuprzydzielone (procesowi) zasoby:– segment kodu i segment danych w pamięci,– tablicę otwartych plików,– tablicę sygnałów.

Page 20: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 20/31

Realizacja wątków

• Realizacja wątków na poziomie jądra systemuoperacyjnego — jądro tworzy odpowiednie struktury (blok kontrolny) do utrzymywaniastanu wątku.

• Realizacja wątków na poziomie użytkownika —struktury związane ze stanami wątków tworzonesą w przestrzeni adresowej procesu.

Page 21: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 21/31

Realizacja wątków na poziomie

jądra systemu operacyjnego

• Wątek posiada własny blok kontrolny w jądrzesystemu operacyjnego, obejmujący:– stan licznika rozkazów,– stan rejestrów procesora,– stan rejestrów związanych z organizacją stosu.

• Własności realizacji wątków na poziomie jądra:– przełączanie kontekstu pomiędzy wątkami

przez jądro,– większy koszt przełączanie kontekstu,– bardziej sprawiedliwy przydział czasu procesora.

Page 22: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 22/31

Realizacja wątków w trybie

użytkownika• Deskryptor wątku znajduje się w tablicy wątków w

pamięci danego procesu (jądro nie wie nic o wątkach).

• Własności realizacji na poziomie użytkownika:– przydział czasu procesora dla procesu (nie dla

wątku),– przełączanie kontekstu pomiędzy wątkami przez

jawne odwołania do mechanizmu obsługi wątków,– mniejszy koszt przełączanie kontekstu (bez

angażowania jądra systemu operacyjnego),– możliwość „głodzenia” wątków tego samego

procesu, gdy jeden z nich spowoduje przejścieprocesu w stan oczekiwania.

Page 23: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 23/31

Przełączanie kontekstu wątkówprzełączaniekontekstu przezwywołaniefunkcji w trybieużytkownika

przełączaniekontekstuprzez jądro

Page 24: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 24/31

Obsługa wątków• Tworzenie wątku:

– POSIX: pthread_create,

– Windows: CreateThread, CreateRomoteThread.

• Usuwanie wątku:– POSIX: pthread_exit, pthread_cancel,

– Windows: ExitThread, TerminateThread.

• Wstrzymywanie i wznawianie wątku:– POSIX: brak,

– Windows: SuspendThread, ResumeThread.

• Zmiana priorytetu wątku:– POSIX: pthread_setschedprio, pthread_setschedparam,

– Windows: SetThreadPriority.

• Oczekiwanie na zakończenie wątku:– POSIX: pthread_join,

– Windows: brak bezpośredniego wsparcia, należyużyć odpowiednich mechanizmów synchronizacji.

Page 25: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 25/31

Realizacja procesów/wątków w

systemie LINUX

• W jądrze systemu Linux nie odróżnia się pojęciawątku od procesu.

• Procesy mogą współdzielić takie zasoby, jak:– przestrzeń adresowa,– otwarte pliki,– informacje o systemie plików,– procedury obsługi sygnałów.

• Deskryptory procesów (o strukturze structtask_struct) przechowywane są na

dwukierunkowej, cyklicznej liście zadań.

Page 26: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 26/31

Stany procesu (wątku) w systemie

LINUX

• TASK_RUNNING — wykonywanie lub gotowość (do wykonania).

• TASK_INTERRUPTIBLE — oczekiwanie na zajściezdarzenia lub sygnał.

• TASK_UNINTERRUPTIBLE — oczekiwanie nazajście zdarzenia, przy czym sygnały sąignorowane.

• TASK_ZOMBI — stan zakończenia utrzymywany wcelu przechowania deskryptora procesu.

• TASK_STOP — zatrzymanie w wyniku otrzymaniasygnału (np. SIGSTOP).

Page 27: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 27/31

Cykl zmian stanów procesu (wątku)

w systemie Linuxzombi

running(wykon.)

interruptible

uninterruptible

stop

running(gotow.)

utworzenieprzez

przodkaoczekiwanie

Page 28: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 28/31

Proces w systemie WINDOWS

• Proces stanowi środowisko do wykonywania wątków.

• Struktury opisu procesu obejmują:– EPROCESS — blok centrum wykonawczego,

opisujący proces,– KPROCESS — blok kontrolny procesu, część

struktury EPROCESS,– PEB — blok środowiska procesu, dostępny w

trybie użytkownika.

Page 29: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 29/31

Wątki w systemie WINDOWS

• Wątki korzystają z zasobów przydzielonych procesom.

• Wątki (nie procesy) ubiegają się o przydziałprocesora i są szeregowane przez planistękrótkoterminowego.

• Struktury opisu wątku obejmują:– ETHREAD — blok centrum wykonawczego,

opisujący wątek,– KTHREAD — blok kontrolny procesu, część

struktury ETHREAD,– TEB — blok środowiska procesu, dostępny w

trybie użytkownika.

Page 30: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 30/31

Stany wątku w systemie

WINDOWS• Inicjalizowany (initialized, wartość 0) — stan

wewnętrzny w trakcie tworzenia wątku,• Gotowy (ready, wartość 1) — oczekuje na

przydział procesora,• Wykonywany (running, wartość 2),• Czuwający (standby, wartość 3) — wybrany do

wykonania jako następny,• Zakończony (terminated, wartość 4),• Oczekujący (waiting, wart. 5) — oczekuje na

zdarzenie,• Przejście (transition, wartość 6) — oczekuje na

sprowadzenie swojego stosu jądra z pliku wymiany,• Unknown (wart. 7)

Page 31: Procesy, wątki i zasoby

Systemy operacyjne Wykład 2 31/31

Cykl zmian stanów wątku w

systemie WINDOWS

przejście

oczekujący

inicjalizowany

gotowyzakończony

wykonywany czuwający