A program egy algoritmust megvalósító utasítások sorozata magas színtű nyelven vagy gépi kódban. A folyamat (task, process) egy éppen végrehajtás alatt álló program. Egy program végrehajtása több folyamatot is létrehozhat. Egy program több különböző folyamatból is állhat. (Például egy levelező program esetén a bejelentkezés az első folyamat, mely létrehozhat egy szerkesztő, majd egy levélküldő folyamatot.) A létrehozó folyamat a szülő (parent process), a létrehozott a gyermekfolyamat (child process). A szülőt általában az operációs rendszer hozza létre.
Multitasking környezetben a processzorok száma általában kevesebb, mint a folyamatoké, így a folyamatok időnként várakozni kényszerülnek. A további folytatáshoz azonban néhány információt tárolni kell róla.
A folyamatleíró blokk (Process Control Block – PCB) azonosítja egyértelműen a folyamatot. Ez tartalmazza a folytatáshoz szükséges adatokat (konkrét tartalma az adott rendszertől függ):
- a folyamat azonosítóját
- a programszámláló állását
- a folyamat állapotát
- a regiszterek tartalmát
- a folyamathoz tartozó memóriaterületek adatait
- a használt perifériák, állományok jellemzőit
Az eredeti: http://e-oktat.pmmf.hu/folyamatok
A folyamatok és a processzor kapcsolata igen szoros, a folyamatok
minden utasítását a processzor hajtja végre. Egy folyamat az
elindításától a befejezéséig folyamatosan igényli a processzor
közreműködését. Rendszerünkben több folyamat is fut, ezért a precíz
működés érdekében pontos időzítésre van szükség. A processzor
kihasználtsági foka (különösen régebben, amikor a hardver igen drága
volt,) elsőrendű fontossággal bírt, de manapság sem elhanyagolható.A felhasználók szempontjából azonban nem ez a kulcskérdés. A felhasználó akkor érzi jól magát, és akkor elégedett a számítógép működésével, ha az a programjait a lehető legrövidebb idő alatt végrehajtja. A kihasználtság és a sebesség tehát egyaránt fontos, ezért az operációs rendszereknek mindkét feltételt teljesíteniük kell.
Az idővel való gazdálkodást ütemezésnek (scheduling) nevezzük. Az ütemezés során a folyamatok állapota változik meg. Attól függően, hogy milyen állapotok között történik váltás, az ütemező több szintjét definiálhatjuk. (magas szintű ütemező , alacsony szintű ütemező)
Egy folyamat az időzítés szempontjából alapvetően 3 alapállapotot vehet fel, az állapotok között pedig 4 különböző átmenet lehetséges.
-
Az alapállapotok:
- Futásra kész (ready): Ebben az állapotban - a processzoron kívül - minden erőforrás a folyamat rendelkezésére áll. A folyamatok, létrejöttüket követően futásra kész állapotba kerülnek.
- Fut (running): A processzor annak a folyamatnak az utasításait hajtja végre, amelyik ebben az állapotban van.
- Várakozik (blocked): Ha futó folyamat olyan erőforrást igényel, amelyik pillanatnyilag nem áll rendelkezésre, vagy a további futásához szüksége van egy másik folyamat által szolgáltatandó eredményre, ebbe az állapotba kerül.
-
Az átmenetek:
- Elindul (dispatch): A központi egység felszabadulása esetén az alacsonyszintű ütemező a futásra kész állapotban lévő folyamatok közül választja ki azt, amelyik a fut állapotba kerülhet.
- Megszakad (timer runout): Ha a futó folyamat számára biztosított idő lejár, visszakerül a futásra kész állapotba. (Nem mindegyik operációs rendszer teszi lehetővé, hogy egy folyamatot megszakítsunk, ehhez a rendszernek, illetve a folyamatnak megszakíthatónak kell lennie).
- Vár (wait, block): Amennyiben olyan erőforrásra van szüksége, amely éppen foglalt, a fut állapotból a várakozik állapotba jut.
- Feléled (awake): A várt esemény bekövetkezése esetén a folyamat futásra kész állapotba kerül és újra beáll a processzorra várakozó folyamatok sorába.
Nincsenek megjegyzések:
Megjegyzés küldése