A folyamatok és a szálak az operációs rendszerekben (OS) mindig is a kedvenc témáim közé tartoztak az informatikában. Lehetővé teszik, hogy sokkal mélyebben megértsük, hogyan kezeli az operációs rendszer a programokat a végrehajtás különböző szakaszaiban, hogyan kezeli a memóriával kapcsolatos kérdéseket, és hogyan biztosítja az elszigetelt biztonságot egészen a kernelig. Ez egyszerűen rohadtul érdekes!
Az alapötlet
A folyamat egyszerűen egy végrehajtás alatt álló program. Egy programhoz szigorúan egy folyamat tartozik. Nagyon ritka esetekben ez nem mindig igaz (például a Google Chrome), de az esetek többségében ez igaz.
Minden folyamatnak különböző összetevői vannak, amelyek lehetővé teszik számára a neki szánt feladatok elvégzését. Nevezetesen a verem és a halom a helyi változó, illetve a dinamikus memória kiosztására szolgál.
Még több összetevő van, de elég, ha annyit mondunk, hogy minden folyamatnak szüksége van ezekre az összetevőkre ahhoz, hogy programként fusson.
Folyamatok figyelése a rendszerben
Egy adott időpontban néhány száz vagy annál kevesebb folyamat is futhat. Néha hasznos részletes információkat látni róluk, különösen akkor, ha a számítógép lassan működik: mivel bizonyos folyamatok lefoglalhatják a számítógép memóriáját vagy processzorát. Ha ezeket pontosan meg tudja határozni, majd megsemmisíteni, az nagyon hasznos, és viszonylag könnyen megvalósítható.
Ha Windows-t futtat, akkor megnyithatja a Feladatkezelőt, és a Folyamatok fülre kattintva láthatja ezeket az információkat. Ha Linuxot vagy Unix-alapú gépet futtat, számos különböző parancsot futtathat:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Hogyan kezeli az operációs rendszer a folyamatokat
Egy folyamat bármikor lehet egy adott állapotban. Lehet, hogy éppen most hozták létre, várakozik a futtatásra, várakozik valamilyen I/O eszközhöz való hozzáférésre, megszakította egy másik folyamat stb. A maximális termelékenység biztosítása érdekében az operációs rendszernek ismernie kell mindezen folyamatok állapotát, és képesnek kell lennie arra, hogy a megfelelő időpontokban intelligensen hozzon létre új folyamatokat, váltson közöttük, szüneteltesse, felfüggessze őket stb.
Az operációs rendszer ennek hatékony megvalósításához minden egyes folyamathoz úgynevezett folyamatvezérlő blokkot tart fenn. Ez olyan hasznos információkat tartalmaz, mint a folyamat aktuális állapota, a következő végrehajtandó utasítás és a folyamathoz jelenleg hozzárendelt eszközök.
Ez lehetővé teszi az operációs rendszer számára a különböző folyamatok hatékony kezelését, az aktuális állapotnak a NYÁK-ban való elmentésével, a folyamatok közötti váltással és bizonyos folyamatok későbbi újratöltésével.
Hogyan váltogat az operációs rendszer a különböző folyamatok között
A kontextusváltás azt a konkrét tevékenységet jelenti, amikor az operációs rendszer elmenti egy futó folyamat állapotát, és szünetelteti azt egy másik folyamat futtatása érdekében. Ezt úgy kell tennie, hogy ezek a folyamatok ne ütközzenek egymással, és a mentett folyamat később gond nélkül folytatható legyen. Ez biztosítja az operációs rendszerek egyik legfontosabb jellemzőjét: a többfeladatos működést. Az ábra azt mutatja, hogy a NYÁK hogyan használható a folyamat állapotának elmentésére, egy másik folyamat futtatására, majd később az eredeti folyamat újratöltésére és folytatására.