Microsoft revela cómo funciona su subsistema de Windows 10 Linux

Video: Linux & Windows en un mismo Sistema, Windows Subsystem for Linux (WSL), Ubuntu & bash 2024

Video: Linux & Windows en un mismo Sistema, Windows Subsystem for Linux (WSL), Ubuntu & bash 2024
Anonim

Bash en Ubuntu en Windows permite que los binarios nativos de Linux ELF64 se ejecuten en Windows a través del Subsistema de Windows para Linux (WSL). Aunque muchas personas se sorprendieron por el anuncio de Bash en Ubuntu, vale la pena mencionar que abre nuevas puertas para la compatibilidad entre diferentes sistemas operativos. Microsoft da un paso más y revela cómo funciona su WSL para que podamos entender mejor cómo se comunican los dos sistemas entre sí.

WSL fue creado por el equipo Kernel de Microsoft Windows y contiene componentes de modo de usuario y modo de núcleo. Más específicamente, el sistema se compone de:

  • un servicio de administrador de sesión en modo de usuario que maneja el ciclo de vida de la instancia de Linux
  • Controladores de proveedores de Pico (lxss.sys, lxcore.sys) cuya función es emular un kernel de Linux traduciendo llamadas de sistema de Linux
  • Pico procesa el alojamiento del modo de usuario Linux no modificado (por ejemplo, / bin / bash).

La conexión entre los tres componentes se describe a continuación:

Es el espacio entre los binarios de Linux en modo de usuario y los componentes del kernel de Windows donde ocurre la magia. Al colocar los binarios de Linux no modificados en los procesos de Pico, permitimos que las llamadas al sistema de Linux se dirijan al núcleo de Windows. Los controladores lxss.sys y lxcore.sys traducen las llamadas del sistema Linux a las API de NT y emulan el kernel de Linux.

El principal desafío en el proceso es hacer que los dos sistemas trabajen juntos:

WSL ejecuta binarios ELF64 de Linux no modificados mediante la virtualización de una interfaz de kernel de Linux en la parte superior del kernel de Windows NT. Una de las interfaces del núcleo que expone son las llamadas al sistema (syscalls). Una syscall es un servicio proporcionado por el núcleo al que se puede llamar desde el modo de usuario. Tanto el kernel de Linux como el kernel de Windows NT exponen varios cientos de llamadas al sistema al modo de usuario, pero tienen una semántica diferente y generalmente no son directamente compatibles. Por ejemplo, el kernel de Linux incluye cosas como fork, open y kill, mientras que el kernel de Windows NT tiene el NtCreateProcess, NtOpenFile y NtTerminateProcess comparables.

El Subsistema de Windows para Linux incluye controladores en modo kernel (lxss.sys y lxcore.sys) que son responsables de manejar las solicitudes de llamadas del sistema Linux en coordinación con el kernel de Windows NT. Los controladores no contienen código del kernel de Linux, sino que son una implementación de sala limpia de interfaces de kernel compatibles con Linux. En Linux nativo, cuando un syscall se realiza desde un ejecutable en modo de usuario, es manejado por el kernel de Linux. En WSL, cuando se realiza una llamada al sistema desde el mismo ejecutable, el núcleo de Windows NT reenvía la solicitud a lxcore.sys. Cuando es posible, lxcore.sys traduce la llamada al sistema de Linux a la llamada equivalente de Windows NT que a su vez hace el trabajo pesado.

Teniendo en cuenta el interés de Microsoft en las plataformas de código abierto, muchas personas se preguntaron si el gigante tecnológico debería adquirir las principales compañías centradas en Linux, como Canonical, la compañía detrás del sistema operativo Ubuntu. Aunque Microsoft y Canonical cooperaron en el software de código abierto, ninguno emitió ningún comentario sobre esta posibilidad.

Si le interesa cómo evoluciona la interacción Linux - Windows, vaya al blog de Microsoft. El equipo prometió que seguirían más publicaciones de blog sobre este tema.

Microsoft revela cómo funciona su subsistema de Windows 10 Linux