Google za uključivanje u jezgro Linux Prvi set zakrpa koje implementiraju komponente potrebne za podršku M:N streaming modela. Googleova inicijativa se odnosi na otvaranje API-ja koji je razvijan iza zatvorenih vrata. za jezgro Linux, koji pokreće višenitni podsistem korisničkog prostora koristeći M:N model niti. Ovaj podsistem se koristi u Googleu za podršku uslugama koje zahtijevaju minimalnu latenciju. Raspoređivanje i upravljanje nitima se u potpunosti obavljaju u korisničkom prostoru, značajno smanjujući broj promjena konteksta minimiziranjem sistemskih poziva.
Da bi se osiguralo funkcionisanje navedenog podsistema na nivou kernela Linux Implementiran je SwitchTo API, koji nudi tri osnovne operacije: čekanje, nastavak i zamjenu. Nova operacija, FUTEX_SWAP, predložena je za uključivanje u jezgro, dopunjujući , i pruža okvir za kreiranje višenitnih biblioteka u korisničkom prostoru. FUTEX_SWAP se također može koristiti za prijenos poruka između zadataka, slično RPC-u. Na primjer, trenutno, da biste prenijeli poruku između zadataka, morate izvršiti najmanje četiri poziva na FUTEX_WAIT i FUTEX_WAKE, ali korištenje FUTEX_SWAP će vam omogućiti da prođete s jednom operacijom, koja će se završiti 5-10 puta brže.
Trenutno se u praksi uglavnom koriste modeli protoka 1:1 i N:1. Model 1:1 se koristi u (POSIX tokovi) i , i podrazumijeva direktno mapiranje niti u korisničkom prostoru u nit (jedinicu planiranja izvršenja) na nivou kernela. Model N:1 implementiran u , donosi dispečiranje niti u korisnički prostor i omogućava da se N niti u korisničkom prostoru vežu za jednu nit u kernelu, bez da kernel ima znanje o korisničkim nitima.
Glavni nedostatak modela 1:1 je veliki troškovi prebacivanja konteksta između kernela i korisničkog prostora. Model N:1 rješava ovaj problem, ali stvara novi - budući da je nit u kernelu nedjeljiva jedinica planiranja izvršenja, korisničke niti vezane za jednu nit u kernelu operativnog sistema ne mogu se proširivati preko jezgara CPU-a i završiti vezane za jedno CPU jezgro.
M:N model je hibridan i eliminiše sve gore opisane nedostatke mapiranjem N niti u korisničkom prostoru u M niti u jezgru OS-a, što omogućava i smanjenje troškova prebacivanja konteksta i osiguravanje skaliranja preko CPU jezgara. Cijena ove opcije je velika složenost implementacije planera niti u korisnički prostor i potreba za mehanizmima za koordinaciju akcija sa planerom kernela.

izvor: opennet.ru
