Microsoft розкриває, як працює її підсистема Windows 10 Linux

 Баш на 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. Одним із інтерфейсів ядра, яке воно виставляє, є системні виклики (syscalls). Системний виклик - це послуга, що надається ядром і яку можна викликати з користувацького режиму. Як ядро ​​Linux, так і ядро ​​Windows NT виставляють кілька сотень системних викликів у користувацький режим, але вони мають різну семантику і, як правило, безпосередньо не сумісні. Наприклад, ядро ​​Linux включає такі речі, як fork, open і kill, тоді як ядро ​​Windows NT має порівнянні NtCreateProcess, NtOpenFile та NtTerminateProcess.

Підсистема Windows для Linux включає драйвери режиму ядра (lxss.sys та lxcore.sys), які відповідають за обробку запитів системних викликів Linux у координації з ядром Windows NT. Драйвери не містять коду з ядра Linux, але є натомість реалізацією інтерфейсів ядра, сумісних з Linux. У рідному Linux, коли syscall створюється з виконуваного файлу в режимі користувача, він обробляється ядром Linux. У WSL, коли syscall робиться з того самого виконуваного файлу, ядро ​​Windows NT пересилає запит до lxcore.sys. Там, де це можливо, lxcore.sys переводить системний виклик Linux на еквівалентний виклик Windows NT, який, у свою чергу, робить важкі дії.

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

Якщо вам цікаво, як розвивається взаємодія Linux - Windows, перейдіть до блогу Microsoft. Команда пообіцяла, що після цього з’явиться більше публікацій у цій темі.

ПОВ'ЯЗАНІ ІСТОРІЇ, ЯКІ ВАМ ПОТРІБНО ПЕРЕВІРИТИ:

  • Користувачі Linux повідомляють про проблеми “Навушники перестали працювати в Windows 8.1”
  • Microsoft та Canonical приносять Bash до Windows 10 на Build 2016
  • Мюнхен розпочинає розповсюдження безкоштовних компакт-дисків Ubuntu для користувачів Windows XP
Корпорація Майкрософт підтримує програми з графічним інтерфейсом Linux для Windows 10

Корпорація Майкрософт підтримує програми з графічним інтерфейсом Linux для Windows 10Microsoft Build 2020підсистема Linux для Windows

Для тих, хто не знайомий з WSL, підсистема дозволяє користувачам Windows запускати власні, немодифіковані інструменти командного рядка та додатки Linux безпосередньо в Windows, подібно до того, як ...

Читати далі
Microsoft розкриває, як працює її підсистема Windows 10 Linux

Microsoft розкриває, як працює її підсистема Windows 10 Linuxпідсистема Linux для Windows

 Баш на Ubuntu в Windows дозволяє виконувати вхідні двійкові файли Linux ELF64 у Windows через підсистему Windows для Linux (WSL). Хоча багато людей були шоковані анонсом Bash on Ubuntu, варто згад...

Читати далі
Як отримати доступ до файлів у підсистемі Windows для Linux

Як отримати доступ до файлів у підсистемі Windows для LinuxWindows 10підсистема Linux для WindowsБаш

Щоб вирішити різні проблеми з ПК, ми рекомендуємо DriverFix:Це програмне забезпечення буде підтримувати ваші драйвери та працювати, тим самим захищаючи вас від поширених помилок комп’ютера та неспр...

Читати далі