background image

 

 

Systemy operacyjne

wykład 2 

PROCESY

background image

 

 

Proces - fundamentalna jednostka 

obliczeń

• 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.) 

• 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)). 

background image

 

 

Stan procesu (1)

Stan procesu jest określany przez 

bieżącą czynność procesu. Stan 
procesu to wszystkie informacje 
potrzebne do kontynuowania 
zatrzymanego procesu. 

background image

 

 

Stan procesu (2)

Diagram stanów procesu

background image

 

 

Stan procesu (3)

Diagram stanów procesu

background image

 

 

Stan procesu (4)

Diagram stanów procesu

background image

 

 

Stan procesu (3)

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.

background image

 

 

Blok kontrolny procesu (1)

Każdy proces jest reprezentowany w SO 

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.

background image

 

 

 

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.

Blok kontrolny procesu (2)

background image

 

 

Blok kontrolny procesu (3)

 

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 (np. 
przewijakach taśmy) 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.

background image

 

 

Blok kontrolny procesu (4)

Rys. Fragment bloku kontrolnego procesu

background image

 

 

Wykorzystanie bloku kontrolnego

Rys. Przechowywanie stanu procesów w blokach kontrolnych

background image

 

 

Działania na procesach

 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.

background image

 

 

Tworzenie procesu (1)

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 procesu macierzystego
lub
• proces macierzysty i potomkowie nie dzielą 
wspólnych zasobów; 
 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. 

background image

 

 

Tworzenie procesu (2)

 przestrzeń adresowa 
najczęściej
 proces potomny staje się kopią procesu 
macierzystego. 

background image

 

 

Tworzenie procesu (4)

 w UNIX-ie 
 każdemu nowemu procesowi jest 
przyporządkowany identyfikator procesu, będący 
liczbą całkowitą; 
nowy proces tworzy się za pomocą funkcji 
systemowej fork; zawiera on kopię przestrzeni 
adresowej procesu pierwotnego;
 funkcja systemowa execve ładuje plik binarny do 
pamięci (zastępuje  zawartość pamięci procesu) i 
rozpoczyna jego wykonywanie; 
 proces macierzysty może tworzyć następnych 
potomków, lub użyć funkcji systemowej wait aby 
usunąć się z kolejki gotowych procesów, do chwili 
zakończenia procesu potomnego. 

background image

 

 

Kończenie procesu (1)

 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.

background image

 

 

Kończenie procesu (2)

 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)

background image

 

 

Związki między procesami

 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

background image

 

 

Proces niezależny 

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.

Każdy proces, który nie dzieli żadnych danych (tymczasowych 

lub trwałych) z żadnym procesem, jest w istocie procesem 

niezależnym.

 

background image

 

 

Proces współpracujący

 

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 nie 

deterministyczny, gdyż może nie być zawsze taki sam przy 

takich samych danych WE.

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).

background image

 

 

Przykład procesów współpracujących 

zagadnienie producenta - 

konsumenta 

 

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. 

background image

 

 

Wątki

Wątek 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).

Tradycyjny (ciężki) proces jest równoważny zadaniu z 

tylko jednym wątkiem. Zadanie nic nie robi jeśli nie ma 

w nim ani jednego wątku, z kolei wątek może 

przebiegać w dokładnie jednym zadaniu. 

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.


Document Outline