Ugrás a tartalomhoz

Operációs rendszerek

Dr. Fazekas Gábor (2011)

Kempelen Farkas Hallgatói Információs Központ

Szemaforok és alkalmazásaik

Szemaforok és alkalmazásaik

  • a szemaforok (S): speciális, egész típusú (integer) változók, melyeket processzusok végrehajtásának vezérlésére (megállítás/továbbindítás) használhatunk (analógia a vasúti forgalom irányításával!)

    • – (általában) nemnegatív kezdőértéket kaphat

    • – „Wait” művelet csökkenti a szemaforok értékét

      • WAIT(S): S:=S-1; if S<0 then BLOCK(S)

      • BLOCK(S): a hívó processzus "elalszik" az S szemaforon!

    • – „Signal” művelet növeli a szemafor értékét

      • SIGNAL(S): S:=S+1; if S≥0 then WAKEUP(S)

      • WAKEUP(S): "felébreszt" (továbbindít) egyet az S szemaforn alvó processzusok közül

  • egy processzus felfüggesztésre kerül, amíg meg nem kapja a továbbíndítási jelet (signal)

  • a „wait” és „signal” műveletek nem megszakíthatók!

  • a block(S) eljárás felfüggeszti a hívó processzus végrehajtását, és az S szemaforon várakozó processzusok sorához adja

Termelők-fogyasztók problémája

  • egy vagy több termelő adatot generál (termel), melyeket egy pufferbe tesz

  • egy egyszerű fogyasztó ezeket az adatokat egyenként veszi ki a pufferből és dolgozza fel

  • szinkronizációs problémák miatt egyszerre csak egy termelő vagy fogyasztó érheti el a puffert

Az "alvó borbély" probléma

  • A probléma:

    • – 3 szék, 3 borbély, és egy várakozó rész

    • – a tűzjelző beállítása maximum 20 vendéget engedélyez az üzletben

    • – a borbélyüzlet esetenként 50 vendéget tud kiszolgálni

    • – vendég nem léphet be az üzletbe, ha az elérte a max. kapacitását

    • – ha bejutott, a vendég leülhet a kanapéra vagy ha az teli van, akkor áll

    • – mikor egy borbély szabaddá válik, a kanapén legrégebb óta ülő vendég kerül kiszolgálásra és egyúttal ha van álló vendég, a legrégebben álló vendég foglalhat helyet a kanapén

    • – amikor egy vendég hajvágása befejeződött, a díjat bármelyik borbélynak kifizetheti, de mivel csak egy pénztárgép van, egyszerre csak egy vásárló tud fizetni

  • Feladat: a borbélyok és vendégek beprogramozása versenyhelyzetek kialakítása nélkül!

A vacsorázó filozófusok probléma

  • Egy köralakú asztal mellett öt filozófus ül, mindegyik előtt van egy tányér rizs és a szomszédos tányérok között egy-egy evőpálcika.

  • evéshez a filozófus a saját tányérja melletti két evőeszközt használhatja úgy, hogy ezeket egymás után kézbe veszi.

  • ha befejezte az étkezést, visszateszi az eszközöket, és gondolkodni kezd.

  • majd újra megéhezik, stb.

Monitorok

  • a monitorok olyan magas szintű szinkronizációs eszközök, melyek lehetővé teszik egy absztrakt adattípus biztonságos megosztását konkurens processzusok között (a monitor eljárások, változók és adatszerkezetek együttese) …(objektum! Hoare, 1971)

  • főbb jellemzők:

    • – a processzusok hívhatják a monitorban levő eljárásokat, de annak belső adatszerkezetét nem érhetik el

    • – minden időpillanatban csak egy processzus lehet aktív a monitorban

    • – megvalósítása például szemaforokkal lehetséges

    • – a kölcsönös kizárás megvalósítását a fordítóprogram/operációs rendszer végzi, így a hibázás miatti holtpontok elkerülhetők!

    • – a blokkoláshoz és ébresztéshez állapotváltozókat (condition típus) használ két rajtuk elvégezhető művelettel (WAIT, SIGNAL). Ezek az állapotváltozók nem számlálók, mint a szemaforok!