Tudd Intuíció, előadás, szinkronizációs mechanizmusokra

Abstract: A jobb teljesítmény a számítógépes rendszerek és feladatának megkönnyítése programozók speciális szinkronizációs mechanizmusokra. A leírás néhány közülük - Dijkstra a szemafor, figyeli Chora üzenetsorokon - meghatározott ebben a fejezetben.

Év végén az előző előadás algoritmusok bár helyes, de meglehetősen nehézkes, és nem az eleganciát. Sőt, a bemeneti várakozó eljárás a kritikus szakaszban jár egy elég hosszú folyamat forgatás egy üres ciklus, vagyis a hulladék értékes processzor időt. Vannak más súlyos hiányosságokat algoritmusok épített a szokásos programozási nyelvek. Tegyük fel, hogy két folyamat kölcsönhatásban a számítógépes rendszerben, egyikük - H - egy magas prioritású, a másik - L - alacsony prioritású. Hagyja, hogy a ütemező úgy van kialakítva, hogy a folyamat a magas prioritású elmozdít egy alacsony prioritású folyamat, amikor készen áll a végrehajtás, és azon a processzor idejére CPU száma (ha a folyamat még inkább prioritássá nem jelenik meg). Ezután, ha a folyamat L a kritikus szakaszából, egy folyamat, mely során H. processzor. jött a bejáratnál a kritikus terület, kapunk egy patthelyzet. H eljárás nem léphet be a kritikus területen, míg a ciklus, és az eljárás nem kapja meg az ellenőrző L, hogy elhagyja a kritikus szakasz.

Annak érdekében, hogy előfordulása ilyen problémák, különböző mechanizmusok szinkronizáláshoz egy magasabb szintű fejlesztettek ki. Leírása egy részük - szemaforokkal. monitorok és kommunikáció - a tárgya ez az előadás.

Az egyik legkorábbi mechanizmusokat. javasolt, hogy végezzen szinkronizálást feldolgozza acél szemaforokat. fogalom, amely leírja Dijkstra (Dijkstra) 1965-ben.

A koncepció a szemaforokkal

A szemafor egy egész szám változó, amelynek nem negatív értéket, hozzáférést minden eljárás, amelynek kivéve a pillanatban a inicializálási végezhetjük csak két az atomi műveleteket: P (a dán szó proberen - ellenőrzéséhez) és V (a verhogen - növekedés). A klasszikus e műveletek meghatározásával a következő:

Ez a bejegyzés azt jelenti, hogy: működése során a szemafor S P első ellenőrzi az értékét. Ha ez nagyobb, mint 0. azután kivontuk S 1. Ha ez kevesebb vagy egyenlő, mint 0, a folyamat blokkolt, amíg, amíg S nagyobb mint 0. azután kivontuk S 1 lépésben S V szemafor az értékét csak hozzáadunk 1 idején a szemafor lehet inicializálni bármely nem negatív értéket.

Megoldás termelő-fogyasztó problémát szemaforokat

Az egyik a közös feladatok, amelyek szervezete interakciós folyamatok a feladata termelő-fogyasztó (producer-consumer). Legyen két folyamat keresztül kommunikálnak korlátozott méretű pufferben. Gyártó meghatározza az információ a vágólapra, és a fogyasztó letölti onnan. Ezen a szinten a fogyasztók tevékenységei, és a tenyésztők a következőkben foglalhatók össze.

Ha a puffer megtelik, akkor a gyártónak meg kell várnia, amíg nem lesz egy hely, hogy ott új információ. Ha a puffer üres, a felhasználónak kell várni egy új üzenetet. Hogyan tudjuk megvalósítani ezeket az állapotokat szemaforokat. Vegyünk három szemafor. üres. teljes és mutex. Szemafor teljes fogja használni annak érdekében, hogy a fogyasztó meg kell várni, amíg az információ megjelenik a puffer. Szemafor üres fogják használni, hogy megszervezze a várakozási gyártó a teljes puffer és szemafor mutexek - a szervezet a kölcsönös kizárás a kritikus területeken, amelyek az intézkedések put_item és get_item (művelet „a tájékoztatást”, és „hogy a tájékoztatás” nem lehet átlépni, mint ebben az esetben is veszélye információ torzítás). Ezután a probléma megoldása egy C-szerű nyelv a következő:

Ez könnyen ellenőrizhető, hogy valóban ez a helyes megoldás a problémára. Megjegyezzük, futólag, hogy az itt használt szemaforokat eléréséhez két célja van: a szervezet a kölcsönös kizárás, hogy a kritikus szakaszt, és vzaimosinhronizatsii sebesség a folyamatot.

Kapcsolódó cikkek