Windows 10でLinuxのプログラムが改変なしにそのまま動かせるLinux互換環境「Windows Subsystem for Linux(WSL)」。Linuxプログラムに対してWindowsカーネルをあたかもLinuxカーネルのように見せる仕組みだ。その互換性は、WSLがどこまでLinuxカーネルとして振る舞えるかにかかっている。

 WSLは、Linuxの実行ファイルをWindowsで直接実行する。WSLで動作するLinuxディストリビューションの「Ubuntu」や「openSUSE」を構成するプログラムは、オリジナルのそれと同じだ。

 しかし当然、Linuxの実行ファイルが呼び出すOSの機能、いわゆるシステムコールは、Windowsのそれとは異なる。そこでLinuxプログラムによるシステムコールの呼び出しを検知し、Linuxプログラムが要求する形式で処理結果を返す仕組みがWindows側に必要になる。

 このシステムコールの違いを吸収するのが、WSLの実体と言える「lxss.sys」だ。

Windows Subsystem for Linuxのシステムコール(<a href="https://blogs.msdn.microsoft.com/wsl/2016/06/08/wsl-system-calls/" target="_blank">公式ブログ記事</a>を基に作成)
Windows Subsystem for Linuxのシステムコール(公式ブログ記事を基に作成)
[画像のクリックで拡大表示]

 WSLを有効にしたWindows 10上でLinuxプログラムを実行すると、Windowsカーネルはそのプログラムが要求するシステムコールをlxss.sysドライバに渡す。lxss.sysは、Windowsカーネルが持つ同等のシステムコールを呼び出すか、自身が持つLinux互換のシステムコールで処理する。