Cvicenie 3. Koordinacia procesov
- Ake su podmienky uviaznutia (3 nutne + 1 postacujuca).
- Ignorovanie.
- Detekcia a vyvedenie -- priklad.
- Prevencia. 3 nepriame, 1 priama
- Vyhybanie sa. (bankarov alg.)
- Ilustracia problemu obedujucich filozofov.Chandry-Misra algoritmus pre obedujúcich filozofov wikipedia, Úvod do paralelného programovania (strana 115)
- Ukazky nastavovania priority a dosledky v Linux
-
DU3a: ( 2 body)
Upravte Chandry-Misra algoritmus tak, aby umoznil filozofovi rozmysliet si to, ci bude jest. (Ekvivalent: cakam, kym sa mi vytlaci subor na tlciarni, omrzi ma to, tak kliknem cancel. Nic sa nevytlaci. ) Opiste, ako vas algoritmus funguje. -
DU3b: Ukazka nie-absolutnosti = relativity priorit (3 body)
Vyrobte tabulku pomerov, v ktorom budu vyuzivat CPU cisto vypoctove procesy pre dvojice priorit z {-19, -10, 0, 10, 19} za predpokladu ze na systeme bezia (takmer vyhradne) len tieto dva procesy. Popiste, ako ste vy urobili tieto merania a popiste, ako ste dosiahli co najlepsiu presnost.
Uzitocnym prikazom pre taketo ulohy je prikaz time, ktory po skonceni ulohy vypise statistiky o case, ktory vyuzivala; pricom v tomto pripade je dolezity realny cas. Na testovanie mozte pouzit lubovolnu aplikaciu, ale da sa uzitcne vyuzit pocitanie s kalkulackou bc, napriklad prikaz
echo "scale=1000;4*a(1)" | bc -l
vypocita pi s presnostou na 1000 miest.
dalsim uzitocnym prikazom je
ps -o command,pcpu -C MENO
ktory vypise vyuzitie procesora procesom s menom MENO pre jeho cely doterajsi beh.
Ako meno procesu treba zadat: bc
Spustenie prikazu s prioritou: nice -n Priorita Prikaz
UPDATE:Ak mate viacprocesorovy stroj, vyuzite postupnost prikazov:
taskset -c 1 nice -n Priorita Prikaz
Na viacprocesorovom stroji sa totiz pravdepodobne stane, ze jedna uloha bude bezat na jednom procesore a druha na druhom. Hoci maju rozne priority, neboli by brane do uvahy -- v nasom jednoduchom vypocte jeden bc proces nevie vyuzit viac ako jeden procesor a teda druhy ostava volny. Kedze je volny, bude vyuzity pre nizkoprioritnu ulohu. Prikaz taskset -c 1 zabezpeci, ze nasledovny prikaz bude spustany na procesore cislo 1.
zmena priority uz beziaceho procesu (s pidom PID): renice -n NovaPriorita PID
Upozornenie: Na nastavenie vysokych priorit -10,-19 musite mat rootovske pravomoci, cize byt spravcovia systemu. Rovnako potrebujete rootovske pravomoci na zvysovanie priority uz beziaceho procesu (cize znizovanie toho bulharskeho cisla).
Tip2: Prikazy, ktorym budete merat ich "vykonnost", spustajte naraz pomocou operatora &, cize: prikaz1 & prikaz2
Ulohy posielajte mailom so subjectom OSDU3 ako prilohy (napr. pdf, odt, txt, ...) . Termin: 10.4.2011 do 13:00.