slides 12 mutex

Upload: sweidan-omar

Post on 07-Apr-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Slides 12 Mutex

    1/54

    Budapesti Mszaki s Gazdasgtudomnyi Egyetem

    Mrstechnika s Informcis Rendszerek Tanszk

    Feladatok (task) egyttmkdse

    dr. Kovcshzy Tams5. anyagrsz,

    Klcsns kizrs, szinkronizci, kommunikci

    Opercis rendszerek (vimia219)

  • 8/3/2019 Slides 12 Mutex

    2/54

    BME-MIT 2011, Minden jog fenntartva 2. lap

    Feladatok egyttmkdse

    Krdsek:

    o Erforrsok hasznlata, kzs erforrsok?o Feladatok kommunikcija?

    o Feladatok szinkronizcija?

    o Architektra fgg krdsek? Mit s hogyan hasznlunk a feladatok megoldsra?

  • 8/3/2019 Slides 12 Mutex

    3/54

    BME-MIT 2011, Minden jog fenntartva 3. lap

    Prhuzamos vgrehajthatsg

    Bernstein felttele:

    o Pi s Pj kt darabja egyprogramnak.

    o Pi sszes bemenetivltozja Ii, s az sszes

    kimeneti vltozja Oi,ugyan ez Pj-re Ij s Oj.

    o A kt programprhuzamosanvgrehajthat (vagyisfggetlen):

    0

    0

    0

    OjOi

    OjIi

    OiIj

  • 8/3/2019 Slides 12 Mutex

    4/54

    BME-MIT 2011, Minden jog fenntartva 4. lap

    Egyttmkds lehetsgei

    Kzs memrin keresztl (RAM v. PRAM modell):

    o Szlak esetn (kzs memria).

    zenetekkel:

    o Rszletesen beszlnk rla ksbb.

  • 8/3/2019 Slides 12 Mutex

    5/54

    BME-MIT 2011, Minden jog fenntartva 5. lap

    RAM modell

    Klasszikus Random Access Memory (egy

    vgrehajt egysg). RAM-modell szerint mkdik, azaz:

    o Trolrekeszekbl ll,

    o

    Egy dimenziban, rekeszenknt cmezhet, csakrekeszenknt, rs s olvass mveletekkel rhet el,

    o Az rs a teljes rekesztartalmat fellrja az elztartalomtl fggetlen j rtkkel,

    o Az olvass nem vltoztatja meg a rekesz tartalmt,teht tetszleges szm, egymst kvet olvass azolvassokat megelzen utoljra bert rtket adjavissza.

  • 8/3/2019 Slides 12 Mutex

    6/54

    BME-MIT 2011, Minden jog fenntartva 6. lap

    PRAM modell

    Parallel Random Access Memory (sok vgrehajt egysg).

    Tbb vgrehajt egysg rhatja s olvashatjaprhuzamosan.

    Vltozsok a RAM modellhez kpest:o Az olvass-olvass tkzsekor mindkt olvass ugyanazt az

    eredmnyt adja, s ez megegyezik a rekesz tartalmval,o Az olvass-rs tkzsekor a rekesz tartalma fellrdik a berni

    szndkozott adattal, az olvass eredmnye vagy a rekesz rgi,vagy az j tartalma lesz (versenyhelyzet), ms rtk nem lehet,

    o Az rs-rs tkzsekor valamelyik mvelet hatsa rvnyesl, akt berni szndkozott rtk valamelyike rja fell a rekesztartalmt (versenyhelyzet), harmadik rtk nem alakulhat ki.

    A gyakorlatban ezt hasznljuk

  • 8/3/2019 Slides 12 Mutex

    7/54 BME-MIT 2011, Minden jog fenntartva 7. lap

    Erforrs

    Erforrs (resource)

    oMinden olyan eszkz, amire a prhuzamos programnakfutsa kzben szksge van.

    o A legfontosabb erforrs a vgrehajt egysg.

    o

    Memria s annak tartalma (trolt adatstruktrk).o Perifrik.

    o Stb.

  • 8/3/2019 Slides 12 Mutex

    8/54 BME-MIT 2011, Minden jog fenntartva 8. lap

    Kzs erforrs Kzs erforrs (shared resource)

    o Egy idintervallumban tbb, prhuzamosan fut feladatnak lehetr szksge.

    o Az erforrson osztoznak a feladatok.

    o Tbbnyire egy idben egy vagy maximum megadott szmfeladat tudja helyesen hasznlni (rs s olvass).

    Egy felhasznl: Printer, Asszinkron soros port (UART), sszetettadattpusokbl ltrehozott vltozk (string, tmb, struktra, objektum).

    Tbb prhuzamos felhasznl: SCSI vagy SATA NCQ HDD (N parancsoptimalizlt prhuzamos vgrehajtsra kpesek).

    o A rendszerterveznek s programoznak a legfontosabb

    feladata, hogy felismerje a kzs erforrsokat, s biztostsaazok helyes hasznlatt.

    o Az OS szolgltatsokat nyjt a problma megoldsra, de amegolds a programoz kezben van!

  • 8/3/2019 Slides 12 Mutex

    9/54 BME-MIT 2011, Minden jog fenntartva 9. lap

    Plda

    sszetett adattpus:o

    C struktra vagy tmb tpusvltoz.

    Kzs erforrs, ha tbbrszfeladat hasznlja:o

    Task1 rja.o Task2 olvassa.

    o Task1 fut elszr.

    o Task2 futtatsra vlt a rendszer ars kzben (pl. preemptv arendszer).

    o Inkonzisztens llapotban olvassa kia vltozt Task2.

    o Slyos hiba!

    C struct

    TASK1TASK1TASK2TASK2TASK2

  • 8/3/2019 Slides 12 Mutex

    10/54 BME-MIT 2011, Minden jog fenntartva 10. lap

    A problma megoldsa Klcsns kizrs (mutual exclusion)

    o Annak biztostsa, hogy a kzs erforrst egy idben csak annyi

    magban szekvencilis feladat hasznlja, amely mellett a helyesmkdse garantlhat.

    o A klcsns kizrst meg kell oldanunk a programban.o Tbbnyire a hasznlt erforrst lock-oljuk (elzrjuk).

    Nem engedjk hozzfrni a tbbi rszfeladatot.

    A krds az, hogy azt hogyan tudjuk megoldani, s milyen rszletessggelkell megoldanunk azt.

    Kritikus szakasz (critical section)o A magban szekvencilis feladatok azon kdrszletei, amely sorn

    a klcsns kizrst egy bizonyos kzs erforrsra biztostjuk.o A kritikus szakasz a krdses kzs erforrshoz tartozik.o A kritikus szakaszt a hozz tartoz erforrsra atomi mveletknt

    (nem megszakthat mdon) kell vgrehajtanunk.

  • 8/3/2019 Slides 12 Mutex

    11/54 BME-MIT 2011, Minden jog fenntartva 11. lap

    Szemlltets

    Task 1 Task 2

    Resource A

    1 felhasznl

    Task 1 kritikusszakasza A-ra

    Task 2 kritikus

    szakasza A-ra

  • 8/3/2019 Slides 12 Mutex

    12/54 BME-MIT 2011, Minden jog fenntartva 12. lap

    Atomi mvelet Atomi mvelet (atomic operation)

    o Nem megszakthat mvelet, amelyet a processzoregyetlen utastsknt hajt vgre.

    o Egyprocesszoros rendszerben brmilyen mveletsoratomiv tehet a mveletsor elejn az IT teljestiltsval, majd a mveletsor vgn annak

    engedlyezsvel.o TAS, RMW, specilis CPU utastsok az IT

    tilts/engedlyezs elkerlsre. Test and Set, Read-Modify-Write, stb.

    Elemi adattpusra (8/16/32/64 bit). A modern processzoroknak vannak ilyen utastsai.

    o A kzs erforrsok lock-olst, a kritikus szakaszmegvalstst atomi mveletekre vezetjk vissza.

  • 8/3/2019 Slides 12 Mutex

    13/54 BME-MIT 2011, Minden jog fenntartva 13. lap

    Kzs erforrsok vdelme

    Mik frhetnek hozz a kzs erforrsokhoz?o ISR (Interrupt service routine).o Feladat (folyamat vagy szl).o DMA.

    Lehetsgek:o IT tiltsa s engedlyezse. (specilis esetben lehetsges).o temez tiltsa s engedlyezse. (specilis esetben

    lehetsges).o Locking (erforrs specifikus lefoglals majd felolds).

    Ms, kutatsi fzisban lv megoldsok:

    o Software/hardware transactional memory (STM/HTM).o Software-isolated processes (MS Singularity).

    A lock megolds sokak szerint nem j, de jobb mint brmieddig hasznlt megolds, vagyis ez az elfogadottmegolds.

  • 8/3/2019 Slides 12 Mutex

    14/54 BME-MIT 2011, Minden jog fenntartva 14. lap

    Kzs erforrsok vdelme

    Mik frhetnek hozz a kzs erforrsokhoz?o ISR (Interrupt service routine).o Feladat (folyamat vagy szl).o DMA.

    Lehetsgek:o IT tiltsa s engedlyezse. (specilis esetben lehetsges).o temez tiltsa s engedlyezse. (specilis esetben

    lehetsges).o Locking (erforrs specifikus lefoglals majd felolds).

    Ms, kutatsi fzisban lv megoldsok:

    o Software/hardware transactional memory (STM/HTM).o Software-isolated processes (MS Singularity).

    A lock megolds sokak szerint nem j, de jobb mint brmieddig hasznlt megolds, vagyis ez az elfogadottmegolds. Ismers helyzet

    Democracy is the worstform of Government exceptall those other forms that

    have been tried from time totime.

    Sir Winston Churchill

  • 8/3/2019 Slides 12 Mutex

    15/54 BME-MIT 2011, Minden jog fenntartva 15. lap

    jrahvhatsg (reentrancy) A kzs erforrs problmjnak egyfajta kiterjesztett esete egy

    fggvnyen/objektumon bell is fellphet, amennyiben ezt a

    fggvnyt (metdust) egyszerre tbben is meghvhatjk. Hogyan fordulhat ez el?

    o Ugyanazt a fggvnyt hvjuk egy taszkbl is s egy megszakts rutinbl is.

    o Az temezs preemptv, s ugyanazt a fggvnyt hvjuk kt taszkbl is.

    Az jrahvhatsg felttelei:o Hossz lista...

    o Azt kell vizsglni, hogy az jrahvott fggvny/metdusban hasznlt vltozk,perifrik, fggvnyek/metdusok, stb. kzs erforrsnak minslnek, sha azok, akkor azokat kzs erforrsknt megfelelen kezeli-e a fggvny?

    Pldk:o PC BIOS hvsok nem jrahvhatak!

    o Preemptv opercis rendszer API fggvnyei mindig jrahvhatak.

    o Egyb programknyvtrak?

  • 8/3/2019 Slides 12 Mutex

    16/54

    BME-MIT 2011, Minden jog fenntartva 16. lap

    Vrakozs kzs erforrsra

    A ms feladat ltal hasznlt kzs erforrsra is esemnyrevrakozik llapotban vrakozik a feladat.

    Az OS nyjt a kzs erforrsok vdelmre szolgltatsokat.

    Futsra ksz(Ready) Fut(Run)

    Esemnyrevrakozik(Waiting)

    Ltrejn Befejezdik

    CPU-t kap

    Lemond vagyelveszik a CPU-t

    Rendszerhvseredmnyekppenvrakoz llapotbakerl

    A vrt esemnybekvetkezik

  • 8/3/2019 Slides 12 Mutex

    17/54

    BME-MIT 2011, Minden jog fenntartva 17. lap

    Lock-ols s az temez, szabad erforrs

    A kzs erforrst hasznlni kvn feladat meg

    prblja szerezni az erforrst egy OS hvssal.o Az erforrs szabad (nem hasznlt):

    Az erforrst az OS lefoglalja a feladat szmra.

    Visszatr a feladathoz, vagyis az fut vagy futsra kszllapotba kerl (az OS-tl fgg), majd CPU megkapsa utn ahvsbl visszatrve fut tovbb.

    o Hasznlja az erforrst.

    o A hasznlat vgn felszabadtja azt egy OS hvssal. Lsd kvetkez flia.

  • 8/3/2019 Slides 12 Mutex

    18/54

    BME-MIT 2011, Minden jog fenntartva 18. lap

    Lock-ols s az temez, foglalt erforrs

    A kzs erforrst hasznlni kvn feladat meg

    prblja szerezni az erforrst egy OS hvssal.o Az erforrs foglalt (hasznlatban van):

    A feladat az adott erforrsra vr feladatok vrakozsisorba, esemnyre vr llapotba kerl.

    Fut az temez a kvetkez fut feladat kivlasztsra.o Ha egy msik feladat ksbb felszabadtja az

    erforrst: Fut ismt az temez, s kivlasztja az erforrsra vr

    feladatok kzl valamelyiket (pl. FIFO esetn a legrgebbenvrakozt).

    Annak szmra lefoglalja az erforrst.

    Majd futsra ksz llapotba helyezi azt.

  • 8/3/2019 Slides 12 Mutex

    19/54

    BME-MIT 2011, Minden jog fenntartva 19. lap

    Rszletessg

    A lock-ols rszletessge (Fine or course grained locking)

    o A klcsns kizrs megvalstsa erforrs hasznlattal jr(CPU), minimalizlni kell a hasznlatt.

    Tl sok rendszerhvs jelents overhead-del jr.

    o Viszont a tl nagy egysgekben vgzett klcsns kizrs is

    erforrs pazarlssal jr. A rendszerben nehezebb futsra ksz rszfeladatot tallni.

    o Pl. Perifria egy buszon (flvezet hmr I2C buszon) Mkds: mrs indts, 200ms mrsi id, mrsi eredmny kiolvassa.

    A teljes mrs idejre megvalstott klcsns kizrs a buszra: Hosszideig nem rhet el a busz ms clra sem.

    A mrs indtsra s a mrsi eredmny kiolvassra kln-klnvalstsuk meg a klcsns kizrst a buszon: Sok OS hvs, mivel aklcsns kizrs OS hvst jelent.

  • 8/3/2019 Slides 12 Mutex

    20/54

    BME-MIT 2011, Minden jog fenntartva 20. lap

    Hibk 1.

    Versenyhelyzet (race condition):

    o A prhuzamos program lefutsa sorn a kzs erforrshelytelen hasznlata miatt a kzs erforrs vagy az azthasznl program nem megfelel (hibs) llapotba kerl.

    o Ilyen volt a korbbi sszetett adattpusos plda.

    o A hibs llapot rszletei ersen fggenek azt hasznlszekvencilis rszfeladatok lefutsi sorrendjtl.

    Kiheztets (starvation):

    o Ha a prhuzamos rendszer hibs mkdse miatt egy feladat

    soha nem jut hozz a mkdshez szksges erforrsokhoz,akkor ki van heztetve (nem tud futni).

    o Nem csak a CPU-ra, de ms kzs erforrsokra is felmerlhet.

  • 8/3/2019 Slides 12 Mutex

    21/54

    BME-MIT 2011, Minden jog fenntartva 21. lap

    Hibk 2.

    Holtpont:

    oA kzs erforrsok hibs belltsa vagy hasznlatamiatt a rendszerben a rszfeladatok egymsravrnak.

    oNincs futsra ksz folyamat.

    oNem jhet ltre bels esemny.oA rendszer nem tud elrelpni.

    Livelock:o Plda: Kt kedves ember sszetallkozik az ajtban.o Tbbnyire a hibs holtpont felolds eredmnye.oA rendszer folyamatosan dolgozik, de nem lp elre.

  • 8/3/2019 Slides 12 Mutex

    22/54

    BME-MIT 2011, Minden jog fenntartva 22. lap

    Hibk 3. Priorits inverzi

    Priorits inverzi (priority inversion):

    o Prioritsos temezkben fordulhat el, de az erforrshasznlattal is sszefgg.

    o A legegyszerbb esetnek elfordulshoz kell:

    3 feladat, klnbz statikus prioritssal,

    Egy kzs erforrs, amelyet a 3 feladat kzl a legmagasabb s alegalacsonyabb is hasznlni kvn.

    A kzepes priorits feladatnak CPU intenzvnek kell lennie.

    o Kedvezbb esetben csak a rendszer teljestmnye cskkent, avlaszidk nnek. Vals idej rendszer????

    o Rosszabb esetben kiheztets, vagy akr holtpont is lehet apriorits inverzi eredmnye.

    o Klasszikus plda: Mars Pathfinder 1997...

  • 8/3/2019 Slides 12 Mutex

    23/54

    BME-MIT 2011, Minden jog fenntartva 23. lap

    Priorits inverzi plda 1.

    Lpsek sorozata:o

    Task3 magas priorits feladat valamilyen esemnyre vr (denem A erforrs felszabadulsra). Pl. B erforrsra

    Task3

    Task2

    Task1

    Resource A Resource B

    T3 vr B-re

    Task fut

  • 8/3/2019 Slides 12 Mutex

    24/54

    BME-MIT 2011, Minden jog fenntartva 24. lap

    Priorits inverzi plda 2.

    Lpsek sorozata:o

    Task1 alacsony priorits feladat fut, s megszerzi az Aerforrst, s azt hasznlva fut tovbb.

    Task3

    Task2

    Task1

    Resource A Resource B

    T3 vr B-reT1 megkapja B-t

    ld

  • 8/3/2019 Slides 12 Mutex

    25/54

    BME-MIT 2011, Minden jog fenntartva 25. lap

    Priorits inverzi plda 3.

    Lpsek sorozata:o

    Task3 magas priorits feladat ltal vrt esemny megrkezik (Bfelszabadul), futni kezd (preemptv temezs).

    Task3

    Task2

    Task1

    Resource A Resource B

    T3 felszabadulT1 megkapja B-t

    ld

  • 8/3/2019 Slides 12 Mutex

    26/54

    BME-MIT 2011, Minden jog fenntartva 26. lap

    Priorits inverzi plda 4.

    Lpsek sorozata:o

    Task3 fut, majd hasznlni kvnja az A erforrst. Mivel A foglalt,ezrt vrakozni kezd (lnyegben T1-re vr).

    Task3

    Task2

    Task1

    Resource A Resource B

    T1 megkapja B-t T3 A-ra vr

    i i i i ld

  • 8/3/2019 Slides 12 Mutex

    27/54

    BME-MIT 2011, Minden jog fenntartva 27. lap

    Priorits inverzi plda 5.

    Lpsek sorozata:o

    Task1 ismt tud futni (nincs magasabb priorits feladat),hasznlja A-t.

    Task3

    Task2

    Task1

    Resource A Resource B

    T1 megkapja B-t T3 A-ra vr

    P i i i i ld 6

  • 8/3/2019 Slides 12 Mutex

    28/54

    BME-MIT 2011, Minden jog fenntartva 28. lap

    Priorits inverzi plda 6.

    Lpsek sorozata:o

    Task2 kzepes priorits feladat futsra ksz llapotba kerl, smivel magasabb priorits, fut llapotba kerl, s hossz (akrvgtelen) ideig CPU intenzv feladatokat hajt vgre (I/O burstnlkl).

    Task3

    Task2

    Task1

    Resource A Resource B

    T1 megkapja B-t T3 A-ra vr

    P i i i i ld 7

  • 8/3/2019 Slides 12 Mutex

    29/54

    BME-MIT 2011, Minden jog fenntartva 29. lap

    Priorits inverzi plda 7.

    Eredmny:

    o Task3 nem tud tovbblpni, hiszen esemnyre vr (A erforrsfelszabadulsra).

    o Task1 nem tud tovbblpni, hiszen CPU-ra vr.

    o Task2 (TaskX) nem foglalkozik az A erforrssal, s amg

    intenzven hasznlja/hasznljk a CPU-t: Task1 nem tudja befejezni a munkjt s felszabadtani az A erforrst.

    Amg A erforrs nem szabadul fel, Task3 nem tud futni, s vgrehajtania magas priorits feladatt.

    Task3 magas priorits feladatot alacsonyabb prioritsaknem hagynak futni..., ,,

    Ez egy egyszer eset, ennl sszetettebb mdon iselllhat ez a helyzet!

    M ld

  • 8/3/2019 Slides 12 Mutex

    30/54

    BME-MIT 2011, Minden jog fenntartva 30. lap

    Megolds

    Priorits rkls (Priority inheritance, PI):o

    Az alacsony priorits feladat megrkli az ltala klcsnskizrssal feltartott feladat prioritst a kritikus szakaszbl valkilpsig.

    o Csak rszben oldja meg a problmt.

    Priorits plafon (Priority ceiling, PC):o Majdnem ugyan az, de az adott kzs erforrst hasznl

    legnagyobb priorits feladat prioritst rkli meg (ami lehetnagyobb mint az ppen feltartott feladat).

    o Az adott erforrst mskor hasznl tbbi feladat sem tud futni

    (ha esetleg azok is CPU intenzvv vlnak).o Az alacsony priorits feladat akadlyoztats nlkl le tud futni.

    Modern begyazott OS-ekben vlaszthatak...o None, PI, PC (ha preemptv temezt vlasztunk)

    M ld

  • 8/3/2019 Slides 12 Mutex

    31/54

    BME-MIT 2011, Minden jog fenntartva 31. lap

    Megolds Priorits rkls (Priority inheritance):

    o Az alacsony priorits rszfeladat megrkli az ltala klcsnskizrssal feltartott rszfeladat prioritst a kritikus szakaszblval kilpsig.

    o Csak rszben oldja meg a problmt.

    Priorits plafon (Priority ceiling):

    o Majdnem ugyan az, de az adott kzs erforrst hasznllegnagyobb priorits rszfeladat prioritst rkli meg (amilehet nagyobb mint az ppen feltartott rszfeladat).

    o Az adott erforrst mskor hasznl tbbi rszfeladat sem tudfutni (ha esetleg azok is CPU intenzvv vlnak).

    o Az alacsony priorits rszfeladat akadlyoztats nlkl le tudfutni.

    Modern begyazott OS-ekben vlaszthatak...o None, PI, PC (ha preemptv temezt vlasztunk)

    gy javtottk meg a Mars Pathfinder-t is. Lnyegben a prioritsrklst belltottk , s jrafordtottk az OS-t, aztn letltttk apatch-et (diff) MARS-on lv HW-ba...

    Mirt nem hasznltk egybl? : Nem tudtk hogy van ilyen jelensg, a

    VxWorks-ben meg nem ez volt a default (overhead-je nagyobb).Mirt nem fedeztk fel tesztels kzben? : Mert soha nem teszteltekvalshoz hasonl terhelsi krlmnyek kztt. A teljes adatgyjts

    soha nem ment a fldn, csak rszrendszerek (gratullok).

    P i it I i tbl

  • 8/3/2019 Slides 12 Mutex

    32/54

    BME-MIT 2011, Minden jog fenntartva 32. lap

    Priorits Inverzi ms szempontbl

    Sokak szerint a priorits inverzi alapveten egy

    rendszertervezsi hiba eredmnye:o Nem specilis protokollokkal (PI, PC) kell megoldani,

    hanem jl meg kell tervezni a rendszert (prioritsokkiosztsa, klcsns kizrs, klcsns kizrsidtartama, stb.).

    o "Against Priority Inheritance" by Victor Yodaiken

    A RTLinux kitallja s f fejlesztje

    http://www.linuxdevices.com/articles/AT7168794919.html

    H l k l k

  • 8/3/2019 Slides 12 Mutex

    33/54

    BME-MIT 2011, Minden jog fenntartva 33. lap

    Hogyan lock-olunk

    Passzv vrakozs az OS szolgltatsainak

    felhasznlsval. Aktv vrakozs.

    L k f l ld k

  • 8/3/2019 Slides 12 Mutex

    34/54

    BME-MIT 2011, Minden jog fenntartva 34. lap

    Lock feloldsra vrakozs passzvan Sleeplock, blocking call, etc.

    o temez ltal karbantartott vrakozsi sorok (beszltnk rla).

    Ha az erforrs nem lock-olt.

    Megkapja az erforrst a feladat lezrva s fut tovbb.

    Ha az erforrs lock-olt.

    A feladat megy az erforrshoz tartoz vrakozsi sorba, a futsra ksz

    feladatok kzl egy fut llapotba kerl. Ha az erforrs felszabadul, akkor az erforrshoz tartoz sor elejn ll

    megkapja az erforrst lezrva, s futsra ksz llapotba kerl.

    o Erforrs-takarkos, de van overhead-je. OS fut, temezs s kontextus vlts.

    o Utna csak futsra ksz sorba kerl a rszfeladat, pontos idztsnehezen megoldhat (a futs kezdete rdekes). Als korltot ad.

    o A processzor aludhat, ha nincs feladat: Aztn HW IT-re felbred (bels esemny nem trtnhet).

    L k f l ld k kt

  • 8/3/2019 Slides 12 Mutex

    35/54

    BME-MIT 2011, Minden jog fenntartva 35. lap

    Lock feloldsra vrakozs aktvan Livelock, spinlock, busy wait, spinning:

    o Aktv vrakozs az erforrs felszabadulsra s megszerzsre

    (CPU erforrs pazarls). Ha aktvan vr egy rszfeladat, akkor a tbbi rszfeladat hogyan tudja

    elidzni a vrakozst megszntet vltozst (esemnyt) a rendszerben?

    Nem tudnak futni, az aktvan vrakoz fut!

    Kls HW megszakts s/vagy tbb CPU esetn ez nem problma.o Fogyaszts is n, hiszen a CPU folyamatosan fut, nem tud aludni

    (ha nincs ppen feladat).

    o Compiler optimalizci kiszedheti/eltvolthatja a kdot.

    o Fgg a CPU sebessgtl (ha adott idt akarunk vrni): A kd hordozhatsga rossz. Az temez befolysolja, als korlt csak.

    Mrjk meg : Linux Bogomips : "bogus" MIPS.

    Mi van, ha a CPU vltoztatja az rajelt?

    Akk h k k?

  • 8/3/2019 Slides 12 Mutex

    36/54

    BME-MIT 2011, Minden jog fenntartva 36. lap

    Akkor hogyan vrakozzunk? Rvididej vrakozshoz a spinlock elkerlhetetlen:

    o Garantltan rvid idejklcsns kizrsi problmk kezelsre.

    o Perifria kezels sorn, kb. n* 1s vagy az alatti idtartam idztsre. HW Timer is hasznlhat adott idtartam vrakozsra, br

    tbbnyire limitlt szm Timer perifria van a MCU-ban.o IT overhead megjelenik.

    o Az IT ksleltetsnl csak legalbb egy nagysgrenddel nagyobb vrakozs

    indokolhat az overhead miatt.o Ez kombinlhat az aktv vrakozssal (kevsb aktv vrakozs).

    Nehz j kompromisszumot tallni. Sleeplock (temez) Dediklt Timer IT spinlock ?

    A pontos hatrok sok szemponttl fggenek.

    Az temez nem hasznl a feladatok temezse sorn spinlockjelleg hvsokat (egyrtelmen sleeplock alap).

    Maga az OS kernel viszont gyakran hasznlhat (Pl. SMP Linux).

    Rokon problma Adott idej vrakozs

  • 8/3/2019 Slides 12 Mutex

    37/54

    BME-MIT 2011, Minden jog fenntartva 37. lap

    Rokon problma: Adott idej vrakozs

    Milyen pontos az OS SW timer?o pl. delay(N), ahol N a vrakozs idtartama ms vagy s-ban.o Hvs s futsra ksz llapotba kerls kztt eltelt idnek a

    fels korltjt adja meg tbbnyire. Ezek utn az temeztl fgg a tnyleges vrakozs ideje. Ebben az

    rtelemben als korlt.

    o Az OS rendszerra ratsnek a felbontsval dolgozik.o Plda: 10 ms-es rats, 40 ms vrakozs

    Timerats

    delay (40)

    3.9 ts

    taskDelay (40)

    3.1 ts

    Rokon problma: Idmrs

  • 8/3/2019 Slides 12 Mutex

    38/54

    BME-MIT 2011, Minden jog fenntartva 38. lap

    Rokon problma: Idmrs

    Ha az OS timer felbontsa nem elg (1-10-20ms).

    Idintervallum mrs kt esemny kztt:o Szabadon fut Timer perifria rtknek lekrdezse, s

    klnbsg kpzs. Felbonts programozhat.

    Tlcsorduls esetn IT.

    o Timestamp counter (pl. Pentium Timestamp Counter): A nagyobb processzorokon megtallhat.

    Adott felbonts (CPUclk, vagy CPUclk/2n).

    Pl. 64-bit regiszter az x86-os CPU-kon a Pentium csald megjelense ta.

    Tlcsorduls nem kerl jelzsre, kis valsznsggel trtnik meg a nagy

    bitszm miatt (4 GHz CPU esetn 53375.99 nap, 145.8 szkv)

    o Esemnyek kztti id, stb. mrhet vele.

    o Idmrs tbbprocesszoros/elosztott rendszerben? Ne menjnk bele, kln trgy lenne (nyitott kutatsi tma)

    Eszkzk RAM/PRAM modell esetn

  • 8/3/2019 Slides 12 Mutex

    39/54

    BME-MIT 2011, Minden jog fenntartva 39. lap

    Eszkzk RAM/PRAM modell esetn

    Klcsns kizrs megoldsra:

    o Lock bit,o Szemafor,

    o Kritikus szakasz objektum,

    o Mutex,

    o Stb. (minden OS-ben megvan a megolds).

    Minden OS-ban hasonl eszkzket fogunk tallni.

    o Persze kicsit ms lesz a nevk s mkdsk, lesznek klnbzverzik, stb., a dokumentci olvassa nem kerlhet el

    Tipikus hibk kivdsre s a klcsns kizrsi problmamegoldsra:

    o Monitor.

    Lock bit

  • 8/3/2019 Slides 12 Mutex

    40/54

    BME-MIT 2011, Minden jog fenntartva 40. lap

    Lock bit Legegyszerbb forma.

    o A vdend erforrshoz tartozik egy logikai vltoz (Boolean).

    Lock bit jelentse:o Lock bit FALSE nem hasznlt az erforrs.o Lock bit TRUE hasznlt az erforrs.

    Belps mvelet:o Tesztels, ha

    Lock bit == FALSE Lock bit = TRUE Megynk tovbb (belpnk a kritikus szakaszba)

    Lock bit == TRUE

    Aktv vrakozs, amg nem lesz FALSE Kilps mvelet:

    o Lock bit = FALSE

    Atomi utastsok

  • 8/3/2019 Slides 12 Mutex

    41/54

    BME-MIT 2011, Minden jog fenntartva 41. lap

    Atomi utastsok

    A lock bit alkalmazsa sorn egy slyos hiba jelenhet

    meg:o IT a lock bit tesztelse sorn:

    A kvetkez utasts mr nem fog lefutni (az ISR-re kerl a vezrls),vagyis a kritikus szakaszba lpst nem jelezzk, pedig mr abbanvagyunk.

    Az IT-ben vagy az utna fut ms rszfeladatokban az erforrsszabadnak ltszik.

    A vdett erforrs inkonzisztens llapotba kerlhet.

    Megolds:

    o IT tilts a teszt eltt, IT engedlyezs a bellts utn (egy CPUesetn).

    o Test and Set (TAS), vagy hasonl atomikus gpi utasts.

    Szemafor (Semaphore)

  • 8/3/2019 Slides 12 Mutex

    42/54

    BME-MIT 2011, Minden jog fenntartva 42. lap

    Szemafor (Semaphore)

    Az els binris

    szemaforklcsns kizrsi

    problmkmegoldsra

    Szemafor

  • 8/3/2019 Slides 12 Mutex

    43/54

    BME-MIT 2011, Minden jog fenntartva 43. lap

    Szemafor (EWD tlete, 60-as vek) Binris s counter tpus szemafor

    o Binris: egy feladat a kritikus szakaszban.o Counter tpus: tbb feladat a kritikus szakaszban, vagy N

    darabos erforrs kszletbl M darab lefoglalsa.

    OS hvs, a binris szemafor egy magas szint lock bit.o Implementcitl fggen:

    Aktvan vrhat (ma mr nem jellemz). Vrakoz llapotba helyezi a rszfeladatot.

    E.W. Dijkstra (EWD 1036?) tallta ki a 60-as vek kzepn. Kt mvelet rtelmezett rajta:

    o Belps: P(), Wait(), Pend(), o Kilps: V(), Signal(), Post(), o Sokfle elnevezs, a P()-rl vita van, hogy mit is jelent, a V() a

    holland kilps szbl ered.

    Pldakd

  • 8/3/2019 Slides 12 Mutex

    44/54

    BME-MIT 2011, Minden jog fenntartva 44. lap

    Pldakd...P() {

    while (value

  • 8/3/2019 Slides 12 Mutex

    45/54

    BME-MIT 2011, Minden jog fenntartva 45. lap

    Szemafor (EWD tlete, 60-as vek) A counter tpus esetn a belps s kilps lehet egy

    szmmal paramterezett (hny egysg lp be vagy ki).

    Ha 1-nl tbb erforrsra van szksgnk, akkor azokatvagy egyben mind megkapjuk, vagy a tredkeket nemfoglaljuk le (ms feladatnak szksge lehet rjuk).o Ezrt paramterezhet ebben az esetben a belps s a kilps

    a szksges erforrsok szmval.o Az egyenknt (pl. for ciklussal lefoglalva ket) N darab erforrs

    lefoglalsa knnyen versenyhelyzethez, vagy akr holtponthozvezethet.

    Kritikus szakasz objektum s Mutex

  • 8/3/2019 Slides 12 Mutex

    46/54

    BME-MIT 2011, Minden jog fenntartva 46. lap

    Kritikus szakasz objektum s Mutex

    Lnyegben binris szemafor szeren mkdnek.

    Kritikus szakasz objektum.o Hasznlata:

    Ltre kell hozni a CriticalSection objektumot.

    Enter() metdussal lpnk be a kritikus szakaszba.

    Blokkol (sleeplock), ha mr valaki benne van a kritikus szakaszban. Leave() metdussal lpnk ki a kritikus szakaszbl.

    Ha szksges a CriticalSection objektum megszntethet.

    Mutex: Mutual Exclusion rvidtse.o Hasznlata:

    Acquire()/WaitOne() fggvny vagy metdus.

    Release() fggvny vagy metdus.

    Mirt lock olunk mg?

  • 8/3/2019 Slides 12 Mutex

    47/54

    BME-MIT 2011, Minden jog fenntartva 47. lap

    Mirt lock-olunk mg? Klcsns kizrst lezrtuk. Rszfeladatok kztti szinkronizci visszavezetse

    klcsns kizrsra:o Nincs vdend objektum igazbl, rszfeladatok

    egyttmkdse a cl.

    Pl. Randev (rendezvous).o Kt vagy tbb feladat sszehangolt vgrehajtsao Pl. a Coroutine-nl megvalstott termel-fogyaszt problma

    megoldhat 2 binris szemaforral is.o Ebben az esetben az opercis rendszer ltal nyjtott

    szolgltatsokat hasznlunk, s a feladatok passzvan vrnak

    egymsra.o A szemaforok alapesetben foglaltknt vannak inicializlva ebben

    az esetben.

    Memrin keresztl trtn kommunikci.o A kommunikcira hasznlt memria kzs erforrs.

    Ktoldal randev binris szemaforral

  • 8/3/2019 Slides 12 Mutex

    48/54

    BME-MIT 2011, Minden jog fenntartva 48. lap

    Ktoldal randev binris szemaforralKtoldal randev szemaforral, B s R foglaltknt inicializlva

    (bilateral rendezvous)

    .

    .

    .P (sem_B)

    Task 1 Task 2 ......

    V (sem_B)..

    P (sem_R)

    P (sem_B)....

    .V (sem_R)

    .

    .

    .

    P (sem_R)...

    Kommunikci: Vdett memriaterlet

  • 8/3/2019 Slides 12 Mutex

    49/54

    BME-MIT 2011, Minden jog fenntartva 49. lap

    Kommunikci: Vdett memriaterlet

    Szlak kztti kommunikci sorn:

    o Folyamatok gy nem tudnak kommuniklni (MMU).o A UNIX SystemV shared memory nem valdi osztott

    memria, valjban OS szolgltats! Folyamatok kztti kommunikcit tesz lehetv.

    Tmb, Struktra, Objektum. Egy vagy ktirny kommunikci

    o Egyirny: A kld rja, a vev/vevk kiolvassk belle.

    o Ktirny: Minden fl rja s olvassa. A klcsns kizrst lock-bit, szemafor, mutex,

    kritikus szakasz objektum, stb. oldja meg.

    Lock-ols sorn elkvetett tipikus hibk

  • 8/3/2019 Slides 12 Mutex

    50/54

    BME-MIT 2011, Minden jog fenntartva 50. lap

    Lock-ols sorn elkvetett tipikus hibk

    Belps/Kilps elmaradsa.

    Tbbszri be- vagy kilps. Ms erforrs lefoglalsa.

    Az erforrs indokolatlanul hosszan trtn

    lezrsa.oMinimlis idre kell trekedni.

    Priorits inverzi.

    o Foglalkoztunk vele.

    Deadlock s livelock.

    o Kln foglalkozunk vele.

    Monitor (hibk elkerlsre)

  • 8/3/2019 Slides 12 Mutex

    51/54

    BME-MIT 2011, Minden jog fenntartva 51. lap

    Monitor (hibk elkerlsre)

    Lokalizljuk a lock-olssal kapcsolatos feladatokata kzs erforrst krlvev API-valo A lock-ols nem sztszrva trtnik a programban,

    hanem egyetlen, a kzs erforrshoz szorosan tartozprogramrszletben.

    o A megvalsts lehet automatikus, pldul nyelvi

    szinten (pl. JAVA, C#). A compiler valstja meg a klcsns kizrst biztost

    konstrukcikat (pl. szemafor vagy mutex tnylegesalkalmazsval).

    o

    Kzzel is kszthetnk hasonl konstrukcit, pl. egyvdett objektumot hozhatunk ltre, amely a nyilvnosmetdusaiban elvgzi a lock-olst, s elrejti a kzserforrst.

    Monitor fejldse

  • 8/3/2019 Slides 12 Mutex

    52/54

    BME-MIT 2011, Minden jog fenntartva 52. lap

    Monitor fejldse

    Hoare s Mesa szemantika

    (mkds/jelents).oCharles Antony Richard Hoare.

    tlet s rszletes elmleti alapokkidolgozsa.

    oMesa programozsi nyelv.

    Xerox PARC (Ethernet, grafikus fellet,lzerprinter, stb.).

    Hoare s Mesa szemantika

  • 8/3/2019 Slides 12 Mutex

    53/54

    BME-MIT 2011, Minden jog fenntartva 53. lap

    Hoare s Mesa szemantika

    Hoare szemantika:o Azonnal az erforrst megszerz rszfeladat fut.

    Erforrs ignyes s nehz megvalstani.

    Nem kompatibilis a preemptv temezkkel.

    Mesa szematika:o A futsra ksz rszfeladatok kz kerl, s ksbb az temez

    futtatja.o Vannak vele gondok, de azok megoldhatak (most nem

    megynk bele).

    o "notifyAll" vagy "broadcast" zenetek kldse is lehetsges.

    Minden adott esemnyre vr futsra ksz llapotba kerl.

    JAVA plda

  • 8/3/2019 Slides 12 Mutex

    54/54

    JAVA plda A synchronized blokk

    synchronized (object) {

    // az adott object-re biztostva van

    // a klcsns kizrs a blokkon bell

    }

    A synchronized kulcssz

    synchronized void myMethod() {

    // A metdushoz tartoz objektumra// biztost klcsns kizrst

    }

    C# esetn : lock block hasonl