next up previous contents
Next: A UNIX fájlrendszere Up: A UNIX operációs Previous: Folyamatok a UNIX

A folyamatok közötti kommunikáció (IPC) a UNIX rendszerben

Kezdetben a UNIX csak a pipeokat tartalmazta mint IPC-eszközt (ezt ld. késobb), ami egy nagyon primitív eszköznek bizonyult, mert a kommunikáció csak olyan folyamatok között történhetett, amelyeknek van közös ose. Az IPC más eszközei a UNIX rendszerbe csak a fejlesztésének egy késoi szakaszában kerültek be, ezért az AT&T UNIX (ezzel együtt a Microsoft XENIX-e) és a BSD UNIX (ezzel együtt például az Ultirx) rendszerek más eszközöket nyújtanak a programozók számára az IPC megszervezésére. Itt az AT&T UNIX által nyújtott eszközök lesznek bemutatva, mert késobb az lett szabványosítva (az X/Open szabványba ez került be), igaz a másik tábor, a Berkeley (BSD) UNIX fejlesztoinek csoportja ezt a tényt mindmáig egyszeruen figyelmen kívül hagyta. (A legtöbb BSD UNIX forgalmazó azért ad valamilyen könyvtárakat, amelyek az AT&T rendszerhívásokat implementálják vagy szimulálják.) Az AT&T UNIX háromféle eszközzel rendelkezik ezen a téren: szemaforokkal, osztott memóriával (shared memory) és üzenetátadással (message passing).

A szemafor egy 0 és 32767 közötti értéket vehet fel, és a programozó ennek az értékét növelheti és csökkentheti úgy, hogy e két muvelet oszthatatlan muveletnek tekintheto, vagyis az operációs rendszer gondoskodik arról, hogy ne tudják ketten egyszerre ugyanannak a szemafornak az értékét megváltoztatni úgy, hogy a változtatás a rendszerben inkonzisztenciát okozna. (Inkonzisztencia például onnan eredhetne, hogy ha két folyamat egyszerre próbálja egy 2 byteos szemafor értékét megváltoztatni, és eközben az egyiknek kiosztott idoszelet lejár miután a két byte egyikét átállította (de a másik byteot még nem), a vezérlést megkapja a másik folyamat, az átállítja a szemafor értékét a maga elképzelései szerint, majd amikor a vezérlést visszakapja az elozo folyamat, akkor az átállítja a másik byteot, és ezzel kaotikus állapotok alakulhatnak ki).

Az osztott memória használata lehetové teszi azt, hogy egy bizonyos memóriaterületet (nyilván a benne tárolt adatokkal együtt) egyszerre több folyamat is lássa.

Az üzenetek lehetové teszik egy-egy memóriaterület (buffer) tartalmának átküldését az egyik folyamattól a másiknak. Két primitív muvelet van az üzenetek kezelésére: üzenet elküldése és üzenet fogadása. Az üzenetfogadó primitív lehet blokkoló vagy nem-blokkoló aszerint, hogy ha a végrehajtásának pillanatában még nem érkezett a folyamat számára üzenet, akkor a program várjon egy üzenet beérkezéséig vagy fusson tovább jelezve azt, hogy nem volt beolvasható üzenet.



next up previous contents
Next: A UNIX fájlrendszere Up: A UNIX operációs Previous: Folyamatok a UNIX



Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996