Microsoft dezvăluie cum funcționează subsistemul său linux Windows 10

Video: Установка Linux Ubuntu рядом с Windows 10 на компьютере с UEFI 2024

Video: Установка Linux Ubuntu рядом с Windows 10 на компьютере с UEFI 2024
Anonim

Bash on Ubuntu de pe Windows permite binarelor native ELF64 Linux să ruleze pe Windows prin subsistemul Windows pentru Linux (WSL). Deși multe persoane au fost șocate de anunțul Bash pe Ubuntu, merită menționat faptul că deschide noi uși pentru compatibilitatea între diferite sisteme de operare. Microsoft face un alt pas înainte și dezvăluie modul în care funcționează WSL, astfel încât să putem înțelege mai bine modul în care cele două sisteme comunică între ele.

WSL a fost creat de echipa Microsoft Windows Kernel și conține atât componente ale modului utilizator, cât și ale modului kernel. Mai precis, sistemul este compus din:

  • un serviciu manager de sesiune în modul utilizator care gestionează ciclul de viață al instanței Linux
  • Drivere Pico provider (lxss.sys, lxcore.sys) al căror rol este de a imita un kernel Linux prin traducerea de sisteme Linux
  • Pico procesează gazduirea modului de utilizator Linux nemodificat (de ex. / Bin / bash).

Conexiunea dintre cele trei componente este descrisă astfel:

Este spațiul dintre binarele Linux în modul utilizator și componentele nucleului Windows unde se întâmplă magia. Prin plasarea binarelor Linux nemodificate în procesele Pico, permitem apelurile sistemului Linux să fie direcționate către nucleul Windows. Driverele lxss.sys și lxcore.sys traduc apelurile sistemului Linux în API-uri NT și emulează nucleul Linux.

Principala provocare în acest proces este de a face ca cele două sisteme să lucreze împreună:

WSL execută binare ELF64 Linux nemodificate, virtualizând o interfață de nucleu Linux în partea superioară a nucleului Windows NT. Una dintre interfețele de kernel pe care le expune sunt apelurile de sistem (syscalls). Un syscall este un serviciu furnizat de kernel care poate fi apelat din modul utilizator. Atât kernel-ul Linux, cât și kernel-ul Windows NT expun câteva sute de sisteme în modul utilizator, dar au semantică diferită și în general nu sunt direct compatibile. De exemplu, kernel-ul Linux include lucruri precum furculița, deschiderea și uciderea în timp ce nucleul Windows NT are NtCreateProcess, NtOpenFile și NtTerminateProcess comparabile.

Subsistemul Windows pentru Linux include drivere de mod kernel (lxss.sys și lxcore.sys) care sunt responsabile pentru gestionarea cererilor de apeluri ale sistemului Linux în coordonare cu kernel-ul Windows NT. Driverele nu conțin cod de la kernel-ul Linux, ci sunt în schimb o implementare curată a interfețelor de kernel compatibile cu Linux. Pe Linux nativ, când un syscall este realizat dintr-un modul de executare a utilizatorului, acesta este gestionat de nucleul Linux. Pe WSL, când un syscall este făcut din același executabil, nucleul Windows NT transmite cererea către lxcore.sys. Acolo unde este posibil, lxcore.sys traduce sistemul de operare Linux la apelul echivalent Windows NT, care la rândul său face ridicarea grea.

Ținând cont de interesul Microsoft pentru platformele open-source, mulți oameni s-au întrebat dacă gigantul tehnologic ar trebui să achiziționeze companii majore bazate pe Linux, cum ar fi Canonical, compania din spatele sistemului de operare Ubuntu. Deși Microsoft și Canonical au cooperat la software-ul open-source, niciuna nu a emis comentarii cu privire la această posibilitate.

Dacă sunteți interesant în cum evoluează interacțiunea Linux - Windows, accesați Blogul Microsoft. Echipa a promis că vor urma mai multe postări pe acest subiect.

Microsoft dezvăluie cum funcționează subsistemul său linux Windows 10