Microsoft razkriva, kako deluje njegov podsistem Windows 10 linux

Video: Windows 10 loves Ubuntu – Запуск Ubuntu в Windows 10 Windows Store 2024

Video: Windows 10 loves Ubuntu – Запуск Ubuntu в Windows 10 Windows Store 2024
Anonim

Bash on Ubuntu v operacijskem sistemu Windows omogoča, da se izvorni dvostranski Linux ELF64 zažene v operacijskem sistemu Windows prek podsistema Windows za Linux (WSL). Čeprav je marsikoga šokiralo napoved Bash on Ubuntu, je treba omeniti, da odpira nova vrata za združljivost različnih operacijskih sistemov. Microsoft naredi še korak naprej in razkrije, kako deluje njegov WSL, da bomo lažje razumeli, kako oba sistema komunicirata drug z drugim.

WSL je ustvarila ekipa Microsoft Windows Kernel in vsebuje tako uporabniški način kot komponente jedrnega načina. Natančneje, sistem je sestavljen iz:

  • storitev upravitelja seje uporabniškega načina, ki obravnava življenjski cikel primerka Linux
  • Gonilniki ponudnikov Pico (lxss.sys, lxcore.sys), katerih vloga je posnemati Linuxno jedro s prevajanjem sistemskih klicev Linux
  • Pico obdeluje nespremenjen uporabniški način Linux (npr. / Bin / bash).

Povezava med tremi komponentami je opisana na naslednji način:

To je prostor med binarnimi datotekami uporabniškega načina Linux in komponentami jedra Windows, kjer se čarovnija zgodi. Z nameščanjem nespremenjenih binarnih datotek Linuxa v procese Pico omogočimo, da se sistemski klici Linux usmerijo v jedro sistema Windows. Gonilniki lxss.sys in lxcore.sys prevedejo sistemske klice Linuxa v API-je NT in posnemajo jedro Linuxa.

Glavni izziv postopka je, da oba sistema delujeta skupaj:

WSL izvaja nespremenjene binarne datoteke Linux ELF64 z virtualizacijo vmesnika jedra Linux na vrhu jedra Windows NT. Eden od vmesnikov jedra, ki ga izpostavi, so sistemski klici (syscalls). Syscall je storitev, ki jo nudi jedro, ki jo lahko pokličete iz uporabniškega načina. Tako jedro Linux kot jedro Windows NT v uporabniškem načinu izpostavijo več sto syscall-ov, vendar imajo različno semantiko in na splošno niso neposredno združljivi. Na primer, jedro Linux vključuje stvari, kot so fork, open in kill, medtem ko ima jedro Windows NT primerljive NtCreateProcess, NtOpenFile in NtTerminateProcess.

Podsistem Windows za Linux vključuje gonilnike načina jedra (lxss.sys in lxcore.sys), ki so odgovorni za obravnavanje zahtev sistemskih klicev Linux v koordinaciji z jedrom Windows NT. Gonilniki ne vsebujejo kode iz Linuxovega jedra, temveč so namesto tega v čisto sobo izvedeni vmesniki jedra, ki so združljivi z Linuxom. V izvornem Linuxu, ko je sistemski klic narejen iz uporabniškega načina, ki ga je mogoče opraviti, ga upravlja Linuxovo jedro. V sistemu WSL, ko je sistemski klic narejen iz istega izvedljivega jedra Windows NT, zahtevo posreduje lxcore.sys. Kadar je mogoče, lxcore.sys sistemski klic sistema Linux prevede v enakovredni klic Windows NT, kar posledično povzroči težko dviganje.

Ob upoštevanju Microsoftovega zanimanja za odprtokodne platforme so se mnogi spraševali, ali naj tehnološki velikan pridobi večje družbe, usmerjene v Linux, kot je Canonical, podjetje, ki stoji za operacijskim sistemom Ubuntu. Čeprav sta Microsoft in Canonical sodelovala pri odprtokodni programski opremi, nobene pripombe o tej možnosti.

Če vas zanima, kako se razvija interakcija Linux - Windows, pojdite na Microsoftov blog. Skupina je obljubila, da bo sledilo še več objav na tej temi.

Microsoft razkriva, kako deluje njegov podsistem Windows 10 linux