Systemy operacyjne - współbierność -omówienie

Nasza ocena:

3
Pobrań: 14
Wyświetleń: 427
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
 Systemy operacyjne - współbierność -omówienie - strona 1  Systemy operacyjne - współbierność -omówienie - strona 2  Systemy operacyjne - współbierność -omówienie - strona 3

Fragment notatki:

Systemy operacyjne /
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.
Przykład
void echo()
{
chin = getchar();
chout = chin;
putchar(chout);
}
Process P1
.
Process P2
.
chin = getchar();
.
chin = getchar();
chout = chin;
putchar(chout);
.
putchar(chout);
.
.
chout = chin;
.
.
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.
Systemy operacyjne /

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:
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 dostępu
w rozsądnym czasie.
Przegląd implementacji mechanizmu wzajemnego wykluczania
Rozróżniamy dwa podejścia:
*
*
wzajemne wykluczanie z aktywnym oczekiwaniem,
zawieszanie procesu oczekującego na wejście do sekcji krytycznej.
Aktywne oczekiwanie
1. Blokowanie przerwań (ang. disabling interrupts)




każdy proces wchodząc do SK blokuje przerwania, a wychodząc odblokowuje,
zaleta: proces znajdujący się w SK może uaktualnić zawartość zasobów
dzielonych bez obawy, że 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.
2. Zmienne blokujące (lock variables)
Rozwiązanie programowe. Niech będzie dana zmienna dzielona o nazwie lock.
Niech początkowo lock ma wartość 0. Kiedy proces P chce wejść do SK, to
sprawdza wartość lock.
Systemy operacyjne /
Jeśli lock = 0, to ustawia lock na 1 i wchodzi do SK;
Jesli nie (tzn. ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz