Microsoft paljastaa, kuinka sen Windows 10 Linux-alijärjestelmä toimii

Video: Week 2, continued 2024

Video: Week 2, continued 2024
Anonim

Bash on Ubuntu Windowsissa mahdollistaa natiivien Linux ELF64 -binaarien ajamisen Windowsissa Windowsin Linux-järjestelmän (WSL) kautta. Vaikka Bash Ubuntun ilmoituksesta järkytti monia ihmisiä, on syytä mainita, että se avaa uusia ovia eri käyttöjärjestelmien yhteensopivuudelle. Microsoft ottaa uuden askeleen eteenpäin ja paljastaa, kuinka sen WSL toimii, jotta ymmärrämme paremmin, kuinka nämä kaksi järjestelmää kommunikoivat keskenään.

WSL: n on luonut Microsoft Windows Kernel -tiimi, ja se sisältää sekä käyttäjä- että ytimen moodin komponentit. Tarkemmin sanottuna järjestelmä koostuu:

  • käyttäjän moodin istunnonhallintapalvelu, joka käsittelee Linux-ilmentymän elinkaarta
  • Picon palveluntarjoajat (lxss.sys, lxcore.sys), joiden tehtävänä on jäljitellä Linux-ydintä kääntämällä Linux-puhelut
  • Pico prosessoi muokkaamattoman käyttötilan Linuxia (esim. / Bin / bash).

Kolmen komponentin välinen yhteys kuvataan seuraavasti:

Taika tapahtuu käyttäjän tilan Linux-binaarien ja Windows-ytimen komponenttien välillä. Asettamalla modifioimattomia Linux-binaareja Pico-prosesseihin annamme mahdollisuuden Linux-järjestelmäpuhelujen ohjaamiseen Windows-ytimeen. Lxss.sys- ja lxcore.sys-ohjaimet kääntävät Linux-järjestelmän kutsut NT-sovellusliittymiksi ja jäljittelevät Linux-ydintä.

Prosessin päähaaste on saada kaksi järjestelmää toimimaan yhdessä:

WSL suorittaa modifioimattomia Linux ELF64 -binaareja virtualisoimalla Linux-ytimen käyttöliittymän Windows NT-ytimen päälle. Yksi ytimen rajapinnoista, joita se paljastaa, ovat järjestelmäpuhelut (syscalls). Järjestelmäsoitto on ytimen tarjoama palvelu, jota voidaan kutsua käyttäjätilasta. Sekä Linux-ydin että Windows NT -ydin paljastavat useita satoja järjestelmäsoittoja käyttäjätilaan, mutta niiden semantiikka on erilainen ja eivät yleensä ole suoraan yhteensopivia. Esimerkiksi Linux-ytimessä on esimerkiksi haarukka, avaa ja tappaa, kun taas Windows NT-ytimessä on vastaavat NtCreateProcess, NtOpenFile ja NtTerminateProcess.

Windowsin alajärjestelmä Linuxille sisältää ytimen moodiohjaimet (lxss.sys ja lxcore.sys), jotka vastaavat Linux-järjestelmän puhelupyyntöjen käsittelystä koordinoidusti Windows NT -ydimen kanssa. Ohjaimet eivät sisällä Linux-ytimen koodia, vaan ovat Linux-yhteensopivien ytimen rajapintojen puhdastilassa toteutusta. Natiivissa Linuxissa, kun järjestelmäkutsu tehdään käyttäjän moodin suoritettavasta ohjelmasta, Linux-ydin käsittelee sitä. WSL: ssä, kun järjestelmäsoitto tehdään samasta suoritettavasta, Windows NT -ydin välittää pyynnön lxcore.sys-sivulle. Jos mahdollista, lxcore.sys kääntää Linux-järjestelmän kutsun vastaavaan Windows NT -kutsuun, mikä puolestaan ​​tekee raskaan nostamisen.

Kun otetaan huomioon Microsoftin kiinnostus avoimen lähdekoodin alustoihin, monet ihmettelivät, pitäisikö tekniikan jättiläisen hankkia suuret Linux-keskittyneet yritykset, kuten Canonical, Ubuntu-käyttöjärjestelmän takana oleva yritys. Vaikka Microsoft ja Canonical tekivät yhteistyötä avoimen lähdekoodin ohjelmistojen kanssa, kumpikaan ei antanut kommentteja tästä mahdollisuudesta.

Jos olet mielenkiintoinen Linux - Windows-vuorovaikutuksen kehittymisessä, siirry Microsoftin blogiin. Ryhmä lupasi, että lisää aiheeseen liittyviä blogiviestejä seurataan.

Microsoft paljastaa, kuinka sen Windows 10 Linux-alijärjestelmä toimii