SYSYTEMY OPERACYJNE
Zarządzanie procesami
30.11.2010
Tworzenie procesu na przykładzie SO UNIX
Przykład:
W = frok();
printf(„Ala”);
printf(„Ola”);
Przykład:
w = fork();
if(w == 0)
{ //proces potomny
exec('plik wykonywalny');
}
else
{ //proces macierzysty
//...
}
w=fork();
w=fork();
w=fork();
Proces macierzysty
w = folk()
Proces potomny
Proces macierzysty
folk()
Proces potomny
Pamięć operacyjna
nowy program
(obraz nowego procesu)
P
ID
1
2
PI
D
w = folk()
w = folk()
w = folk()
w = folk()
w = folk()
w = folk() w = folk() w = folk()
liczba powołanych procesów =2
n
gdzie : n – liczba instrukcji
fork();
proces '
init
' – proces pierwotny
Stany procesów w SO UNIX
1 – stany stanu gotowy do wykonania
2 – proces wykonywany w trybie jądra
3 – proces wykonywany w trybie użytkownika
4 – proces uśpiony w pamięci
5 – proces uśpiony poza pamięcią
6 – proces gotowy do wykonania poza pamięcią
Algorytmy pracy programu szeregującego (Scheduler'a)
Scheduler – jest wywoływany przez przerwania :
•
zewnętrzne,
•
generowane przez zegar systemowy.
1. Kolejka
•
algorytm prosty co do realizacji (wydaje się sprawiedliwy),
•
mało efektywny.
Przepustowość = liczba procesów obsługiwanych / sekundę
1
2
3
4
5
6
ZOMBI
operacje WE/WY
P
1
2
n
P
P
Procesy nowe
Procesy gotowe
do wykonania
PROCESOR
2. Priorytet
3. Kolejki priorytetowe (np.: WINDOWS)
Wywłaszczanie
4.Postarzanie priorytetów (np.: UNIX)
polecenie '
nice
' – wykonanie procesu z niższym priorytetem
Procesy gotowe
do wykonania
priorytet max
AKTYWNY
P
1
P
n
P
2
priorytety
kolejki
0
1
31
P
1
P
5
P
2
P
3
P
4
P
6
P
8
P
7
P
9
Kolejka procesów
gotowych do
wykonania
priorytet max
AKTYWNY
P
1
P
n
P
2
priorytet
czas oczekiwania
priorytet początkowy