You are on page 1of 32

wykład 2

PROCESY

1
 Proces to realizacja programu. Wykonanie procesu musi
przebiegać w sposób sekwencyjny.
 (Program jest obiektem pasywnym, proces jest aktywny, ma licznik
rozkazów, określający następny rozkaz do wykonania. Procesowi może
być przydzielony procesor i pamięć (RAM)).

 Proces jest jednostką pracy systemu operacyjnego.


System składa się ze zbioru procesów. Procesy S.O.
wykonują program systemu, procesy użytkowe działają
wg programów napisanych przez użytkowników.
 (Przy przetwarzaniu wsadowym mówiło się o zadaniach, w systemie z
podziałem czasu o programach użytkownika lub pracach, a w obecnych
systemach używa się określenia procesy.)

2
Stan procesu jest określany przez bieżącą
czynność procesu. Stan procesu to wszystkie
informacje potrzebne do kontynuowania
zatrzymanego procesu.

3
SO wywłaszczeniowy
Zakończenie procesu
Nowy proces
gotowy aktywny

czekający

Diagram stanów procesu

4
S.O. jest wywłaszczeniowy jeżeli możliwe jest
w nim przejście procesu ze stanu aktywności
do gotowości, czyli zabranie procesora.

5
Wykonujący się proces zmienia swój stan; każdy
proces może znajdować się w jednym z następujących trzech
stanów:

• aktywny - są wykonywane instrukcje,


• czekający - proces czeka na wystąpienie jakiegoś zdarzenia
(np. na zakończenie operacji WE/WY),

• gotowy - proces czeka na przydział procesora.

6
Każdy proces jest reprezentowany w S.O. przez blok kontrolny procesu, zawierający
następujące informacje:

 Stan procesu - stan może być określony jako gotowy, aktywny,


czekający.
 Licznik rozkazów - licznik ten wskazuje adres następnego
rozkazu do wykonania w procesie.
 Rejestry procesora - liczba i typy rejestrów zależą od
architektury komputera; są tu akumulatory, rejestry indeksowe,
wskaźniki stosu, rejestry ogólnego przeznaczenia oraz rejestry
warunków. Informacje dotyczące tych rejestrów i licznika rozkazów
muszą być przechowywane podczas przerwań, aby proces mógł być
później poprawnie kontynuowany. 7
 Informacje o planowaniu przydziału procesora - należą
do nich: priorytet procesu, wskaźniki do kolejek
przyporządkowujących zamówienia, a także inne parametry
planowania.
 Informacje o zarządzaniu pamięcią - mogą to być
informacje takie, jak zawartości rejestrów granicznych, tablice
stron lub tablice segmentów - zależnie od systemu pamięci
używanej przez SO.

8
 Informacje do rozliczeń - do tej kategorii informacji należy
ilość zużytego czasu procesora i czasu rzeczywistego,
ograniczenia czasowe, numery zadań lub procesów itp.
 Informacje o stanie WE/WY - mieszczą się tu informacje o
urządzeniach WE/WY przydzielonych do procesu, wykaz
otwartych plików itd.

Blok kontrolny procesu służy jako magazyn przechowujący


każdą informację, która może się zmieniać w zależności od
procesu.
9
Rys. Fragment bloku kontrolnego procesu

10
Rys. Przechowywanie stanu procesów w blokach kontrolnych
11
 Procesy w systemie mogą być wykonywane współbieżnie
oraz dynamicznie tworzone i usuwane. System musi zawierać
mechanizm tworzenia i kończenia procesu.
 Każdy nowy proces może tworzyć kolejne procesy,
wynikiem czego jest drzewo procesów.

12
Proces macierzysty (parent process) tworzy procesy zwane
potomkami (children) ==>drzewo procesów.

 dzielenie zasobów
• proces macierzysty i potomkowie dzielą wszystkie zasoby
lub
• potomkowie dzielą podzbiór zasobów procesu macierzystego
lub
• proces macierzysty i potomkowie nie dzielą wspólnych zasobów;

13
 wykonywanie procesów
• proces macierzysty kontynuuje działanie współbieżne ze swoimi
potomkami
lub
• proces macierzysty oczekuje na zakończenie działania niektórych
lub wszystkich swoich procesów potomnych.

14
 przestrzeń adresowa
najczęściej
 przestrzeń adresowa procesu potomnego staje się kopią
przestrzeni adresowej procesu macierzystego.

15
 proces wykonuje swoją ostatnią instrukcję i prosi SO
(funkcja systemowa exit), aby go usunął;
 może wtedy przekazać dane do procesu macierzystego, za
pośrednictwem funkcji systemowej wait;
 zasoby procesu (pamięć fizyczna i wirtualna, otwarte
pliki, bufory WE/WY) zostają odebrane przez SO.

16
 Proces macierzysty może zakończyć wykonywanie procesu
potomnego za pomocą funkcji systemowej, np. abort.
 gdy potomek nadużył któregoś z przydzielonych mu
zasobów
lub
 gdy wykonywane przez potomka zadanie stało się zbędne
lub
gdy proces macierzysty kończy pracę (wtedy, w wielu SO
kończone są procesy potomne – kończenie kaskadowe)

17
Współbieżne działanie procesów oznacza, że procesor
dzieli swą moc obliczeniową na wiele procesów
jednocześnie (np. dla równoległego wykonywania
pewnych obliczeń).

Procesy mogą być niezależne lub mogą ze sobą


