Ireneusz Mrozek Wydział Informatyki Proces wykonujcy si program Proces jednostka pracy systemu zarzdzan przez system operacyjny. W skład procesu wchodz: - program; - dane - zawarto rejestrów, stosu; - struktury utrzymywane przez system operacyjny niezbdne do zarzdzania procesami Proces w odrónieniu od programu jest obiektem aktywnym, podczas gdy sam program jest jedynie kodem zapisanym w pliku. 2 Kady proces reprezentowany jest w systemie przez blok kontrolny procesu. Blok ten jest miejscem gdzie przechowywane s informacje opisujce dany proces. wskanik numer procesu... Stan procesu licznik rozkazów wykaz otwartych plików 3 1
Zgodnie z przyjtym modelem wszystkie realizowane przez komputer programy nazywane s procesami. Kady proces ma swój wirtualny procesor. Podejcie takie znacznie ułatwia zrozumienie działania systemu, gdy pozwala na jego analiz jako zbiór równolegle działajcych procesów (nie trzeba skupia si nad cigłym przełczaniem procesora pomidzy poszczególnymi zadaniami). Jeden licznik rozkazów A Cztery liczniki rozkazów D B C D A B C D procesy C B A czas 4!" Współbieno działania procesów oznacza, i jednostka centralna dzieli swoj moc obliczeniow midzy wiele procesów jednoczenie. W przypadku architektur jednoprocesorowych współbieno oznacza w rzeczywistoci naprzemienne wykonywanie procesów w dłuszej jednostce czasu. W systemach z podziałem czasu w celu uzyskiwania współbienoci procesor jest przydzielany procesom cyklicznie na krótkie (milisekundowe) kwanty czasu. 5 #$% PROCESY niezalene współpracujce wtki cile powizane słabo powizane 6 2
# przerwanie Proces P0 Przechowaj stan w PCB0... Odtwórz stan z PCB1 Przechowaj stan w PCB1 Odtwórz... stan z PCB0 Proces P1 przerwanie 7 &'!( przerwanie Proces P0 Zachowaj na stosie Rozpocznij wykonanie kodu zgodnie z wektorem przerwania Zachowaj wszystkie w PCB Ustaw nowy stos Wywołaj właciw procedur obsługi przerwania Wywołaj scheduler do wyznaczenia kolejnego procesu do wykonania Załaduj nowe wartoci do rejestrów Wykonuj wybrany proces 8 ) Istniej cztery główne zdarzenia powodujce stworzenie nowego procesu: 1. Inicjalizacja systemu podczas inicjalizacji systemu tworzone s zarówno procesy pierwszoplanowe jak i procesy działajce w tle (np. program do odbierania poczty). 2. Wywołanie funkcji systemowej tworzcej nowy proces przez proces ju działajcy. W systemie Unix do stworzenia nowego procesu naley uy funkcji systemowej fork(), za w systemie Windows CreateProcess(). 3. Stworzenie nowego procesu przez uytkownika kady uytkownik uruchamiajc nowy program powoduje stworzenie nowego procesu. 4. Inicjalizacja zadania wsadowego wystpuje w duych systemach typu Mainframe. Dane zadanie uruchamiane jest, gdy nadeszła jego kolej do uruchomienia i s w systemie wystarczajce zasoby ku temu. 9 3
)* +, #include <stdio.h> main() int pid; pid = fork(); if (pid < 0) fprintf(stderr, Blad funkjci fork()\n ); exit(-1); else if ( pid = = 0 ) /* proces potomny */ execlp( /bin/ls, ls, NULL); fprintf(stderr, Blad funkjci execl()\n ); exit(-1); else /*proces macierzysty */ wait(null); printf( Proces potomny zakonczony\n ); exit(0); 10 - grupy login shell fork/exec parent (PID 480) fork sesja Dziki grupom w systemie UNIX moliwe jest np. wysyłanie sygnałów do wszystkich procesów wchodzcych w skład danej grupy. Grup standardowo tworzy cała rodzina danego procesu. child (PID 481) 11 W systemie Unix list procesów mona uzyska poleceniem ps:. * +, 12 4
. * W systemie Windows list aktualnie działajcych procesów mona uzyska uruchamiajc program taskmgr.exe lub uywajc klawiszy Ctrl-Alt-Delete: 13 & nowy proces gotowy 2 aktywny zakoczenie procesu 3 4 czekajcy 1 Przejcie 1 realizowane jest wówczas, gdy proces nie moe dalej si wykonywa (np. brakuje mu danych do odczytania z łcza komunikacyjnego). Przejcie 2 i 3 realizowane jest niezauwaalnie dla procesu. Przejcia te s wymuszane przez planist przydziału procesora. Przejcie 4 realizowane jest wówczas, gdy warunek powodujcy blokowanie procesu przestanie by prawdziwy. 14 / Istniej cztery podstawowe sposoby koczenia działania procesu: 1. Zakoczenie standardowe poprawne 2. Zakoczenie standardowe niepoprawne 3. Zakoczenie wywołane błdem krytycznym 4. Zakoczenie procesu przez inny proces 15 5
/* +, _exit() return _exit() user function call main function exit() exit() exit function call return exit handler exit handler return call C start-up routine exit() _exit() standard I/O cleanup exec() kernel 16 /* +, #include <stdlib.h> void exit(int status) #include <unistd.h> void _exit(int status) #include <stdlib.h> void atexit(void (*func)(void)); Koniec programu glownego Handler 1 Handler 1 Handler 2 int main() if (atexit(my_exit2)!= 0) perror( atexit error ); if (atexit(my_exit1)!= 0) perror( atexit error ); if (atexit(my_exit1)!= 0) perror( atexit error ); printf ( Koniec programu glownego\n ); void my_exit1(void) printf( Handler 1\n ); void my_exit2(void) printf( Handler 2\n ); 17 /* +, int main() printf ( Koniec programu ); exit(0); Koniec programu int main() printf ( Koniec programu ); _exit(0); 18 6
#( Gdy jeden proces zawiesza swoje działanie (skoczył mu si kwant czasu, oczekuje na zdarzenie), system operacyjny wybiera do wykonania inny proces. Za wybór odpowiedniego do wykonania procesu odpowiada moduł systemu operacyjnego nazywany planist (ang. scheduler). Kolejny do wykonania proces wybierany jest na podstawie uywanego algorytmu planowania (ang. scheduling algorithm). 19 Kolejka procesów gotowych pocztek koniec PCB7 PCB2 Kolejka do streamer a pocztek koniec Kolejka do dysku pocztek koniec PCB3 PCB6 PCB14 20 (( ( Algorytmy szeregowania wywłaszczajce niewywłaszczajce 21 7
(( ( Z uwagi na róne rodowiska pracy algorytmy szeregowania dzieli si na trzy grupy: 1. Algorytmy dla rodowiska wsadowego brak zapotrzebowania ze strony uytkowników na szybk odpowied, dlatego mog by stosowane algorytmy niewywłaszczeniowe lub wywłaszczeniowe z długim kwantem czasowym. 2. Algorytmy dla rodowiska interakcyjnego istnieje zapotrzebowanie na szybkie odpowiedzi systemu, dlatego musz by stosowane algorytmy wywłaszczeniowe. 3. Algorytmy dla rodowiska czasu rzeczywistego czasami wywłaszczanie moe wystpowa czasami nie. S to systemy specyficzne na których uruchamiany jest tylko okrelony rodzaj oprogramowania. Oprogramowanie to musi zawsze ze sob współpracowa. 22 0 ( ( Cele algorytmów szeregowania zmieniaj si w zalenoci od systemu w jakim s zaimplementowane. 1. Sprawiedliwy podział procesora pomidzy procesy. 2. Równomierne obcienie denie do cigłego obcienia wszystkich elementów systemu. 3. W systemach wsadowych maksymalna przepustowo, jak najwysze wykorzystanie procesora, jak najniszy czas przetwarzania. 4. W systemach interakcyjnych szybkie odpowiedzi na zdarzenia pochodzce od uytkownika i zachowanie zgodne z oczekiwaniami uytkownika. 5. W systemach czasu rzeczywistego zapewnienie aby okrelone zadania koczyły si zgodnie z planem. 23 #( 1. Co to jest Blok kontrolny procesu. 2. Opisz co to jest zmiana kontekstu. 3. Jak mona otrzyma list procesów w systemie Windows i w systemie Unix? 4. Omów stany procesu oraz moliwe przejcia midzy nimi. 5. Co to jest i do czego słuy scheduler? 6. Wymie główne cele algorytmów szeregowania. 7. Scharakteryzuj algorytm wywłaszczeniowy i niewywłaszczeniowy. 8. Podaj główne cechy algorytmów planowania w systemach wsadowych, interakcyjnych i czasu rzeczywistego. 24 8