
同社にはすでに同様の経験がありました。 Windows NTの元の概念(Windows 10のベース)は、そこに3つのサブシステム(ネイティブMS Win32、UNIX POSIX、およびIBM OS / 2)が存在することを暗示していました。 両方の最後のサブシステムは、Windows 2000からWindows XPへの変換につながる道のどこかで落ち、POSIX自体は、デフォルトでWindowsディストリビューションに存在する可能性なしに別のツールに移行しました。 同じことは、マイクロプロセッサアーキテクチャAlphaにも当てはまります。MicrosoftもWindows 2000のリリースでサポートを拒否しました。WindowsでLinuxサブシステムがどれだけ続くかは推測できます。
最初に、Windows 10カーネルのアーキテクチャとWindows NTの他のバージョンは、少なくとも適切なセマンティクスで対応するシステムコールを実装する可能性があるアプリケーションを起動するためのサポートのレベルで、他のOSの統合を意味することに注意する価値があります。 これを行うために、補助レベルのサブシステムが導入されました。これは、Win32の場合、NTレイヤー(ntdll)と呼ばれます。 サブシステムの他のライブラリもカーネルにアクセスし、特定のサブシステムに必要なシステムコールの動作を再現できました(たとえば、プロセスの分岐を実行するPOSIXの分岐)。
第二に、Windows NTとLinuxの概念は非常に似ています:両方ともサブシステムに分割されたモノリシックカーネルに基づいており、どちらもカーネルオブジェクトとプロセス間通信を実装するために同様のメカニズムを使用し、両方とも元のUNIXカーネルの概念からルーツを取ります。
MicrosoftがWindows 10に2番目のサブシステムを統合するきっかけとなった理由を説明するのは困難ですが、他のケースでは、同社は擬似エミュレーションや仮想マシンのアプローチに頼ることなくこれに徹底的にアプローチしました。 上記のサブシステムはすべて、ネイティブとして排他的に開発され、独自のサブシステムの機能を実装するWin32と同様の機能を備えていました。
そして、本質的に。 新しいサブシステムの発表は、同社のソフトウェアニュースが発表されたBuild 2016と呼ばれる有名なMicrosoftカンファレンスで行われました。 Windows 10の将来のバージョンでは、ユーザーはbashと呼ばれるLinuxシェルのサービスを使用できるようになりました。bashは、実行可能なELFファイルのブートローダーと、実行のための環境(サブシステム)およびWindows ssh、grep、sed、およびawk。 リファレンスとしてUbuntu Linuxが選択されました。

図 プレゼンテーションスライド「Windows on Linux」。 このスライドは、擬似エミュレーションや仮想マシンについてではなく、Linuxの本格的なサブシステムについて話していることを示しています。 はい、LinuxはWindows 10の一部になりつつあり、POSIXやOS / 2と同様に、システムコールのカーネルレベルのセマンティクスでユーザーモードで実行されます。

図 実際には、上記で説明したアーキテクチャまたはすべてに加えて、カーネルレベルでのLinuxシステムコールのセマンティクスに対する特別なサポートがあり、最初に2つのドライバーが示されています。

図 Linuxは本格的なサブシステムおよびWindowsの一部になっているため、スライドに示すように、Windowsシェルまたはシェルを介してそのシェルを呼び出すことができます。

図 3.ディレクトリーの内容をリストするための有名なUNIX lsコマンドのデモンストレーション。

図 4.実行中のELFファイルヘッダーを解析するためのreadelfユーティリティ。

図 5. gcc実行可能ファイルのコンパイラ。

図 やるべきことがあります。 :)
WindowsでのLinuxサブシステムの完全なビデオデモは、 ここで見ることができます 。