Google a magba való felvételhez Linux Az M:N streaming modell támogatásához szükséges komponenseket megvalósító első javításkészlet. A Google kezdeményezése egy zárt ajtók mögött fejlesztett API megnyitásához kapcsolódik. a mag számára Linux, amely egy felhasználói térben futó, többszálú alrendszert működtet az M:N szálkezelési modell használatával. Ezt az alrendszert a Google minimális késleltetést igénylő szolgáltatások támogatására használja. A szálak ütemezése és kezelése teljes egészében a felhasználói térben történik, ami jelentősen csökkenti a kontextusváltások számát a rendszerhívások minimalizálásával.
A megadott alrendszer működésének biztosítása kernel szinten Linux A SwitchTo API-t implementálták, amely három alapvető műveletet kínál: várakozás, folytatás és csere. Egy új műveletet, a FUTEX_SWAP-ot javasoltak a magba való beépítésre, kiegészítve a , és keretet biztosít többszálú felhasználói tér könyvtárak létrehozásához. A FUTEX_SWAP is használható üzenetek átadására a feladatok között, hasonlóan az RPC-hez. Például jelenleg egy üzenet átviteléhez a feladatok között legalább négy FUTEX_WAIT és FUTEX_WAKE hívás szükséges, míg a FUTEX_SWAP használatával egy művelet 5-10-szer gyorsabban hajtható végre.
Jelenleg a gyakorlatban elsősorban az 1:1 és N:1 áramlási modelleket használják. Az 1:1 modellt használják (POSIX szálak) és , és magában foglalja egy felhasználói tér szál közvetlen leképezését egy szálra (végrehajtás ütemezési egysége) a kernel szintjén. Az N:1 modell ben valósul meg , a szálütemezést hozza a felhasználói térbe, és lehetővé teszi, hogy N felhasználói terület szál egyetlen szálhoz kapcsolódjon a kernelben anélkül, hogy a kernel tudna a felhasználói szálakról.
Az 1:1 modell fő hátránya a kernel és a felhasználói terület közötti kontextusváltás nagy költsége. Az N:1 modell megoldja ezt a problémát, de egy újat hoz létre – mivel a kernelben lévő szál a végrehajtás ütemezésének oszthatatlan egysége, az operációs rendszer kernelében egyetlen szálhoz kötött felhasználói szálak nem skálázhatók a CPU magok között, és kötődhetnek egyetlen CPU mag.
Az M:N modell hibrid, és az összes fenti hátrányt kiküszöböli azáltal, hogy N felhasználói terület szálat képez M kernelszálra, csökkentve a kontextusváltás többletterhelését és a CPU magok közötti skálázást. Ennek az opciónak az ára a szálütemező felhasználói térben való megvalósításának nagy bonyolítása, valamint a műveletek és a kernelütemezővel koordináló mechanizmusok szükségessége.

Forrás: opennet.ru
