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

Відео: РС DONI ft Ð¢Ð¸Ð¼Ð°Ñ Ð¸ Ð Ð¾Ñ Ð¾Ð´Ð° Ð Ñ ÐµÐ¼Ñ ÐµÑ Ð° клипа, 2014 2024

Відео: РС DONI ft Ð¢Ð¸Ð¼Ð°Ñ Ð¸ Ð Ð¾Ñ Ð¾Ð´Ð° Ð Ñ ÐµÐ¼Ñ ÐµÑ Ð° клипа, 2014 2024
Anonim

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

WSL була створена командою Microsoft Windows Kernel і містить як користувацький режим, так і компоненти режиму ядра. Більш конкретно, система складається з:

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

Зв'язок між трьома компонентами описаний так:

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

Головна проблема в тому, щоб змусити дві системи працювати разом:

WSL виконує немодифіковані бінарні файли ELF64 Linux, віртуалізуючи інтерфейс ядра Linux поверх ядра Windows NT. Один з інтерфейсів ядра, який він відкриває, - це системні виклики (syscalls). Syscall - це послуга, що надається ядром, яку можна викликати в режимі користувача. І ядро ​​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 розкриває, як працює її підсистема Windows 10 Linux