hysryt / wiki

https://hysryt.github.io/wiki/
0 stars 0 forks source link

Windows Subsystem for Linux #120

Open hysryt opened 5 years ago

hysryt commented 5 years ago

https://ja.wikipedia.org/wiki/Windows_Subsystem_for_Linux

Windows Subsystem for Linux (WSL) とは、Linuxの(ELFフォーマット形式の)バイナリ実行ファイルをWindows 10およびWindows Server上でネイティブ実行するための互換レイヤーである。

hysryt commented 4 years ago

https://www.atmarkit.co.jp/ait/articles/1710/24/news010.html

Windows Subsystem for Linuxは、Microsoft Researchの「Drawbridgeプロジェクト」をWindowsに実装したものです。

Microsoft Research:マイクロソフトが関連する研究機関

https://www.microsoft.com/en-us/research/project/drawbridge/

DrawBridge

DrawBridgeはアプリケーションサンドボックスによる新しい仮想化形式の研究試作品です。DrawBridgeでは2つのコアテクノロジーを組み合わせています。一つ目はpicoプロセス。これは最小限のカーネルAPIを持ったプロセスペースの隔離コンテナです。二つ目はライブラリーOS。これはpicoプロセス内で実行できるように効率化されたバージョンのWindowsです。

ハードウェアベースの仮想マシン(VMs)はデータセンターのコンピューティングを根本的に変え、クラウドを実現しました。VMsは3つの魅力的な品質を提供します。

  1. 安全な分離:不正なアプリケーションがその他のアプリケーションやそのホストを危険に晒さないよう、アプリケーションを分離します。

  2. 永続的な互換性:ホストとアプリケーションは別々に進化することを可能にします。ホストの変更がアプリケーションを壊すことはありません。

  3. 実行持続性:実行されたアプリケーションはコンピューターから別のコンピューターに移動できます。

これらの利点にもかかわらず、VMにはディスクフットプリント、メモリ、CPU、および管理コストの点で大きなリソースオーバーヘッドがあります。

Drawbridgeは、picoプロセスとライブラリOSの2つのアイデアを組み合わせて、安全な分離、永続的な互換性、実行継続性の利点を保持しながら、リソースオーバーヘッドを大幅に削減する新しい形式のコンピューティングを提供します。

まだ実験中ですが、Drawbridgeは、Microsoft Office 2010やInternet ExplorerのようなデスクトップアプリケーションからIISのようなサーバーアプリケーションに至るまで、多くの既存のWindowsアプリケーションを変更することなく実行します。

picoプロセス

picoプロセスは軽量で安全な隔離コンテナです。 OSのプロセスアドレススペースから生成されます。 picoプロセス内で動作するコードとOSの間のABIはハードウェアVMを参考にしています。 これは、ステートレスインターフェイスを提供する固定のセマンティクスを持つ45個のダウンコールのクローズドセットで構成されています。 すべてのABI呼び出しは、従来のハードウェアVM設計のハイパーバイザーまたはVMモニターと同様の役割を果たすセキュリティモニターによって処理されます。

picoプロセスインターフェイスは、ハードウェアVMインターフェイスの設計パターンに従いますが、高度な抽象化を使用します。 picoプロセスインターフェイスは、CPU、MMU、デバイスレジスタなどの低レベルのハードウェア抽象化の代わりに、スレッド、プライベート仮想メモリ、およびI / Oストリームを表示します。 これらの高レベルの抽象化により、picoプロセス内でホストされるOSコードのはるかに効率的な実装が可能になります。 これらの高レベルの抽象化により、リソースの使用効率が大幅に向上します。

ライブラリーOS

より良いサンドボックスコンテナは必要ですが、仮想化アプリケーションのスケーラビリティを高めるには十分な条件ではありません。 2番目の重要な要素は、ライブラリOSです。 ライブラリOSは、アプリケーションのコンテキスト内で一連のライブラリとして実行されるようにリファクタリングされたオペレーティングシステムです。

Drawbridgeは多くのライブラリOSを実行できますが、Drawbridgeの重要な貢献は、単一のpicoプロセス内で実行できるようになったWindowsのバージョンです。 Drawbridge WindowsライブラリOSは、picoプロセス内で実行されるユーザーモードNTカーネル(非公式にはNTUMと呼ばれます)で構成されています。 NTUMは、ベアハードウェアおよびハードウェアVMで実行される従来のNTカーネルと同じNT APIを提供しますが、Drawbridge ABIによって公開される高レベルの抽象化を使用するため、はるかに小さくなります。 NTUMに加えて、Drawbridgeには、picoプロセス内でユーザーモードライブラリとして実行されるWin32サブシステムのバージョンが含まれています。

NTUMの基本サービスとユーザーモードWin32サブシステムで、DrawbridgeはWindowsのハードウェアベースバージョンから多くのDLLとサービスを実行できます。 その結果、Drawbridgeプロトタイプは、アプリケーションに変更を加えることなく、Windowsデスクトップおよびサーバーアプリケーションの大規模なクラスを実行できます。

hysryt commented 4 years ago

https://ascii.jp/elem/000/001/246/1246548/