Synchronizacja procesów

Nasza ocena:

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

Pobierz ten dokument za darmo

Podgląd dokumentu
Synchronizacja procesów - strona 1 Synchronizacja procesów - strona 2 Synchronizacja procesów - strona 3

Fragment notatki:


Systemy operacyjne wykład 6. Synchronizacja procesów Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.2 Wykład 6:  Synchronizacja procesów • Podstawy • Problem sekcji krytycznej • Rozwiązania Petersona • Sprzętowe wsparcie synchronizacji • Semafory • Klasyczne problemy synchronizacji • Monitory • Przykłady synchronizacji • Transakcje niepodzielne Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.3 Cele • Wprowadzenie problemu sekcji krytycznej, którego rozwiązania mogą być  wykorzystane w celu zapewnienia spójności współdzielonych danych • Prezentacja rozwiązań programowych i sprzętowych problemu sekcji krytycznej • Wprowadzenie koncepcji transakcji niepodzielnej i opisanie mechanizmów  zapewniających niepodzielność transakcji Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.4 Podstawy • WspółbieŜny dostęp do danych współdzielonych moŜe powodować  niespójność danych • Utrzymanie spójności danych wymaga mechanizmów  zapewniających  uporządkowane wykonanie współpracujących procesów • ZałóŜmy, Ŝe chcieliśmy zapewnić rozwiązanie problemu producenta- konsumenta, w którym zapełniane są wszystkie bufory. MoŜemy to osiągnąć  wykorzystując całkowity licznik, który przechowuje liczbę pełnych buforów.  Początkowo licznik ten jest ustawiony na 0. Jest on zwiększany przez  producenta po wyprodukowaniu nowego bufora, a zmniejszany przez  konsumenta po „skonsumowaniu” bufora. Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.5 Producent while (true) { /*  produce an item and put in nextProduced  */ while (count == BUFFER_SIZE) ; // do nothing buffer [in] = nextProduced; in = (in + 1) % BUFFER_SIZE; count++; }    Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.6 Konsument while (true)  { while (count == 0) ; // do nothing nextConsumed =  buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; /*  consume the item in nextConsumed } Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 1.7 Szkodliwa rywalizacja ( Race Condition ) • count++ moŜe być zaimplementowane następująco: register1 = count

(…)

…: konsument wykonuje count = register2 {count = 4}
Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009
1.7
Rozwiązanie problemu sekcji krytycznej
1. Wzajemne wykluczanie – JeŜeli proces Pi wykonuje swoją sekcję krytyczną,
wówczas Ŝadne inne procesy nie mogą wykonywać swoich sekcji krytycznych
2. Postęp - JeŜeli Ŝaden z procesów nie wykonuje swojej sekcji…

Rozwiązania:
do {
key = TRUE;
while ( key == TRUE)
Swap (&lock, &key );
//
critical section
lock = FALSE;
//
remainder section
} while (TRUE);
Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009
1.16
Wzajemne wykluczanie z ograniczonym
czekaniem w uŜyciem TestAndSet
do {
waiting[i] = TRUE;
key = TRUE;
while (waiting[i] && key)
key = TestAndSet(&lock);
waiting…

Linux
Pthreads
Opracowano na podst.: Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009
1.45
Solaris - synchronizacja
• RóŜne rodzaje zamków do wykorzystania w wielozadaniowości,
wielowątkowości (włączając w to wątki czasu rzeczywistego) i
wieloprzetwarzania
• Wykorzystanie zamków adaptacyjnych (adaptive mutexes) do efektywnej
ochrony danych, do których dostęp odbywa…
... zobacz całą notatkę

Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz