12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Semafor binarny nie jest szczególnym przypadkiem semafora ogólnego, nie pamięta onbowiem liczby wykonanych na nim operacji podnoszenia. W wielu typowych zastosowaniachsemafor binarny można jednak zastąpić semaforem ogólnym. Jest tak n p. wtedy, gdy semaforbinarny służy do realizacji wzajemnego wykluczania. Ma wówczas wartość początkową równąl, operacja PB poprzedza wejście do sekcji krytycznej, a operacja VB następuje po wyjściu zniej. Taki sposób korzystania z semafora binarnego gwarantuje, że nigdy nie będą na nimwykonywane dwie bezpośrednio po sobie następujące operacje VB. Semafor binarny możnawówczas zastąpić semaforem ogólnym, a operacje PB i VB operacjami P i V. Jeśli jednakpozwolimy na wielokrotne wykonywanie operacji VB na semaforze binarnym, to takiegosemafora nie można zastąpić semaforem ogólnym.Za pomocą semafora binarnego można natomiast symulować semafor ogólny. Dosymulacji jednego semafora ogólnego potrzeba dwóch semaforów binarnych i jednej zmiennejcałkowitej. Symulacja taka jest przedmiotem zadania 3.3.1.Podnoszenie semafora binarnegoKolejne wielokrotne wykonanie operacji VB na semaforze binarnym ma taki sam skutek,jak pojedyncze wykonanie tej operacji. Choć własność ta może być w niektórychzastosowaniach przydatna, może też bardzo utrudnić wykrycie błędów w programie. To, wjakiej kolejności procesy wykonają operacje PB i VB, może zależeć w rzeczywistości odprędkości procesorów lub sposobu szeregowania procesów do pojedynczego procesora.Zauważmy, że ponieważ semafor binarny nie pamięta liczby wykonanych operacji VB, więcnp. wykonanie w kolejności PB(S], VB(S), VB(S), PB(S) daje zupełne inny wynik niżwykonanie w kolejności PB(S), VB(S), PB(S), VB(S), podczas gdy kolejność ta może zależećod wzajemnych prędkości procesów wykonujących drugą operację PB i drugą operację VB.Aby uniknąć takiej niejednoznaczności, założymy, że podnoszenie podniesionego semaforabinarnego jest błędem wykonania powodującym natychmiastowe zakończenie programuwspółbieżnego.3.1.4 Rozszerzenia i modyfikacjeSemafor dwustronnie ograniczonyOperacje P i V na semaforze ogólnym nie są symetryczne — operacja P możespowodować wstrzymanie procesu, operacja V nie wstrzymuje procesu. Jednym z rozszerzeńpojęcia semafora jest semafor dwustronnie ograniczony [Lipt74, MaO087], czyli taki, który zjednej strony nie może przyjmować wartości ujemnych, ale z drugiej strony nie możeprzekroczyć pewnej dodatniej wartości N. Operacja podnoszenia semafora VD jest więc w tymprzypadku symetryczna do operacji opuszczania PD:• jeśli S = O (S = N) to wstrzymaj działanie procesu wykonującego tę operację, wprzeciwnym razie jeśli są procesy wstrzymane w wyniku podnoszenia (opuszczania)semafora S, to wznów jeden z nich, w przeciwnym razie S := S — l (S := S + 1).(Zauważmy, że nieograniczoność klasycznego semafora jest teoretyczna. W każdejrealizacji istnieje ograniczenie górne na jego wartość. Jest ono jednak na tyle duże, żeprogram, który mógłby je przekroczyć, z pewnością będzie błędny.)Semafor uogólniony35

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!