6 Systemy Operacyjne 30 11 2010 Zarządzanie procesami2
SYSYTEMY OPERACYJNE Zarządzanie procesami 30.11.2010 Tworzenie procesu na przykładzie SO UNIX Proces macierzysty Proces potomny w = folk() Pamięć operacyjna Proces potomny nowy program (obraz nowego procesu) Proces macierzysty folk() 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 = folk() w = folk() w = folk() w = folk() w=fork(); w = folk() w = folk() w = folk() w = folk() w=fork(); PID 2 PID 1 liczba powołanych procesów =2n gdzie : n liczba instrukcji fork(); proces 'init' proces pierwotny Stany procesów w SO UNIX 3 2 1 ZOMBI 4 operacje WE/WY 5 6 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 Procesy nowe P P2 P1 PROCESOR n Procesy gotowe do wykonania " algorytm prosty co do realizacji (wydaje się sprawiedliwy), " mało efektywny. Przepustowość = liczba procesów obsługiwanych / sekundę 2. Priorytet Procesy gotowe do wykonania P1 P2 priorytet max AKTYWNY Pn 3. Kolejki priorytetowe (np.: WINDOWS) priorytety 31 P1 P6 P9 P4 P2 P7 1 P3 P5 P8 0 kolejki Wywłaszczanie 4.Postarzanie priorytetów (np.: UNIX) Kolejka procesów gotowych do wykonania priorytet priorytet początkowy P1 czas oczekiwania P2 priorytet max AKTYWNY Pn polecenie 'nice' wykonanie procesu z niższym priorytetem