Könnyű eljárás

A könnyű folyamat ( angolul  light-weight process , LWP) a kifejezés hagyományos értelmében vett többfeladatos működés elérésének eszköze egy számítógépes operációs rendszerben . A Unix System V és a Solaris rendszeren egy egyszerű folyamat fut a felhasználói térben , egyetlen végrehajtási szálon felül.kernel, megosztja a virtuális címteret és a rendszerszál-erőforrásokat más könnyű folyamatokkal ugyanazon a folyamaton belül. A szálkönyvtár által kezelt több felhasználói szintű szál egy vagy több könnyű folyamatban tárolható, lehetővé téve a felhasználói szintű többfeladatos munkát, amely bizonyos teljesítményelőnyökkel járhat [1] .

Egyes operációs rendszereken nincs külön réteg könnyű folyamatok a kernelszálak és a felhasználói szálak között. Ez azt jelenti, hogy a felhasználói szálakat közvetlenül a kernelszálak valósítják meg. Ilyen esetekben a "könnyű folyamat" kifejezés általában egy kernelszálat jelent, a "szál" pedig egy felhasználói szálat. A Linux kernelben felhasználói szálak vannak implementálva, hogy lehetővé tegyék bizonyos folyamatok erőforrások megosztását, néha lehetővé téve a "könnyű folyamatok" kifejezés alkalmazását ezekre a szálakra [2] . Hasonlóan, a SunOS 4-es verziójában (a Solaris elődjében ) a felhasználói szálakat lightweight folyamatoknak nevezték [1] .

Kernelszálak

A kernelszálakat teljes egészében a kernel kezeli. Nem kell folyamathoz kapcsolódniuk, a kernel létrehozhatja őket, ha egy adott feladat elvégzéséhez szükséges. A kernelszálak nem futhatnak felhasználói módban. A könnyű folyamatok (azokon a rendszereken, ahol külön réteget képeznek) kernelszálakhoz kapcsolódnak, és felhasználói szintű kontextust biztosítanak. Ez magában foglalja a folyamat megosztott erőforrásaira való hivatkozást, amelyhez az egyszerűsített folyamat tartozik. Egy könnyű folyamat felfüggesztésekor a felhasználói szintű regiszterek tartalmát a folytatásig tárolni kell, és a fő kernelszálnak is tárolnia kell saját kernel szintű regisztereit.

Teljesítmény

[ tiszta ]

A könnyű folyamat létrehozása drágább és tovább tart, mint egy felhasználói szál. Egy könnyű folyamat létrehozásakor először rendszerhívás történik a megfelelő kernelszál létrehozásához.[ clarify ] , vagyis kernel módba váltás történik. Ezek a módkapcsolók általában magukban foglalják a paraméterek átmásolását a kernel és a felhasználói terület között, és a kernel általában további lépéseket tesz a paraméterek helyességének ellenőrzésére. A könnyű folyamatok közötti kontextusváltáshoz a regiszterek megelőző mentése szükséges, majd át kell térni a kernel módba, ahol elmenti a kernel szál regisztereit, és a könnyű folyamat összes szükséges ütemezése után a megfelelő regiszterértékek \u200b visszaállításra kerül kernel módban és felhasználói módban. [egy]

Emiatt egyes felhasználói szintű könyvtárak több felhasználói szintű szál létrehozására is alkalmasak egy egyszerű folyamaton felül. A felhasználói szálak teljes egészében a felhasználói térben létrehozhatók, megsemmisíthetők, szinkronizálhatók és válthatók egymás között anélkül, hogy rendszerhívásokra vagy kernelmódú átmenetekre lenne szükség. Ez jelentős teljesítménynövekedést biztosít a szál létrehozása és a környezetváltás során. [1] Azonban nehézségekbe ütközik egy olyan felhasználói szintű szálütemező megvalósítása, amely jól működik a kernellel.

Ütemező aktiválása

Míg a felhasználói könyvtár a felhasználói szálak ütemezésével van elfoglalva, a kernel a mögöttes könnyű folyamatok ütemezésével van elfoglalva. A kernel és a streaming könyvtár közötti koordináció nélkül a kernel szuboptimális ütemezési döntéseket hozhat. Ez egy [Deadlock|Deadlock]-hoz is vezethet, amikor a több egyszerűsített folyamatban szétszórt felhasználói szálak megpróbálják megszerezni ugyanazokat az erőforrásokat, amelyeket egy másik, éppen nem futó felhasználói szál használ. [egy]

A probléma egyik megoldása az ütemező engedélyezése. Ez egy módszer a kernel és a szálkönyvtár koordinálására. A kernel értesíti a szálkönyvtár ütemezőjét bizonyos eseményekről (például amikor egy szál blokkolására van ütemezve), és a szálkönyvtár eldöntheti, hogy mit tegyen. Ezt a kerneltől érkező értesítést "upcall"-nak nevezik.

A felhasználói szintű könyvtárnak nincs ellenőrzése a magasabb szintű mechanizmus felett, csak értesítéseket kap a kerneltől, és a felhasználói szálakat ütemezi a meglévő könnyű folyamatokon, nem a processzorokon. A kernelütemező dönti el, hogyan ütemezze a könnyű folyamatokat a processzorokon. Ez azt jelenti, hogy a könnyű folyamatok a szálkönyvtárban "virtuális processzorokként" jelennek meg [3] .

Támogatás operációs rendszerekben

A Solaris a 2.2-es verzió óta külön könnyű folyamatréteget valósított meg. A 9-es verzió előtt a Solaris a könnyű folyamatok és a felhasználói szálak sok-sok arányát biztosította. Ez azonban az általa okozott bonyolultság miatt elavult, ami a kernelütemező teljesítményét is javítja [1] .

A UNIX System V és modern származékai, mint az IRIX , SCO OpenServer , HP-UX és IBM AIX sok-sok leképezést biztosítanak a felhasználói szálak és a könnyű folyamatok között [3] [4] .

Jegyzetek

  1. 1 2 3 4 5 6 Yuresh Vakhalia. Szálak és könnyű folyamatok // UNIX belülről \u003d UNIX Internals - The New Frontiers / ford. angolról. E. Vasziljev, L. Szerebrjakova. - Petersburg: Peter, 2003. - S.  97 . — 844 p. - ISBN 5-94723-013-5 , 0-13-101908-2.
  2. D. Bovet, M. Cesati. Folyamatok, könnyű folyamatok és szálak // Linux Kernel = A Linux kernel megértése / fordítás. angolról. Szergej Inozemcev. - Petersburg: BHV-Petersburg, 2007. - S. 123. - 1104 p. - ISBN 0-596-00565-2 , 978-5-94157-957-0.
  3. 1 2 Silberschatz, Galvin, Gagne. 5. fejezet - Szálak // Operációs rendszer fogalmak Java-val. - 6. - John Wiley & Sons, Inc., 2004. - ISBN 978-0-470-50949-4 .
  4. AIX 6.1 – Szálhangolás . IBM (2009). Letöltve: 2015. december 5. Az eredetiből archiválva : 2015. december 8..