3.6. Komunikace procesu

3.6.1. Zakladni struktura

    1. Prima nebo neprima komunikace

    2. Symetricka nebo nesymetricka komunikace

    3. Automaticke nebo explicitni bufferovani

    4. Posilani kopie nebo posilani odkazu

    5. Zpravy pevne nebo promenne delky

3.6.2. Prima komunikace

	repeat

{vytvor dalsi polozku do promenne nova_hodnota}

send(prijemce, nova_hodnota)

until false

	repeat

receive (producent, prijata_hodnota)

{zpracuj polozku v promenne prijata_hodnota}

until false

3.6.3. Neprima komunikace

    1. Vytvoreni nove schranky;

    2. Poslani a prijeti zpravy prostrednictvim schranky;

    3. zruseni schranky.

3.6.4. Buffery

    1. Fronta s nulovou kapacitou: Maximalni delka fronty je 0; ve spojeni nemohou tedy byt zadne cekajici zpravy v zaloze. V tomto pripade musi odesilatel cekat, dokud prijemce zpravu neprevezme. Oba procesy musi byt synchronizovany pro prenos zprav. Tato synchronizace se nazyva randevous.

    2. Fronta s omezenou kapacitou: Fronta ma konecnou delku n; maximalne n zprav muze byt do ni vlozeno. Jestlize fronta v okamziku zaslani nove zpravy neni plna, zprava je do ni zarazena (je do fronty nakopirovana, nebo je do fronty zarazen ukazatel na zpravu) a odesilatel muze pokracovat v praci bez cekani. Fronta ma ovsem konecnou delku a je-li plna, musi odesilatel cekat s dalsi zpravou nez se ve fronte uvolni misto.

    3. Fronta s neomezenou kapacitou: Fronta ma teoreticky neomezenou delku a muze v ni cekat teoreticky neomezeny pocet zprav. Odesilatel teoreticky nikdy neceka.
	send(Q,zprava);

receive(Q,zprava);

	receive(P,zprava);

send(P,"potvrzeni");

    1. Proces, ktery produkuje zpravy nikdy neceka. Tzn. pokud prijemce neprijima, fronta je plna a producent vyslal dalsi zpravu, je prvni zprava ve fronte znicena. (problematicke naprogramovani, nutna presna synchronizace)

    2. Proces, ktery vyslal zpravu ceka dokud nedostane odpoved. Nektere operacni systemy (napr. Thoth) maji tento system zprav a maji implmentovanu funkci reply(P,zprava), kterou provadi potvrzeni o prijeti. Rozdil mezi funkcemi send a reply je ten, ze po funkci send je proces blokovan dokud nedostane reply, zatimco po provedeni funkce reply pokracuje ve vypoctu.

3.6.5. Vyjimecne situace

Proces byl ukoncen

    1. Proces P ceka na zpravu od procesu Q, ktery byl zrusen. Pokud by nebyly uplatneny prostredky osetreni vyjimecne situace, proces P by byl blokovan naveky. OS musi v tomto pripade proces P ukoncit, nebo mu sdelit, ze na zpravu od procesu Q uz cekat nemusi.

    2. Proces P odeslal zpravu procesu Q, ktery byl zrusen. V systemu s automatickym bufferovanim se nic nedeje a proces P klidne pokracuje dal. Pokud ovsem proces P potrebuje vedet, ze Q zpravu prijal, ceka na potvrzeni prijeti. V systemu bez bufferovani je proces Q blokovan vzdy. Opravne mechanismy jsou totozne s bodem (1).

Ztracena zprava

    1. OS je schopen detekovat tuto udalost a znovu poslat zpravu.

    2. Odesilajici proces je schopen detekovat tuto udalost a znovu odeslat zpravu, je-li to zapotrebi.

    3. OS je schopen detekovat tuto udalost a upozorni odesilajici proces, ze zprava byla ztracena. Odesilajici proces potom muze udelat co uzna za vhodne.

Porusena zprava

3.6.6. Meziprocesova komunikace v OS Mach

    1. Cekat do te doby, nez se ve schrance uvolni misto;

    2. Cekat maximalne n ms;

    3. Necekat vubec a okamzite se vratit;

    4. Docasne uchovat zpravu; Zprava muze byt docasne uchovana operacnim systemem, dokud se ve fronte adresata neuvolni misto. Kdyz muze byt zprava umistena do patricne schranky, system zasle zpravu odesilateli. Jen jedna zprava muze cekat na uvolneni mailboxu.

    1. libovolne schranky z mnoziny schranek

    2. specificke (pojmenovane) schranky.

3.6.7. Komunikace v OS UNIX

Sockety

    1. domena UNIX (AF_UNIX)

    2. domena Internet (AF_INET)

    3. domena Xerox Network services (AF_NS)


Zpet Obsah Vpred