Medprocesna komunikacija pri UNIX


Na voljo imamo naslednje oblike medprocesne komunikacije
signali
semaforji
skupen pomnilnik (shared memories)
sporočila (message queues)
vtičnice (sockets)

Semaforji

S semaforji predvsem ščitimo kritične sekcije, na primer pri spreminjanju skupnega pomnilnika.

Semaforje imamo alocirane v skupinah. Vsaka skupina ima svojo številčno oznako, semaforji v njej pa so prav tako oštevilčeni, začenši z 0.

Na voljo imamo naslednje sistemske klice
 
semget() S tem klicem tvorimo novo skupino semaforjev ali dobimo oznako obstoječega semaforja
semctl() tako dobimo ali spreminjamo vrednost določenega semaforja v skupini semaforjev.
semop()  Na izbranem semaforju izvedemo neko operacijo

Podrobnosti za sistem LINUX
Primer uporabe


Skupen pomnilnik

Skupen pomnilnik (shared memory) je metoda, ko dva ali več programov souporablja isti segment virtualnega pomnilnika. Da ne pride do nekonsistenc, si moramo pomagati še s semaforji.

Imamo naslednje sistemske klice
 
shmget() S tem klicem tvorimo dostop do skupnega pomnilniąkega segmenta ali tak segment sploh tvorimo
shmctl() tako dobimo ali spreminjamo podatke o skupnem pomnilniąkem segmentu
shmat() Preden lahko nek proces uporabi skupen segment, se mora nanj najprej prilepiti (attach)
shmdt() Po koncu souporabe skupnega pomnilniąkega segmenta se tako od njega odlepimo (detach)

Podrobnosti za sistem LINUX
Primer uporabe


Sporočila

Procesi si izmenjujejo sporočila preko sporočilnih vrst (message queues). Vsako sporočilno vrsto označuje celoštevilčna oznaka.

Na voljo imamo naslednje sistemske klice:
 
msgget() S tem klicem tvorimo novo vrsto ali dobimo oznako obstoječe
msgctl() tako dobimo ali spreminjamo atribute obstoječe sporočilne vrste
msgsnd()  Pošljemo sporočilo v sporočilno vrsto
msgrcv() Iz sporočilne vrste beremo sporočilo

Podrobnosti za sistem LINUX
Primer uporabe