wyklad05k, INFORMATYKA - ROK 1, Systemy operacyjne, SO-Wyklady

Poza tym na świecie jest niewiele istot groźniejszych od kobiety.


Problem sekcji krytycznej.

Sprztowe rodki synchronizacji.

Semafory.

Klasyczne problemy synchronizacji.

Regiony krytyczne.

Monitory.

Przykady synchronizacji procesów:
Solaris,
Windows XP/Vista/7,
Linux.
Wiesaw Paczek
Systemy Operacyjne: Wykad 5
1

Wemy
n
procesów rywalizujcych o dostp do
wspólnych (dzielonych) danych.

Kady proces ma segment kodu zwany
sekcj
krytyczn
(critical section)
, w którym moe
korzysta ze wspólnych danych.

Problem:
Naley zapewni, e kiedy jeden
proces wykonuje sekcj krytyczn, wówczas
aden inny proces nie jest dopuszczany do
wykonywania swojej sekcji krytycznej.
Wykonywanie sekcji krytycznej powinno podlega
wzajemnemu wykluczaniu
(mutual exclusion)
.
Wiesaw Paczek
Systemy Operacyjne: Wykad 5
2
do {
sekcja wejciowa
sekcja krytyczna
sekcja wyjciowa
reszta
} while (1);
Wiesaw Paczek
Systemy Operacyjne: Wykad 5
3
1.
Wzajemne wykluczanie:
Jeli jeden proces wykonuje swoj
sekcj krytyczn
, to aden inny proces nie dziaa w
sekcji
krytycznej
.
2.
Postp:
Jeeli aden proces nie wykonuje swojej
sekcji
krytycznej
oraz istniej procesy, które chc wej do swoich
sekcji krytycznych
, to tylko procesy nie wykonujce swoich
reszt
mog rywalizowa o wejcie do
sekcji krytycznej
i
wybór ten nie moe by odwlekany w nieskoczono.
3.
Ograniczone czekanie:
Midzy chwil zgoszenia przez
proces chci wejcia do swojej
sekcji krytycznej
a chwil
uzyskania na to pozwolenie musi istnie
warto graniczna
liczby wej
innych
procesów do
sekcji krytycznych.
Zakadamy, e kady proces jest wykonywany z niezerow
szybkoci.
Nie robimy zaoenia co do wzgldnej szybkoci
n
procesów.
Wiesaw Paczek
Systemy Operacyjne: Wykad 5
4

Dwa procesy:
P_0
i
P_1

zawierajce
sekcje krytyczne
.

Dzielone zmienne:
int kolej = 0;
(czyja kolej wejcia do
sekcji krytycznej
)
bool flaga[2] = {false,false};
(ch wejcia do
SK
)
Kod dla procesu
P_i
(i = 0, 1; j = 1 – i
):
do {
flaga[i] = true;
kolej = j;
while (flaga[j] && kolej == j) ; /* czekaj */
sekcja krytyczna
flaga[i] = false;
reszta
} while (1);
Spenia wszystkie trzy warunki poprawnego rozwizania
problemu sekcji krytycznej.
Wiesaw Paczek
Systemy Operacyjne: Wykad 5
5
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kachorra.htw.pl