Microsoft odhaľuje, ako funguje jeho linuxový subsystém Windows 10

Video: Rock Pi X: Low-Cost x86 Windows & Linux SBC 2024

Video: Rock Pi X: Low-Cost x86 Windows & Linux SBC 2024
Anonim

Systém Bash na systéme Ubuntu v systéme Windows umožňuje spustenie natívnych binárnych súborov systému Linux ELF64 v systéme Windows prostredníctvom subsystému Windows pre systém Linux (WSL). Aj keď veľa ľudí šokovalo oznámenie Bash o Ubuntu, stojí za zmienku, že otvára nové dvere pre kompatibilitu medzi rôznymi operačnými systémami. Spoločnosť Microsoft urobila ďalší krok vpred a odhaľuje, ako funguje jej WSL, aby sme lepšie porozumeli tomu, ako tieto dva systémy navzájom komunikujú.

WSL bol vytvorený tímom jadra systému Microsoft Windows a obsahuje komponenty užívateľského režimu aj režimu jadra. Konkrétnejšie sa systém skladá z:

  • služba správcu relácií užívateľského režimu, ktorá spracováva životný cyklus inštancie Linuxu
  • Ovládače poskytovateľa Pico (lxss.sys, lxcore.sys), ktorých úlohou je emulácia linuxového jadra prekladom linuxových syscallov
  • Pico procesy hosťujúce nemodifikovaný užívateľský režim Linux (napr. / Bin / bash).

Spojenie medzi týmito tromi komponentmi je opísané takto:

Je to priestor medzi Linuxovými binárnymi súbormi v užívateľskom režime a komponentmi jadra Windows, kde dochádza k mágii. Umiestnením nemodifikovaných binárnych súborov systému Linux do procesov spoločnosti Pico umožňujeme smerovanie systémových hovorov systému Linux do jadra systému Windows. Ovládače lxss.sys a lxcore.sys prekladajú volania systému Linux do rozhraní API NT a emulujú jadro systému Linux.

Hlavnou výzvou v tomto procese je, aby oba systémy spolupracovali:

WSL spúšťa nemodifikované binárne súbory systému ELF64 virtualizáciou rozhrania jadra systému Linux na jadre systému Windows NT. Jedným z rozhraní jadra, ktoré vystavuje, sú systémové volania (syscalls). Syscall je služba poskytovaná jadrom, ktorú je možné volať z užívateľského režimu. Linuxové jadro aj jadro Windows NT vystavujú užívateľskému režimu niekoľko stoviek syscallov, ale majú inú sémantiku a vo všeobecnosti nie sú priamo kompatibilné. Napríklad Linuxové jadro obsahuje veci ako vidlice, otvorené a zabíjajúce, zatiaľ čo jadro Windows NT má porovnateľné NtCreateProcess, NtOpenFile a NtTerminateProcess.

Subsystém Windows pre Linux obsahuje ovládače režimu jadra (lxss.sys a lxcore.sys), ktoré sú zodpovedné za spracovanie požiadaviek na systémové volania systému Linux v koordinácii s jadrom Windows NT. Ovládače neobsahujú kód z jadra systému Linux, ale namiesto toho sú implementáciou rozhraní jadra kompatibilných s operačným systémom Linux čistou miestnosťou. V natívnom Linuxe, keď je systémový hovor vytvorený z spustiteľného užívateľského režimu, spracúva ho jadro Linuxu. Na serveri WSL, keď sa systém syscall uskutoční z rovnakého spustiteľného súboru, jadro Windows NT postúpi žiadosť lxcore.sys. Pokiaľ je to možné, prekladá lxcore.sys linuxový syscall na ekvivalentné volanie systému Windows NT, ktoré zase robí ťažkú ​​operáciu.

Berúc do úvahy záujem Microsoftu o platformy s otvoreným zdrojovým kódom, mnoho ľudí si kladie otázku, či by technický gigant nemal získať významné spoločnosti zamerané na Linux, ako je Canonical, spoločnosť za operačným systémom Ubuntu. Hoci spoločnosti Microsoft a Canonical spolupracovali na softvéri s otvoreným zdrojovým kódom, k tejto možnosti nevydali žiadne pripomienky.

Ak vás zaujíma vývoj interakcie Linux - Windows, prejdite na blog spoločnosti Microsoft. Tím sľúbil, že bude nasledovať viac blogových príspevkov na túto tému.

Microsoft odhaľuje, ako funguje jeho linuxový subsystém Windows 10