Microsoft раскрывает, как работает ее подсистема Linux 10 Linux

Видео: Делаем СУПЕР-ДЕНДИ DIY - Linux, USB, HDMI, 64 GB... Всемогущая ретроконсоль! 2024

Видео: Делаем СУПЕР-ДЕНДИ DIY - Linux, USB, HDMI, 64 GB... Всемогущая ретроконсоль! 2024
Anonim

Bash на Ubuntu в Windows позволяет двоичным файлам Linux ELF64 работать в Windows через подсистему Windows для Linux (WSL). Хотя многие люди были шокированы объявлением Bash on Ubuntu, стоит упомянуть, что оно открывает новые двери для совместимости между различными операционными системами. Microsoft делает еще один шаг вперед и показывает, как работает WSL, чтобы мы могли лучше понять, как эти две системы взаимодействуют друг с другом.

WSL был создан командой ядра Microsoft Windows и содержит компоненты пользовательского режима и режима ядра. В частности, система состоит из:

  • служба менеджера сеансов в пользовательском режиме, обрабатывающая жизненный цикл экземпляра Linux
  • Драйверы поставщика Pico (lxss.sys, lxcore.sys), роль которых заключается в эмуляции ядра Linux путем перевода системных вызовов Linux
  • Pico обрабатывает хостинг неизмененного пользовательского режима Linux (например, / bin / bash).

Связь между тремя компонентами описывается следующим образом:

Это пространство между бинарными файлами Linux пользовательского режима и компонентами ядра Windows, где происходит волшебство. Помещая немодифицированные двоичные файлы Linux в процессы Pico, мы позволяем системным вызовам Linux направляться в ядро ​​Windows. Драйверы lxss.sys и lxcore.sys переводят системные вызовы Linux в NT API и эмулируют ядро ​​Linux.

Основная задача в этом процессе - заставить обе системы работать вместе:

WSL выполняет неизмененные двоичные файлы Linux ELF64 путем виртуализации интерфейса ядра Linux поверх ядра Windows NT. Один из предоставляемых им интерфейсов ядра - это системные вызовы (системные вызовы). Системный вызов - это сервис, предоставляемый ядром, который можно вызвать из пользовательского режима. Как ядро ​​Linux, так и ядро ​​Windows NT предоставляют несколько сотен системных вызовов для пользовательского режима, но они имеют разную семантику и, как правило, напрямую не совместимы. Например, ядро ​​Linux содержит такие вещи, как fork, open и kill, в то время как ядро ​​Windows NT имеет сопоставимые NtCreateProcess, NtOpenFile и NtTerminateProcess.

Подсистема Windows для Linux включает драйверы режима ядра (lxss.sys и lxcore.sys), которые отвечают за обработку запросов системных вызовов Linux в координации с ядром Windows NT. Драйверы не содержат код из ядра Linux, а представляют собой чистую реализацию Linux-совместимых интерфейсов ядра. В собственном Linux, когда системный вызов сделан из исполняемого файла пользовательского режима, он обрабатывается ядром Linux. В WSL, когда системный вызов сделан из того же исполняемого файла, ядро ​​Windows NT перенаправляет запрос в lxcore.sys. Где это возможно, lxcore.sys переводит системный вызов Linux в эквивалентный вызов Windows NT, который, в свою очередь, выполняет тяжелую работу.

Принимая во внимание интерес Microsoft к платформам с открытым исходным кодом, многие задавались вопросом, должен ли технологический гигант приобретать крупные компании, ориентированные на Linux, такие как Canonical, компания, работающая за операционной системой Ubuntu. Хотя Microsoft и Canonical сотрудничали в области программного обеспечения с открытым исходным кодом, ни один из них не комментировал эту возможность.

Если вам интересно, как развивается взаимодействие Linux и Windows, перейдите в блог Microsoft. Команда пообещала, что последует больше постов в блоге на эту тему.

Microsoft раскрывает, как работает ее подсистема Linux 10 Linux