To tylko jedna z 7 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Systemy operacyjne / Współbie Ŝ no ść : wzajemne wykluczanie i synchronizacja 1 Współbie Ŝ no ść : wzajemne wykluczanie i synchronizacja IPC - komunikacja między procesami (InterProcess Communication) Warunki wy ś cigu (ang. race condition) W SO wykonujące się procesy często dzielą obszary wspólnej pamięci, pliki lub inne zasoby. Rozpocznijmy nasze rozwaŜania od przykładu. Def. Warunkami wy ś cigu nazywamy sytuację, w której dwa lub więcej procesów wykonuje operację na zasobach dzielonych, a ostateczny wynik tej operacji jest zaleŜny od momentu jej realizacji. Systemy operacyjne / Współbie Ŝ no ść : wzajemne wykluczanie i synchronizacja 2 Przykład void echo() { chin = getchar(); chout = chin; putchar(chout); } Process P1 Process P2 . . chin = getchar(); . . chin = getchar(); chout = chin; chout = chin; putchar(chout); . . putchar(chout); . . Systemy operacyjne / Współbie Ŝ no ść : wzajemne wykluczanie i synchronizacja 3 Sekcje krytyczne Aby zapobiec warunkom wyścigu naleŜy stworzyć mechanizm zabraniający więcej niŜ jednemu procesowi dostępu do zasobów dzielonych w tym samym czasie. Innymi słowy, naleŜy wprowadzić mechanizm wzajemnego wykluczania ( WW , ang. mutual exclusion). Def. Sekcj ą krytyczn ą nazywamy fragment programu, w którym występują instrukcje dostępu do zasobów dzielonych. Instrukcje tworzące sekcje krytyczne muszą być poprzedzone i zakończone operacjami realizującymi wzajemne wykluczanie. • wybór właściwych operacji realizujących WW stanowi istotę kaŜdego systemu operacyjnego, Dla prawidłowej implementacji sekcji krytycznych ( SK ) muszą być spełnione następujące 3 warunki, przy czym nie czynimy Ŝadnych załoŜeń dotyczących szybkości działania procesów, czy teŜ liczby CPU: Systemy operacyjne / Współbie Ŝ no ść : wzajemne wykluczanie i synchronizacja 4 Mechanizm realizacji sekcji krytycznej powinien spełaniać poniŜsze załoŜenia: 1. wewnątrz SK moŜe przebywać tylko jeden proces, 2. jakikolwiek proces znajdujący się poza SK, nie moŜe zablokować innego procesu pragnącego wejść do SK, 3. kaŜdy proces oczekujący na wejście do SK powinień otrzymać prawo
(…)
… inny proces będzie interweniował.
• wada: jeśli proces na wyjściu z SK nie odblokuje przerwań, to nastąpi
upadek systemu; ponadto, w przypadku systemów wieloprocerowych
technika nieskuteczna,
• technika blokowania przerwań moŜe być stosowana w jądrze SO przy
uaktualnianiu niektórych systemowych struktur danych, lecz nie moŜe
być wykorzystywana do realizacji wzajemnego wykluczania w
przestrzeni uŜytkownika…
… (TRUE){
produce_item();
down(empty);
down(mutex);
enter_item();
up(mutex);
up(full);
}
}
Operacje te muszą być niepodzielne.
Monitory
W celu łatwiejszego pisania programów realizujących wzajemne
wykluczanie (WW) Hoare (1974) i Hansen (1975) zaproponowali
mechanizm synchronizacji wysokiego poziomu zwany monitorem.
Def.
Monitor stanowi zbiór procedur, zmiennych i struktur danych, które są
zgrupowane…
… w specjalnym module. W kaŜdej chwili tylko jeden proces
aktywny moŜe przebywać w danym monitorze.
Monitory są konstrukcją języka wysokiego poziomu. UŜytkownik pisząc
program w takim języku umieszcza wszystkie sekcje krytyczne w
monitorze. Za właściwą implementację wzajemnego wykluczania jest
odpowiedzialny kompilator.
W przedstawionej koncepcji brak jest mechanizmu, który powodowałby
zawieszenie procesu…
... zobacz całą notatkę
Komentarze użytkowników (0)