Microsoft afslører, hvordan dets Windows 10 linux-undersystem fungerer

Video: How to Get Microsoft Office Free for Windows , MacOS & Linux 💻💻 5 Best Free Alternatives ! 2024

Video: How to Get Microsoft Office Free for Windows , MacOS & Linux 💻💻 5 Best Free Alternatives ! 2024
Anonim

Bash på Ubuntu på Windows gør det muligt for oprindelige Linux ELF64-binære filer at køre på Windows via Windows Subsystem for Linux (WSL). Selvom mange mennesker blev chokeret over Bash på Ubuntu-meddelelsen, er det værd at nævne, at det åbner nye døre til kompatibilitet mellem forskellige operativsystemer. Microsoft tager endnu et skridt fremad og afslører, hvordan dens WSL fungerer, så vi bedre kan forstå, hvordan de to systemer kommunikerer med hinanden.

WSL blev oprettet af Microsoft Windows Kernel-teamet og indeholder både brugertilstand og kernetilstandskomponenter. Mere specifikt er systemet sammensat af:

  • en brugertilstand session manager-service, der håndterer Linux-instansens livscyklus
  • Pico-udbyderdrivere (lxss.sys, lxcore.sys), hvis rolle er at efterligne en Linux-kerne ved at oversætte Linux-syscalls
  • Pico behandler vært for den umodificerede brugertilstand Linux (f.eks. / Bin / bash).

Forbindelsen mellem de tre komponenter er beskrevet som følger:

Det er mellemrummet mellem Linux-binærerne med brugertilstand og Windows-kernekomponenterne, hvor magien sker. Ved at placere umodificerede Linux-binære filer i Pico-processer muliggør vi, at Linux-systemopkald dirigeres til Windows-kernen. Drivere til lxss.sys og lxcore.sys oversætter Linux-systemopkaldene til NT API'er og emulerer Linux-kernen.

Den største udfordring i processen er at få de to systemer til at arbejde sammen:

WSL udfører umodificerede Linux ELF64-binære filer ved at virtualisere en Linux-kerneinterface oven på Windows NT-kernen. En af kerneinterfacerne, som den udsætter, er systemopkald (syscalls). En syscall er en tjeneste, der leveres af kernen, der kan kaldes fra brugertilstand. Både Linux-kernen og Windows NT-kernen udsætter flere hundrede syscalls for brugertilstand, men de har forskellige semantik og er generelt ikke direkte kompatible. For eksempel inkluderer Linux-kernen ting som gaffel, åben og dræb, mens Windows NT-kernen har den sammenlignelige NtCreateProcess, NtOpenFile og NtTerminateProcess.

Windows-subsystemet til Linux inkluderer kerneindstillingsdrivere (lxss.sys og lxcore.sys), der er ansvarlige for håndtering af Linux-systemopkaldsanmodninger i koordinering med Windows NT-kernen. Driverne indeholder ikke kode fra Linux-kernen, men er i stedet en renrumsimplementering af Linux-kompatible kernegrænseflader. På oprindeligt Linux, når et syscall laves fra en eksekverbar brugertilstand, håndteres det af Linux-kernen. Når WSL oprettes fra den samme eksekverbare Windows NT-kerne, videresendes anmodningen til lxcore.sys. Hvor det er muligt oversætter lxcore.sys Linux-syscall til det tilsvarende Windows NT-opkald, der igen gør den tunge løft.

Under hensyntagen til Microsofts interesse i open source-platforme, spekulerede mange på, om tech-giganten skulle erhverve store Linux-fokuserede virksomheder som Canonical, firmaet bag Ubuntu-operativsystemet. Selvom Microsoft og Canonical samarbejdede om open source-software, fremsatte hverken nogen kommentarer til denne mulighed.

Hvis du er interessant i, hvordan Linux - Windows-interaktionen udvikler sig, skal du gå til Microsofts blog. Holdet lovede, at flere blogindlæg om dette emne ville følge.

Microsoft afslører, hvordan dets Windows 10 linux-undersystem fungerer