Ebben a cikkben megismerjük az operációs rendszer többszálú modelljét.
Többszálú modell:
A többszálú funkció lehetővé teszi az alkalmazás számára, hogy feladatát egyedi szálakra ossza fel. Többszálú esetén ugyanaz a folyamat vagy feladat elvégezhető a szálak számával, vagy azt is mondhatjuk, hogy több szálnál több szál is végrehajtja a feladatot. A multithreading használatával multitasking érhető el.
betűméret latex
Az egyszálas rendszerek fő hátránya, hogy egyszerre csak egy feladatot lehet végrehajtani, ezért az egyetlen szálfűzés hátrányának kiküszöbölése érdekében létezik többszálú megoldás, amely több feladat végrehajtását teszi lehetővé.
Például:
A fenti példában az ügyfél1, kliens2 és kliens3 várakozás nélkül hozzáfér a webszerverhez. A többszálú kezelésben több feladat is futhat egyszerre.
Egy operációs rendszerben a szálak felhasználói szintű szálra és kernel szintű szálra vannak osztva. A felhasználói szintű szálak független formában kezelték a kernel felett, így a kernel támogatása nélkül kezelhetők. Ezzel szemben az operációs rendszer közvetlenül kezeli a kernelszintű szálakat. Ennek ellenére léteznie kell egyfajta kapcsolatnak a felhasználói szintű és a kernel szintű szálak között.
Három bevett többszálú modell létezik, amelyek osztályozzák ezeket a kapcsolatokat:
- Sok-egy többszálú modell
- Egy az egyhez többszálú modell
- Soktól sokig többszálú modellek
Sok-egy többszálú modell:
A sok az egyhez modell sok felhasználói szintű szálat képez le egy kernelszálra. Ez a fajta kapcsolat hatékony kontextusváltási környezetet tesz lehetővé, amely könnyen megvalósítható még az egyszerű kernelen is, száltámogatás nélkül.
java adattípusok
Ennek a modellnek az a hátránya, hogy mivel egy adott időpontban csak egy kernel szintű szálütemezés van, ez a modell nem tudja kihasználni a többszálú folyamatok vagy többprocesszoros rendszerek által kínált hardveres gyorsítást. Ebben az összes szálkezelés a felhasználói térben történik. Ha blokkol, ez a modell blokkolja az egész rendszert.
A fenti ábrán a sok az egyhez modell az összes felhasználói szintű szálat egyetlen kernelszintű szálhoz társítja.
statikus java
Egy az egyhez többszálú modell
Az egy az egyhez modell egyetlen felhasználói szintű szálat képez le egyetlen kernel szintű szálra. Ez a fajta kapcsolat több szál párhuzamos futtatását teszi lehetővé. Ez az előny azonban hátrányokkal jár. Minden új felhasználói szál generálásának tartalmaznia kell egy megfelelő kernelszál létrehozását, amely többletterhelést okoz, ami akadályozhatja a szülőfolyamat teljesítményét. A Windows sorozat és a Linux operációs rendszerek a szálak számának növekedésének korlátozásával próbálják megoldani ezt a problémát.
A fenti ábrán az egyik modell ezt a felhasználói szintű szálat egyetlen kernelszintű szálhoz társítja.
Sok-sok modell többszálú modell
Az ilyen típusú modellekben több felhasználói szintű szál és több kernel szintű szál is található. A létrehozott kernelszálak száma az adott alkalmazástól függ. A fejlesztő mindkét szinten annyi szálat hozhat létre, de előfordulhat, hogy nem ugyanaz. A sok a sokhoz modell kompromisszum a másik két modell között. Ebben a modellben, ha bármely szál blokkoló rendszerhívást indít, a kernel ütemezhet egy másik szálat a végrehajtásra. Ezenkívül a több szál bevezetésével nincs olyan bonyolultság, mint az előző modelleknél. Bár ez a modell lehetővé teszi több kernelszál létrehozását, a valódi párhuzamosságot ezzel a modellel nem lehet elérni. Ennek az az oka, hogy a kernel egyszerre csak egy folyamatot tud ütemezni.
A többszálú modell sok-sok változata több felhasználói szintű szálat társít ugyanahhoz vagy sokkal kevesebb kernelszintű szálhoz a fenti ábrán.