Procházet otázky :: SZZ na MFF UK

#

- Hlavní strana
- Okruhy
- Projít
- Stáhnout
- Co je potřeba
- Chci přispět
- Kredity

Hledat:

## Prohlížení státnicových textů

### Pasivní čekání

Vlastnosti: proces je ve stavu blokován, vhodné pro delší doby čekání, spotřebovává prostředky OS, pomalejší.

Postup používající Sleep/Wakeup (implementovány OS, atomické operace - sleep uspí volající proces, wakeup probudí udaný proces) nefunguje (viď Problém producent/konzument).

Semafory... Sémantika:

    Down(Semaphore s) {
    wait until s > 0, then s := s-1;
    /* must be atomic once s > 0 is detected */
    }

(pokud je čítač 0, sníží čítač o 1 a pokračuje dál; pokud je čítač 0, operace DOWN se zablokuje a proces je přidán do fronty čekající na tomto semaforu)

    Up(Semaphore s) {
    s := s+1;   /* must be atomic */
    }

(pokud je fronta neprázdná, vybere libovolný proces a ten probudí za DOWN; jinak zvětší čítač o 1)

    Init(Semaphore s, Integer v) {
    s := v;
    }

Je možné používať aj sémantiku, kde sa hodnota vždy zníži/zvýši o 1 (a je možné sa teda dostať do záporných hodnôt semafóru)... Špeciálny (binárny) typ semaforu, kde sú povolené len hodnoty 0 a 1 (v Up sa miesto volá ) sa nazýva mutex a používa sa na riadenie prístupu k jednej premennej.

Monitory

Implementovány překladačem, lze si představit jako třídu C++ (všechny proměnné privátní, funkce mohou být i veřejné), vzájemné vyloučení v jedné instanci (zajištěno synchronizací na vstupu a výstupu do/z veřejných funkcí, synchronizace implementována blokovacím primitivem OS). ???TODO

Zprávy

Operace SEND a RECEIVE, zablokování odesílatele/příjemce, adresace proces/mailbox, rendez-vous...

RWL - read-write lock, bariéry...

Ekvivalence primitiv - pomocí jednoho blokovacího primitiva lze implementovat jiné blokovací primitivum.

Rozdíly mezi platformami: Windows - jednotné funkce pro pasivní čekání, čekání na více primitiv, timeouty. Unix - OS implementuje semafor, knihovna pthread.