next up previous contents
Next: Fájlok Up: Bevezetés Previous: Bevezetés

Folyamatok

A folyamat (processz) definíciója UNIX környezetben a következoképpen adható meg: folyamatnak tekinthetünk minden egyes futó programot - az általa lefoglalt memóriával és egyéb eroforrásokkal együtt. (Gyakran használják hasonló értelemben a taszk elnevezést is.) Az operációs rendszer minden egyes futó programról bizonyos információkat tárol egy ún. processz-táblában. A folyamatokkal kapcsolatban két alapveto muvelet van: új folyamat létrehozása, és egy futó folyamat megállítása (abortálása, lelövése). Ha egy folyamat létrehoz egy új folyamatot, akkor az újonnan létrehozott folyamatot gyermek folyamatnak nevezik, azt a folyamatot, amely a gyermeket létrehozta szülo folyamatnak nevezik. Fontos megoldani az egymással párhuzamosan futó folyamatok egymás közti kommunikációját is.

Minden egyes folyamathoz többek közt hozzá van rendelve egy egyedi ún. folyamat-azonosító (processz-id, pid), és az, hogy ki indította el azt a folyamatot (vagyis az, hogy melyik felhasználó indította el; persze az is tárolva van minden egyes folyamatról, hogy melyik folyamat hozta létre, és még sok más adat). Ilyen jellegu információk nyilvántartása érdekében minden egyes felhasználóhoz hozzá van rendelve egy természetes szám, a felhasználó azonosítója (user-id, uid). A folyamatot elindító felhasználó uid-je be lesz jegyezve a processz-táblába, és késobb ha kell, akkor onnan ki lehet azt nyerni. A UNIX operációs rendszerben alapértelmezés szerint minden egyes folyamat örökli a szülojének az uid-jét és a jogait valamint számos más jellemzojét is. (Ezzel szemben a folyamat-azonosító, a pid például nem örökölheto, mert ekkor az nem lenne egyedi.)

Az egymással párhuzamosan muködo folyamatoknak gyakran kell kommunikálniuk valamilyen módon. Az operációs rendszer feladatai közé tartozik a folyamatok közötti kommunikáció (Interprocess Communication) megszervezése is.

Sok operációs rendszer a folyamat fogalmat két fo részre osztja: egy taszkra és egy vagy több ún. threadre (magyarul: szál). A taszk egy "eroforrásgyujtemény" (fájlok, memóriaterületek és más objektumok) a thread pedig a folyamat "lelke": lényegében egy processzor-állapotból és egy saját stack-bol áll. Egy taszkban egy vagy több thread lehet. Az eredeti (UNIX-szeru) modellben egy folyamat pontosan egy taszkból és egy benne futó threadbol áll.

(Szokás megkülönböztetni preemptív ill. nem preemptív thread-rendszereket is. Az elobbiben minden egyes threadnek van egy-egy idoszelete, amíg futhat, majd ha az lejár, akkor egy másik thread kapja meg a CPU-t; az utóbbi modellben a threadnak valamilyen op-rendszer rendszerhívás meghívásával önszántából kell lemondania a CPU-használatról - ez utóbbi forma a program nyomkövetésekor hasznos.)



next up previous contents
Next: Fájlok Up: Bevezetés Previous: Bevezetés



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