Google för att inkludera i kÀrnan Linux den första uppsÀttningen patchar med implementeringen av komponenter som Àr nödvÀndiga för att möjliggöra arbetet med M:N-trÄdmödeln. Googles initiativ Àr kopplat till öppnandet av en API som utvecklats bakom stÀngda dörrar för kÀrnan Linux, som möjliggör arbetet av den anvÀndarutrymmesbaserade flertrÄdade subsystemet som anvÀnder M:N-trÄdmödeln. Subsystemet anvÀnds av Google för att stödja tjÀnster som krÀver minimala fördröjningar. SchemalÀggning och hantering av trÄdfördelning sker helt i anvÀndarutrymmet, vilket möjliggör en betydande minskning av antalet kontextvÀxlingar genom att minimera utförandet av systemanrop.
För att sÀkerstÀlla fungerandet av det angivna subsystemet pÄ kÀrnnivÄ har API SwitchTo implementerats, vilket erbjuder tre grundlÀggande operationer - wait, resume och swap (vÀxling). För att inkluderas i kÀrnan har koden för den nya operationen FUTEX_SWAP föreslagits, som kompletterar , och tillhandahÄller en grund för skapandet av flertrÄdiga bibliotek i anvÀndarutrymmet. FUTEX_SWAP kan ocksÄ anvÀndas för att överföra meddelanden mellan uppgifter, i likhet med RPC. Till exempel, för tillfÀllet krÀvs minst fyra anrop av FUTEX_WAIT och FUTEX_WAKE för att överföra ett meddelande mellan uppgifter, medan anvÀndningen av FUTEX_SWAP tillÄter en enda operation, som kommer att utföras 5-10 gÄnger snabbare.
För nÀrvarande tillÀmpas frÀmst modeller för trÄdar 1:1 och N:1 i praktiken. Modellen 1:1 anvÀnds i (POSIX-trÄdar) och , och innebÀr en direkt koppling mellan en trÄd i anvÀndarutrymmet och en trÄd (en enhet för schemalÀggning) pÄ kÀrnnivÄ. Modellen N:1 har implementerats i , som tar bort trÄdschemalÀggningen till anvÀndarutrymmet och tillÄter N trÄdar i anvÀndarutrymmet att kopplas till en enda trÄd i kÀrnan, dÀr kÀrnan inte har information om anvÀndartrÄdar.
Den frĂ€msta nackdelen med 1:1-modellen Ă€r de stora overheadkostnaderna för att vĂ€xla mellan kĂ€rnan och anvĂ€ndarutrymmet. N:1-modellen löser detta problem, men skapar ett nytt â eftersom flödet i kĂ€rnan Ă€r en odelbar enhet för exekveringsplanering, kan anvĂ€ndarflöden som Ă€r knutna till ett flöde i operativsystemets kĂ€rna inte skalas över CPU-kĂ€rnor och blir bundna till en enda CPU-kĂ€rna.
M:N-modellen Àr en hybrid och eliminerar alla ovanstÄende nackdelar genom att matcha N flöden i anvÀndarutrymmet med M flöden i operativsystemets kÀrna, vilket möjliggör bÄde minskning av overheadkostnaderna för vÀxling av kontext samt att sÀkerstÀlla skalning över CPU-kÀrnor. Priset för denna lösning Àr en stor komplexitet i implementeringen av flödesplaneraren i anvÀndarutrymmet och behovet av mekanismer för att samordna ÄtgÀrder med kÀrnans planerare.

KĂ€lla: opennet.ru
