next up previous contents
Next: A folyamatok közötti Up: A UNIX operációs Previous: Néhány alapveto UNIX-beli

Folyamatok a UNIX rendszerben

A UNIX rendszer egy igazi multitaskos rendszer, minden folyamat létrehozhat egy vagy több gyermek-folyamatot, és a gyermek-folyamatok a szülo-folyamattal párhuzamosan futnak. A gyermek-folyamat örökli a szülojének a jogait, és egyéb tulajdonságait. A processz-táblában egy folyamathoz (többek között) a következo információk vannak tárolva:

(A folyamat kulcsfogalomnak számít minden operációs rendszerben - nem csak a UNIX-ban. Az, hogy mi tartozik egy folyamathoz nagyon nagy mértékben befolyásolja az egész operációs rendszer lehetoségeit és szerkezetét.)

Az operációs rendszer egy kicsi, de fontos része a folyamat-ütemezo (scheduler). Mivel a legtöbb UNIX-ot futtató hardveren csak egy processzor van, ezért ezen szimulálni kell a folyamatok párhuzamos futását. Ez pedig a következoképpen történik:

  1. Az ütemezo a futásra váró összes folyamat közül valamilyen szempont szerint kiválaszt egyet, és átadja annak a vezérlést.
  2. (Ha a folyamat valamikor a háttértárra kikerült, valamilyen virtuális memória-kezelo muvelet eredményeként, akkor elobb visszahozza onnan.)
  3. A kiválasztott folyamat elkezd futni (vagyis megkapja a CPU-használati jogot), egész addig, amíg az ún. idoszelete le nem jár. Ez azt jelenti, hogy ha a folyamat idoszelete mondjuk 40 millisec., akkor a folyamat (kb.) 40 millisec.-ig fog futni.
  4. Ha a folyamat idoszelete lejár, akkor ismét az ütemezo kezd el muködni, az újabb folyamatot választ ki és annak adja át a vezérlést (vagyis vissza az 1. ponthoz).

A fentiekben az egyetlen problémás dolog az, hogy hogyan "jár le a folyamat idoszelete" (vagyis egy folyamatnak önmagának "le kell-e mondania" a processzorról, vagy pedig az idoszelet lejárta után az operációs rendszer automatikusan el tudja-e venni a folyamattól a processzorhasználati jogot). A multitaskos rendszerekben legtöbbször a második eset áll fenn (a UNIX rendszereknél mindig). Ha az elso eset állna fenn, akkor lehetne olyan folyamatot írni, amely sosem mond le a processzor használatáról, és ezzel a teljes operációs rendszer megbénulna, nem tudná ellátni a feladatát (az eroforrások igazságos elosztását).

Az Intel 8088-as mikroprocesszor esetén ez az óra-megszakítások kihasználásával oldható meg. Az IBM PC-ben van egy belso óra, amely 1 másodpercben (kb. 100-szor) egy ún. óra-megszakítást generál. Ennek a megszakításnak van egy sorszáma, tehát tartozik hozzá egyértelmuen egy megszakítás-vektor. Az operációs rendszert ilyen gépen úgy írják meg, hogy a megszakítás-vektor az ütemezo modul memóriabeli címét tartalmazza, és ilyen módon minden másodpercben kb. 100-szor, amikor a belso óra "üt", akkor az ütemezo automatikusan megkapja a vezérlést és új folyamatot választ ki.



next up previous contents
Next: A folyamatok közötti Up: A UNIX operációs Previous: Néhány alapveto UNIX-beli



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