A „Különbség a folyamat és a szál között” a technikai interjúk egyik gyakran feltett kérdése. Mind a folyamatok, mind a szálak kapcsolódnak egymáshoz, és nagyon hasonlóak, ezért zavart kelt a kettő közötti különbségek megértésében. A folyamat és a szál független végrehajtási szekvencia, de mindkettőt úgy különböztetik meg, hogy a folyamatok különböző memóriaterekben, míg ugyanazon folyamat szálai a megosztott memóriatérben futnak.
Ebben a témában megértjük a folyamatok és szálak rövid bemutatását, valamint azt, hogy milyen egyéb különbségek vannak a kettő között.
Mi az a folyamat?
A folyamat egy végrehajtott program példánya. Amikor egy programot futtatunk, az nem fut közvetlenül. A program végrehajtásához szükséges összes lépés végrehajtása némi időt vesz igénybe, és ezen végrehajtási lépések követése folyamatnak nevezhető.
mi a struktúra az adatstruktúrában
Egy folyamat létrehozhat más folyamatokat több feladat egyidejű végrehajtására; a létrehozott folyamatokat ún klón vagy gyermek folyamat , és a fő folyamat a szülői folyamat . Minden folyamat saját memóriaterülettel rendelkezik, és nem osztja meg a többi folyamattal. Aktív entitásként ismert. Egy tipikus folyamat az alábbi formában marad meg a memóriában.
Egy folyamat az operációs rendszerben a következő állapotok bármelyikében maradhat:
Hogyan működnek a folyamatok?
Amikor elkezdjük végrehajtani a programot, a processzor elkezdi feldolgozni. A következő lépéseket teszi:
- Először is, a program fordítás után bináris kódban betöltődik a számítógép memóriájába.
- A program futtatásához memóriára és egyéb operációs rendszer-erőforrásokra van szükség. Az olyan erőforrásokat, mint a regiszterek, a programszámláló és a verem, és ezeket az erőforrásokat az operációs rendszer biztosítja.
- A nyilvántartás tartalmazhat utasítást, tárolási címet vagy egyéb, a folyamathoz szükséges adatot.
- A programszámláló követi a programsorozatot.
- A verem egy számítógépes program aktív szubrutinjairól tartalmaz információkat.
- Egy programnak különböző példányai lehetnek, és a futó program minden egyes példányát egyedi folyamatnak nevezzük.
A folyamat jellemzői
- Minden alkalommal, amikor létrehozunk egy folyamatot, külön rendszerhívást kell indítanunk minden egyes folyamathoz az operációs rendszer felé. A Villa () függvény hozza létre a folyamatot.
- Minden folyamat a saját címén vagy memóriaterületén belül létezik.
- Mindegyik folyamat független, és az operációs rendszer izolált folyamatként kezeli.
- A folyamatoknak IPC-re (Inter-process Communication) van szükségük ahhoz, hogy kommunikáljanak egymással.
- A folyamatok közötti megfelelő szinkronizálás nem szükséges.
Mi az a Thread?
A szál egy folyamat részhalmaza, és könnyű folyamatként is ismert. Egy folyamatnak több szála is lehet, és ezeket a szálakat egymástól függetlenül kezeli az ütemező. Egy folyamaton belül az összes szál összefügg egymással. A szálaknak van néhány közös információja, mint pl adatszegmens, kódszegmens, fájlok stb., amelyet megosztanak a társaik szálaival. De tartalmazza a saját regisztereit, veremét és számlálóját.
objektum átalakítása stringgé
Hogyan működik a cérna?
Ahogy azt már megbeszéltük, a szál egy alfolyamat vagy egy végrehajtási egység a folyamaton belül. Egy folyamat egyetlen száltól több szálig terjedhet. Egy szál a következőképpen működik:
- Amikor egy folyamat elindul, az operációs rendszer hozzárendeli a memóriát és az erőforrásokat. A folyamaton belül minden szál csak a folyamat memóriáját és erőforrásait osztja meg.
- A szálakat főként az alkalmazások feldolgozásának javítására használják. A valóságban egyszerre csak egy szál kerül végrehajtásra, de a szálak közötti gyors kontextusváltás miatt azt az illúziót keltjük, hogy a szálak párhuzamosan futnak.
- Ha egy folyamatban egyetlen szál fut, akkor az úgynevezett egyszálú És ha több szál fut egyszerre, akkor ez az úgynevezett többszálú.
A szálak típusai
Kétféle szál létezik, amelyek a következők:
1. Felhasználói szintű szál
Ahogy a neve is sugallja, a felhasználói szintű szálakat csak a felhasználók kezelik, és a kernelnek nincs információja.
Ezek gyorsabbak, könnyen létrehozhatók és kezelhetők.
java olvassa be a csv fájlt
A kernel ezeket a szálakat egyetlen folyamatként kezeli, és csak egyetlen folyamatként kezeli.
A felhasználói szintű szálakat felhasználói szintű könyvtárak valósítják meg, nem a rendszerhívások.
2. Kernel szintű szál
A kernel szintű szálakat az operációs rendszer kezeli, és a kernel kezeli. Ezek a szálak lassabbak, mint a felhasználói szintű szálak, mivel a környezeti információkat a kernel kezeli. Kernel szintű szál létrehozásához és megvalósításához rendszerhívást kell végrehajtanunk.
A szál jellemzői
- A szálak adatokat, memóriát, erőforrásokat, fájlokat stb. osztanak meg a folyamaton belüli társszálaikkal.
- Egy rendszerhívás több szál létrehozására is alkalmas.
- Minden szálnak megvan a maga verem és regiszter.
- A szálak közvetlenül kommunikálhatnak egymással, mivel ugyanazt a címteret használják.
- A szálakat szinkronizálni kell a váratlan forgatókönyvek elkerülése érdekében.
Főbb különbségek a folyamat és a szál között
- Egy folyamat független, és nem szerepel egy másik folyamatban, míg az összes szál logikailag egy folyamaton belül van.
- A folyamatok nagy súlyúak, míg a szálak könnyűek.
- Egy folyamat önállóan létezhet, mivel saját memóriáját és egyéb erőforrásait tartalmazza, míg egy szálnak nem lehet egyéni létezése.
- A folyamatok közötti megfelelő szinkronizálás nem szükséges. Ezzel szemben a szálakat szinkronizálni kell a váratlan forgatókönyvek elkerülése érdekében.
- A folyamatok csak a folyamatok közötti kommunikációval kommunikálhatnak egymással; ezzel szemben a szálak közvetlenül tudnak kommunikálni egymással, mivel ugyanazon a címteren osztoznak.
Eltérési táblázat a folyamat és a szál között
Folyamat | cérna |
---|---|
A folyamat egy program egy példánya, amely végrehajtás vagy feldolgozás alatt áll. | A szál egy folyamat vagy egy egyszerűsített folyamat szegmense, amelyet az ütemező önállóan kezel. |
A folyamatok függetlenek egymástól, és ezért nem osztoznak a memórián vagy más erőforrásokon. | A szálak kölcsönösen függenek egymástól, és megosztják a memóriát. |
Az operációs rendszer minden folyamatot új folyamatként kezel. | Az operációs rendszer az összes felhasználói szintű szálat egyetlen folyamatként kezeli. |
Ha az egyik folyamatot blokkolja az operációs rendszer, akkor a másik folyamat folytathatja a végrehajtást. | Ha bármely felhasználói szintű szál blokkolásra kerül, akkor az összes peer szál is blokkolódik, mivel az operációs rendszer mindegyiket egyetlen folyamatnak tekinti. |
A két folyamat közötti kontextusváltás sok időt vesz igénybe, mivel ezek nehézkesek a szálhoz képest. | A szálak közötti kontextusváltás gyors, mert nagyon könnyűek. |
Az egyes folyamatok adatszegmensei és kódszegmensei függetlenek a másiktól. | A szálak adatszegmenst és kódszegmenst osztanak meg társszálaikkal; így a többi szálnál is ugyanezek. |
Az operációs rendszernek több időbe telik egy folyamat leállítása. | A szálak nagyon rövid idő alatt lezárhatók. |
Az új folyamatok létrehozása több időt vesz igénybe, mivel minden új folyamat igénybe veszi az összes erőforrást. | Egy szálnak kevesebb időre van szüksége a létrehozáshoz. |