Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - procesy Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 Zasoby: PROCES wykonujący się program ; instancja programu czas procesora, pamięć operacyjna, pamięć pomocnicza (informacja o otwartych plikach), urządzenia we/wy (np. drukarki, itp.) 2 PROCESY UśYTKOWNIKA wykonują program uŝytkownika SYSTEMOWE wykonują program SO 1
NOWY ZAKOŃCZONY AKTYWNY PAMIĘĆ GŁÓWNA (OPERACYJNA) GOTOWY CZEKAJĄCY ODŁOśONY GOTOWY OdłoŜony CZEKAJACY PAMIĘĆ WIRTUALNA NOWY przyjęcie Uruchomienie/ wznowienie zakończenie AKTYWNY przerwanie ZAKOŃCZONY Oczekiwanie na zdarzenie lub operację we/wy GOTOWY ObsłuŜenie zdarzenia lub operacji we/wy CZEKAJĄCY Stan procesu: NOWY (ang. new) proces został utworzony (m.in. utworzono struktury opisujące proces, przydzielono zasoby), AKTYWNY (ang. running) taki, który otrzymał przydział procesora i są wykonywane instrukcje, CZEKAJĄCY (ang. waiting) czeka na coś, np. zakończenie operacji we/wy (pobierania danych z dysku), odbiór sygnału 6 2
Stan procesu: GOTOWY (ang. ready) posiada wszystko co niezbędne do wykonania, tylko czeka na przydział procesora, ZAKOŃCZONY (ang. terminated) zakończył swoje zadanie PYTANIE: Jaki proces nazywa się ZOMBI? 7 Blok kontrolny procesu (PCB) (tzw. deskryptor procesu). wskaźnik Stan procesu Numer procesu Licznik rozkazów Stan rejestrów procesora Ograniczenia pamięci Wykaz otwartych plików 8 Przykład: prosta organizacja kolejki procesora. TABLICA GŁÓWNA DESKRYPTOR PROCESU 1 DESKRYPTOR PROCESU 1 DESKRYPTOR PROCESU n Struktura procesów Kolejka procesów 0 2... 1 PROCES 1 PROCES 2 PROCES n... ZałóŜmy, Ŝe: 0 aktywny, 1 - gotowy, 2 - czekający 9 3
TWORZENIE PROCESÓW SYSTEM NIESTRUKTURALNY (PROCESY NIE TWORZĄ STRUKTURY) SYSTEM STRUKTURALNY (np. struktura drzewa ojciec, syn) system ze stałą liczbą procesów (tworzonych przy uruchomieniu systemu), z mechanizmem umoŝliwiającym tworzenie i usuwanie (proces zarządca) najczęściej struktura drzewa, odpowiednie mechanizmy umoŝliwiające tworzenie i usuwanie procesów lub struktur (np. ojca i dzieci) Przegląd czynności związanych z tworzeniem, wykonywaniem i usuwaniem: http://pl.wikipedia.org/wiki/proces_%28informatyka%29 11 Przykład: uruchamianie OS Unix. SERWER fork () fork () fork () TERMINALE exec gety...... exec login 12 4
Przykład: linia programu (język C) z funkcją fork() (). pid = fork(); jeśli operacja się nie uda, to pid = -1, jeśli się uda, to pid = numer procesu 13 Współpraca procesów (pozytywna): komunikacja moŝliwość przekazywania informacji przez jeden lub więcej procesów (producenci) określonemu procesowi / procesom (konsumenci) przez bufor lub porty, synchronizacja produkcja i konsumpcja danych w koordynowany sposób (mechanizmy to, np. > blokada pamięci 1 moŝna zapisać, 0 nie; > z wykorzystaniem semaforów 14 Współpraca procesów (negatywna): wzajemne wykluczanie gdy np. dwa procesy odwołują się do jednego niepodzielnego zasobu, moŝliwość tzw. zagłodzenia procesu, wyścigi kto pierwszy, nie zawsze lepszy, np. zamazanie wartości zapisanej przez jeden proces wartością innego procesu 15 5
Algorytmy rozwiązywania problemu wzajemnego wykluczania (na przykładach programowych): http://putwiki.informatyka.org/wiki/analiza_programow ych_rozwi%c4%85za%c5%84_problemu_wzajemne go_wykluczania 16 DEADLOCK - blokada wzajemna, muszą być spełnione 4 warunki: wzajemne wyłączanie przynajmniej 1 zasób musi być niepodzielny (tylko jeden proces w danym czasie moŝe z niego korzystać), przetrzymywanie i oczekiwanie musi istnieć proces mający przydzielony co najmniej 1 zasób i oczekujący na dodatkowy, który przetrzymuje inny, 17 DEADLOCK cd. brak wywłaszczeń zasoby nie podlegają wywłaszczeniu, czekanie cykliczne czekanie cykliczne musi istnieć zbiór procesów postaci {P0,P1,, Pn} takich, Ŝe P0 czeka na zasób, który ma P1, P1 na zasób, który ma P2, itd. Pn czeka na zasób który przetrzymuje P0. 18 6
Detekcja i likwidacja blokady uŝytkownik RESET (sprzętowy lub programowy), uwaga: czasem błędna klasyfikacja, z Ŝycia np. program projektowy nie odpowiada (producent po wydaniu poprawki określił to chyba jako chwilowe obciąŝenie procesora ) i jeśli go nie zakończymy brutalnie, to po np. 1 godzinie będzie pracował dalej, specjalny program wykrywa i wyprowadza system z blokady, sprzętowy RESET (tzw. watchdog) - specjalny licznik odlicza do 0, zawsze z programu głównego powinno nastąpić odświeŝenie (wpisanie wartości), jeśli nie nastąpi, to RESET. Zastosowanie, np. mikrokontrolery. 19 7