współpracować.
Procesy współpracujące konkurują o zasoby i wymieniają
między sobą informacje. Pojawia się problem
zsynchronizowania procesów.

18
Proces jest niezależny (nie dzieli żadnych danych z
innym procesem) jeżeli:
 nie może oddziaływać na inne procesy, a one też nie
mogą wpływać na jego działanie;
 jego działanie jest deterministyczne, tzn. wynik jego
pracy zależy wyłącznie od stanu WE;
 jego działanie daje się powielać, tzn. wynik pracy
procesu niezależnego jest zawsze taki sam przy
takich samych danych,
 jego wykonanie może być wstrzymywane i
wznawiane bez żadnych szkodliwych skutków.

19
Każdy proces, który nie dzieli żadnych danych
(tymczasowych lub trwałych)
z żadnym procesem, jest w istocie procesem
niezależnym.

20
Proces jest współpracujący, jeżeli może
wpływać na inne procesy lub inne procesy
mogą wpływać na niego.
Proces taki ma następujące własności:
 nie da się określić z góry wyniku działania
procesu;
 wynik działania procesu współpracującego jest
niedeterministyczny, gdyż może nie być zawsze
taki sam przy takich samych danych WE.

21
Zatem dowolny proces, który dzieli jakieś
dane z innymi procesami jest procesem
współpracującym.
Procesy współpracujące mogą bezpośrednio
dzielić przestrzeń adresów logicznych (tj.
zarówno kod, jak i dane) lub może im być
wolno dzielić dane wyłącznie za
pośrednictwem plików. Pierwszy przypadek
dotyczy tzw. procesów lekkich czyli wątków
(thread).

22
 popularny paradygmat (wzorzec) współpracujących
procesów; producent wytwarza informację, którą zużywa
proces konsument;
 potrzebny jest bufor jednostek informacji, aby umożliwić
producentowi i konsumentowi działanie współbieżne
 nieograniczony bufor,
 ograniczony bufor: konsument musi czekać jeżeli
bufor jest pusty, a producent musi czekać jeżeli bufor
jest pełny,
 procesy producenta i konsumenta muszą podlegać
synchronizacji, aby konsument nie próbował korzystać z tego
co nie zostało wyprodukowane. 23
Wątek (thread) jest jednostką podstawową
wykorzystania procesora. Stan wątku jest
zdefiniowany małą ilością odrębnych danych.
Grupa równoprawnych wątków dzieli kod,
przestrzeń adresową i zasoby S.O.
Środowisko, w którym działa wątek, nazywa
się zadaniem (task).

24
Pojedynczy wątek ma przynajmniej własny
stan rejestrów i na ogół własny stos.
Przełączanie procesora między
równoprawnymi wątkami, jak również
tworzenie wątków jest tanie w porównaniu z
przełączaniem kontekstu między
tradycyjnymi procesami.

25
Różnica między zwykłym procesem a wątkiem polega na
współdzieleniu przez wszystkie wątki uruchomione w
jednym zadaniu przestrzeni adresowej oraz wszystkich
struktur systemowych (np. listy otwartych plików).

Ta cecha ma dwie ważne konsekwencje:


- wątki wymagają mniej zasobów do działania i też
krótszy jest czas ich tworzenia.
- dzięki współdzieleniu przestrzeni adresowej (pamięci)
wątki jednego zadania mogą się między sobą komunikować
w bardzo łatwy sposób, niewymagający pomocy ze strony
systemu operacyjnego.

26
Każdy proces posiada przynajmniej jeden
wątek- main.
Możliwość uruchomienia większej liczby
wątków w jednym procesie określa się
mianem procesu wielowątkowego
(multithreading).

27
Podobnie jednak jak ma to miejsce w
przypadku procesów - równoległe
wykonywanie większej ilości wątków
jest jedynie iluzją. W rzeczywistości
procesor przełącza wykonywane
obecnie zadania pomiędzy
poszczególnymi wątkami.

28
Wątek identycznie jak proces może
znajdować się w jednym z trzech różnych
stanów:
 aktywny,
 gotowy,
 czekający,
I dokładnie w ten sam sposób system
operacyjny dokonuje przejść pomiędzy tymi
stanami.

29
W momencie uruchomienia procesu wielowątkowego
na początku zostaje w większości wypadków
uruchomiony tylko jeden wątek w danym procesie.
Wątek ten, poprzez włączenie odpowiednich
bibliotek ma możliwość tworzenia dalszych wątków
i z niego zostają uruchomione inne wątki.
Po zakończeniu pracy przez dany wątek, zostaje
wywołana procedura, która kończy (niszczy) wątek.
Inna procedura umożliwia dobrowolne oddanie CPU
innym oczekującym wątkom. Czyli dobrowolne
przejście w stan gotowy ze stanu aktywny. Jest to
bardzo istotna procedura gdyż w przeciwieństwie
do procesów, wątki nie zostają przerwane poprzez
przerwanie zegara systemowego.
30
Głównym celem stosowania wątków w
procesie jest możliwość jednoczesnego
wykonywania w jednym procesie większej
liczby prac jednocześnie.

31
Przykład stosowania wątków wątków

Przykładem jest automatyczne


zapisywanie dokumentów w edytorze
tekstowym. Jest to funkcja, którą posiada
każdy bardziej zaawansowany edytor. Gdyby
funkcja taka została wywołana jako zwykła
funkcja w programie głównym (edytorze) to
na czas automatycznego zapisywania
dokumentu na dysku - musiałby on przestać
reagować na dane wprowadzane przez
użytkownika.

32

You might also like