Microsoft otkriva kako radi njegov podsistem Windows 10 Linux

Video: Как установить, настроить и использовать подсистему Linux в Windows 10. Обновленный Windows Terminal 2024

Video: Как установить, настроить и использовать подсистему Linux в Windows 10. Обновленный Windows Terminal 2024
Anonim

Bash on Ubuntu u sustavu Windows omogućuje izvornim Linux ELF64 binarnim datotekama da se pokreću u sustavu Windows putem Windows podsistema za Linux (WSL). Iako je mnoge ljude šokirala najava Bash on Ubuntu, vrijedi spomenuti da ona otvara nova vrata za kompatibilnost između različitih operativnih sustava. Microsoft čini još jedan korak naprijed i otkriva kako njegov WSL funkcionira kako bismo mogli bolje razumjeti kako dva sustava komuniciraju jedan s drugim.

WSL je kreirao tim sustava Microsoft Windows Kernel i sadrži i korisnički mod i komponente načina kernel. Točnije, sustav se sastoji od:

  • usluga upravljanja sesijem korisničkog načina koja upravlja životnim ciklusom instancije Linux
  • Upravljači Pico usluga (lxss.sys, lxcore.sys) čija je uloga da oponašaju Linux kernel prevođenjem Linux syscalls
  • Pico obrađuje nepromijenjeni korisnički mod Linux (npr. / Bin / bash).

Veza između tri komponente je opisana na sljedeći način:

To je prostor između korisničkih načina Linux binarnih datoteka i komponenti Windows kernel u kojima se događa magija. Postavljanjem nemodificiranih Linux binarnih datoteka u Pico procese omogućavamo usmjeravanje Linux sustava u Windows kernel. Upravljački programi lxss.sys i lxcore.sys prevode pozive sustava Linux u NT API i oponašaju Linux kernel.

Glavni je izazov u tom procesu povezivanje dvaju sustava:

WSL izvršava nemodificirane Linux ELF64 binarne datoteke virtualizacijom Linux kernel sučelja na vrhu Windows NT kernela. Jedno od sučelja kernela koje je razotkrilo jesu sistemski pozivi (syscalls). Syscall je usluga koju pruža kernel koja se može nazvati iz korisničkog načina. I Linux kernel i Windows NT kernel izlažu nekoliko stotina syscalls korisničkom načinu rada, ali imaju različitu semantiku i obično nisu izravno kompatibilni. Na primjer, Linux kernel uključuje stvari poput fork, open i kill dok Windows NT kernel ima usporedive NtCreateProcess, NtOpenFile i NtTerminateProcess.

Windows podsustav za Linux uključuje upravljačke programe za način jezgre (lxss.sys i lxcore.sys) koji su odgovorni za rješavanje zahtjeva za sistemske pozive u Linuxu u koordinaciji s Windows NT kernelom. Upravljački programi ne sadrže kôd iz Linux kernela, već su implementacija u čistu sobu Linux sukladnih kernel sučelja. Na izvornom Linuxu, kada je syscall napravljen iz izvršnog korisničkog načina, njime upravlja Linux kernel. Na WSL-u, kada je syscall napravljen od istog izvršnog jezgra Windows NT, prosljeđuje zahtjev na lxcore.sys. Lxcore.sys gdje je to moguće, pretvara syscall Linuxa na ekvivalentni Windows NT poziv, što zauzvrat podiže teška dizanja.

Uzimajući u obzir Microsoftov interes za platforme otvorenog koda, mnogi su se pitali treba li tehnološki gigant steći velike Linux fokusirane kompanije, poput Canonicala, kompanije koja stoji iza Ubuntu operativnog sustava. Iako su Microsoft i Canonical surađivali na softveru otvorenog koda, nisu poslali komentare na ovu mogućnost.

Ako vas zanima kako se razvija interakcija Linux - Windows, idite na Microsoftov blog. Tim je obećao da će uslijediti više postova na blogovima na ovu temu.

Microsoft otkriva kako radi njegov podsistem Windows 10 Linux