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.

selectwhen wolneA > 0 =>accept PRZYDZIELI;wolneA := wolneA - 1;orwhen wolneA + wolneB > 0 =>accept PRZYDZIEL2(typ: out A..B) doif wolne A > 0 thentyp := A;wolneA := wolneA - 1;elsetyp := B;wolneB := wolneB - 1;end if;end PRZYDZIEL2;oraccept PRZYDZIEL3(typ: out A..B; dostał: out Boolean)doif wolneB > 0 thentyp := B;wolneB := wolneB - 1;dostal := True;elsif wolneA > 0 thentyp := A;wolneA := wolneA - 1;dostal := True;elsedostal := False;end if;end PRZYDZIEL3;oraccept ZWALNIAM(typ: in A..B) doif typ = A then wolneA := wolneA + 1;else wolneB := wolneB + 1;end if;end ZWALNIAM;end select;end loop;end MON;Rozwiązanie to różni się od rozwiązania z rozdz. 4 tym, że procesy żądające zasobunie czekają w jednej lecz w trzech kolejkach. W rezultacie wybór obsługiwanej grupy jestniedeterministyczny. Procesy grupy trzeciej mogą być zawsze obsłużone, procesy grupydrugiej tylko wtedy, gdy są jakieś wolne zasoby, a procesy grupy pierwszej tylko wtedy, gdy sąwolne zasoby typu A. Procesy grupy pierwszej nie mają tu tak zdecydowanego priorytetu jak wrozwiązaniu z p. 4.4.10. W przypadku zwalniania zasobu typu A nie przydziela się gobezwarunkowo czekającemu procesowi grupy pierwszej; jeśli czekają także procesy grupydrugiej, to wybórjest niedeterministyczny, jest bowiem spełniony zarówno warunek wolneA >0, jak i warunek wolneA + wolneB > 0. Co więcej, jeśli w chwili zwracania zasobu typu Apojawi się żądanie procesu grupy trzeciej, to również ono może być obsłużone. Mimo tychwszystkich różnic przedstawione rozwiązanie jest poprawnym rozwiązaniem postawionegozadania.6.4.5 Szeregowanie żądań do dyskuRozwiązanie wersji 1175

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

Saved successfully!

Ooh no, something went wrong!