Folyamatok

a UNIX / LINUX operációs rendszerben. C/C++ programozás


 

  Bevezető

Azaz miért, ki, kinek, miről, mennyit, hogyan...

 

  Mi a folyamat?

Ez a rész a UNIX fájlrenszerének rövid bemutatását tartalmazza, beleértve a könyvtárszerkezetet és az állománynevekre vonatkozó szabályokat. Ezután a folyamatok és az állományok összehasonlítása következik. Ezen kívül lesz pár szó a folyamatkezelő utasításokról is.

 

  Folyamatok közti kommunikáció

A folyamatok közti kommunikáció (IPC) többféleképpen is megvalósulhat: jelzések, állományok, csővezetékek (pipe), névvel ellátott csővezetékek (FIFO), szemaforok (semaphores), üzenetsorok (message queues) vagy osztott memória (shared memory) által.

 

  ANSI C

Rövid bevezetés az ANSI C használatába, különös tekintettel azokra az elemekre, utasításokra, amelyek nem azonosak a Borland C szintaxisával. Ugyanitt találhatók meg a folyamatok kezeléséhez szükséges utasítások részletes leírásai is.

 

  Folyamatokkal végzett műveletek

Folyamatok létrehozására, végrehajtására, befejezésére stb. vonatkozó szabályok és utasítások összefoglalója.

 

  Jelzések (signals)

A jelzéseket főként más folyamatok figyelmeztetésére, riasztására, vagy kivételek kezelésére használjuk. Ezen üzenetek nagyon kevés információt hordoznak, mivel véges számú jelből állhatnak. A jelzés hatására a folyamat megszakad és értelmezi az adott jelet. Alkalmazásuk nem túl hatékony, főleg folyamatok befejezésére használjuk.

 

  Csővezeték (pipe)

A csővezetékek (pipe-ok) már megoldják a fájloknál fellépő szinkronizációs problémákat. A pipe a rendszer által létrehozott (név nélküli) speciális állomány. Maximális hossza 10 blokk (5120 byte). Feladata: két folyamat közötti kommunikáció megvalósítása (az egyik folyamat ír a standard kimenetre, a másik pedig olvas a standard bemenetről). A pipe FILO szerkezetű. Két mutatója van: egyik az író folyamaté, a másik az olvasóé. Így az írás/olvasás cirkulárisan történik (ha a pipe megtelik az írónak kell várnia, ha kiürül az olvasónak).

 

  Névvel ellátott csővezeték (FIFO)

A névvel ellátott csővezetékek nagyon hasonlítanak a hagyományos pipe-okhoz. Egy FIFO állománynak azonban van neve és minden olyan folyamat hozzáférhet, amelynek joga van hozzá. A FIFO a második problémát is megoldotta, hiszen itt már értelmezettek az atomi műveletek is. Az egyetlen hátrány maradt az alacsony sebesség.

 

  Üzenetsorok (message queues)

Az üzenetek olyan kis adatcsomagok, amelyek a folyamatok között közlekednek. Itt természetesen meg kell mondanunk a címzett (folyamat) azonosítóját. Az üzenetek többfélék is lehetnek. Bármely folyamat amelynek van joga kaphat üzenetet a hálózaton keresztül.

 

  Szemaforok (semaphores)

A szemafor egy olyan jel (például egy változó), amely megmutatja, hogy egy folyamat végrehajthat-e egy bizonyos programrészt, vagy várakoznia kell.

 

  Osztott memória (shared memory)

Az osztott memória a leggyorsabb kommunikációt eredményezi. Az alapötlete: ugyanazt a memóriarészt használja az összes összeköttetésben levő folyamat. Minél gyorsabban beírja az egyik folyamat az információt a memóriába, annál gyorsabban tudja kiolvasni azt egy másik. Ebben az esetben is felhasználhatunk egy szemafort vagy küldhetünk üzenetet, azért, hogy a folyamatok írását/olvasását összehangoljuk.

 

  Függelék

Ez a rész különböző összefoglaló táblázatokat, rövid utasítás leírásokat és egyéb hasznos segítséget tartalmaz.

 

  Index

A dokumentumban szereplő kulcsszavak, kifejezések, utasítások jegyzéke.

 


Copyright (C) Buzogány László, 2002

About