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.
![](https://miro.medium.com/max/38/1*1RN7wINzLL1IbqrQWH30FQ.jpeg?q=20)
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
![](https://miro.medium.com/max/60/1*LdafsmbCdfR882Vtd1Kp0g.jpeg?q=20)
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.
![](https://miro.medium.com/max/36/1*kAg0WimV_ZBEPqR97hj2WA.jpeg?q=20)
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
![](https://miro.medium.com/max/60/1*usQZh0BLpOhsA09QPm9dhg.jpeg?q=20)
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.