Microsoft atklāj, kā darbojas tās Windows 10 Linux apakšsistēma

Video: Will Microsoft turn Windows 10 into a yet another Linux distro? 2024

Video: Will Microsoft turn Windows 10 into a yet another Linux distro? 2024
Anonim

Bash on Ubuntu uz Windows ļauj vietējiem Linux ELF64 binārajiem failiem darboties operētājsistēmā Windows, izmantojot Windows Linux apakšsistēmu (WSL). Lai arī daudzus cilvēkus šokēja Bash on Ubuntu paziņojums, ir vērts pieminēt, ka tas paver jaunas durvis dažādu operētājsistēmu savietojamībai. Microsoft sper vēl vienu soli uz priekšu un atklāj, kā darbojas tā WSL, lai mēs varētu labāk izprast, kā abas sistēmas sazinās viena ar otru.

WSL izveidoja Microsoft Windows kodola komanda, un tajā ir gan lietotāja režīma, gan kodola režīma komponenti. Konkrētāk, sistēmu veido:

  • lietotāja režīma sesijas pārvaldnieka pakalpojums, kas apstrādā Linux gadījumu dzīves ciklu
  • Pico nodrošinātāja draiveri (lxss.sys, lxcore.sys), kuru uzdevums ir līdzināties Linux kodolam, tulkojot Linux syscalls
  • Pico apstrādā mitināta lietotāja režīma Linux mitināšanu (piemēram, / bin / bash).

Savienojums starp trim komponentiem ir aprakstīts šādi:

Maģija notiek telpā starp lietotāja režīma bināro bināro failu un Windows kodola komponentiem. Ievietojot nemodificētus Linux bināros failus Pico procesos, mēs ļaujam Linux sistēmas zvanus novirzīt Windows kodolā. Lxss.sys un lxcore.sys draiveri tulko Linux sistēmas izsaukumus NT API un līdzinās Linux kodolam.

Galvenais procesa izaicinājums ir panākt, lai abas sistēmas darbotos kopā:

WSL izpilda nemodificētus Linux ELF64 bināros failus, virtualizējot Linux kodola saskarni virs Windows NT kodola. Viena no kodola saskarnēm, kuras tā pakļauj, ir sistēmas zvani (syscalls). Sistēmas izsaukums ir kodola sniegts pakalpojums, kuru var izsaukt no lietotāja režīma. Gan Linux kodola, gan Windows NT kodola lietotāja režīmā pakļauj vairākus simtus sistēmu izsaukumu, taču tiem ir atšķirīga semantika un parasti tie nav tieši savietojami. Piemēram, Linux kodolā ietilpst tādas lietas kā dakša, atvērta un nogalināta, kamēr Windows NT kodolā ir salīdzināmi NtCreateProcess, NtOpenFile un NtTerminateProcess.

Windows operētājsistēmas Linux apakšsistēmā ir iekļauti kodola režīma draiveri (lxss.sys un lxcore.sys), kas ir atbildīgi par Linux sistēmas zvanu pieprasījumu apstrādi, koordinējot tos ar Windows NT kodolu. Draiveri nesatur kodu no Linux kodola, bet tā vietā ir ar Linux saderīgu kodola saskarņu ieviešana tīrā telpā. Vietējā Linux versijā, kad sistēmas izsaukums tiek veikts no izpildāmā lietotāja režīma, to apstrādā Linux kodols. WSL, kad no tā paša izpildāmā faila tiek izveidots sistēmas izsaukums, Windows NT kodols pārsūta pieprasījumu vietnei lxcore.sys. Kur iespējams, lxcore.sys tulko Linux syscall uz līdzvērtīgu Windows NT izsaukumu, kas savukārt rada smago celšanu.

Ņemot vērā Microsoft interesi par atvērtā pirmkoda platformām, daudzi cilvēki domāja, vai tehnoloģiju gigantam vajadzētu iegādāties lielākus uz Linux orientētus uzņēmumus, piemēram, Canonical, uzņēmumu, kas atrodas aiz Ubuntu operētājsistēmas. Lai gan Microsoft un Canonical sadarbojās ar atvērtā pirmkoda programmatūru, neviena no tām neizsniedza komentārus par šo iespēju.

Ja jums ir interesanti, kā attīstās Linux un Windows mijiedarbība, dodieties uz Microsoft emuāru. Komanda solīja, ka sekos vairāk emuāru ierakstu par šo tēmu.

Microsoft atklāj, kā darbojas tās Windows 10 Linux apakšsistēma