Microsoft odhaluje, jak funguje jeho linuxový subsystém Windows 10

Video: WSL 2: Getting started 2024

Video: WSL 2: Getting started 2024
Anonim

Bash na Ubuntu na Windows umožňuje nativní binární soubory Linux ELF64 běžet na Windows prostřednictvím Windows subsystému pro Linux (WSL). Přestože mnoho lidí bylo šokováno oznámením Bash na Ubuntu, stojí za zmínku, že otevírá nové dveře pro kompatibilitu mezi různými operačními systémy. Microsoft udělá další krok vpřed a odhalí, jak funguje jeho WSL, abychom mohli lépe porozumět tomu, jak oba systémy spolu komunikují.

WSL byl vytvořen týmem jádra systému Microsoft Windows a obsahuje komponenty uživatelského režimu i jádra. Konkrétněji se systém skládá z:

  • služba správce relací uživatelského režimu zpracovávající životní cyklus instance Linux
  • Ovladače poskytovatele Pico (lxss.sys, lxcore.sys), jejichž úlohou je emulovat linuxové jádro překladem linuxových syscalls
  • Pico procesy hostující nemodifikovaný uživatelský režim Linux (např. / Bin / bash).

Spojení mezi těmito třemi komponenty je popsáno takto:

Je to mezera mezi uživatelským režimem Linuxových binárních souborů a komponentami jádra Windows, kde se magie odehrává. Umístěním neupravených linuxových binárních souborů do procesů Pico umožňujeme směrování systémových volání systému Linux do jádra Windows. Ovladače lxss.sys a lxcore.sys převádějí volání systému Linux do rozhraní API NT a emulují jádro systému Linux.

Hlavní výzvou v tomto procesu je, aby oba systémy spolupracovaly:

WSL provádí nemodifikované binární soubory Linux ELF64 virtualizací rozhraní jádra systému Linux na jádru systému Windows NT. Jedním z rozhraní jádra, které vystavuje, jsou systémová volání (syscalls). Syscall je služba poskytovaná jádrem, kterou lze volat z uživatelského režimu. Jak jádro Linux, tak jádro Windows NT vystavují uživatelskému režimu několik stovek syscallů, ale mají odlišnou sémantiku a obecně nejsou přímo kompatibilní. Například jádro Linux obsahuje věci jako vidlice, otevřené a zabíjející, zatímco jádro Windows NT má srovnatelné NtCreateProcess, NtOpenFile a NtTerminateProcess.

Subsystém Windows pro Linux obsahuje ovladače režimu jádra (lxss.sys a lxcore.sys), které jsou zodpovědné za zpracování požadavků na systémové volání systému Linux v koordinaci s jádrem Windows NT. Ovladače neobsahují kód z linuxového jádra, ale místo toho jsou implementací rozhraní jádra kompatibilních s Linuxem v čisté místnosti. V nativním systému Linux, když je syscall vytvořen z spustitelného režimu uživatele, zpracovává se jádro systému Linux. Na serveru WSL, když je vytvořen systémový hovor ze stejného spustitelného souboru, jádro Windows NT předá požadavek lxcore.sys. Pokud je to možné, lxcore.sys překládá linuxový syscall na ekvivalentní volání Windows NT, které zase provede těžké zvedání.

Když vezmeme v úvahu zájem Microsoftu na platformách s otevřeným zdrojovým kódem, mnoho lidí přemýšlelo, zda by technický gigant měl získat významné společnosti zaměřené na Linux, jako je Canonical, společnost za operačním systémem Ubuntu. Přestože společnosti Microsoft a Canonical spolupracovaly na softwaru s otevřeným zdrojovým kódem, žádná z nich k této možnosti nevydala žádné připomínky.

Pokud vás zajímá, jak se vyvíjí interakce Linux - Windows, přejděte na blog společnosti Microsoft. Tým slíbil, že bude následovat více blogových příspěvků na toto téma.

Microsoft odhaluje, jak funguje jeho linuxový subsystém Windows 10