Sandboxの仕組みを詳しく見る
SandBoxの最大の特徴は、実行が終了すると、アプリケーションのインストールや動作によるWindowsシステムやファイルファイルへの影響がまったく残らない点だ。Sandboxは、開発時には「DisposableClientVM」「DisposableVM」などと呼ばれていたようで、インストール関連のファイルに名称が残っている。
また、Windowsコンテナー技術を利用しているものの、完全なコンテナーではなく、アプリケーションなどの検証用の環境と言える。メモリ搭載量がそれほど大きくないノートPCなどを想定し、メモリやファイルシステム、さらには実行時のバッテリ消費などへの影響が小さくなるように設計されている。こうした技術には、
・Dynamic base image
・Smart memory management
・Integrated kernel scheduler
などがある。
書き換えの必要がないシステムファイルは
ホスト側のファイルにリンクしてストレージを節約する
まず「Dynamic Base Image」とは、Sandboxを動作させるWindows(以下、ホストWindowsと表記する)のシステムファイルを元にして仮想環境で実行するWindowsの実行イメージファイルを作ることだ。
ベースイメージとは、Windowsコンテナーの用語で、アプリケーションの実行環境を構築するときに利用する初期状態のファイルシステムを作るためのイメージを言う。
Windowsコンテナーでは、アプリケーションをインストールすると、「アプリケーションイメージ」が作られ、ベースイメージと組みあわせて実行時の仮想的なファイルシステムが作られる。Sandboxの場合、起動時にベースイメージを含む仮想的なファイルシステム(Dynamic Image)を作る。ただし、環境に影響を与えないようにSandboxの終了時には、この仮想的なファイルシステムは捨てられてしまう。
Windowsのシステムファイルには、書き換えが行なわれるものとそうでないものがある。このうち、書き換えないファイルに関しては、ホストWindows側のファイルへのリンクを作り、書き換えるファイルと組みあわせて、仮想的なファイルシステムを作り出す。
こうした技術は過去にも、ストレージの少ないシステムでWindowsの実行ファイルと、回復イメージ中のファイルをリンクさせるWIMbootなどとして使われ、Windows 10では、システムファイルの圧縮機能として標準で組み込まれた。
簡単に言えば、この機能はファイルシステムを実ファイルとファイルシステム外にある別のファイルへのリンクを組み合わせて作る。これにより、書き換えの必要がないファイルは、ファイルシステム内でほとんどストレージを占有しなくなる。
こうしてSandbox内のWindows(ゲストWindowsと呼ぶことにする)が物理的なストレージで占める容量は、100MB程度に収まるという。Sandboxが起動している間、アプリケーションは仮想的なHDDに自由に書き込むことができ、たとえば、システムファイルを見るといったことも可能である。
しかし、動作中にファイルシステムに書き込まれたデータは、Sandboxが終了する時点ですべて廃棄される。仮想マシンやWindowsコンテナーと大きく違うのはこの部分で、起動にはVHDなどの仮想HDDファイルさえ不要なのである。
メモリの実行イメージを共有し、4GBの環境でも動作可
「Smart Memory Management」は、Sandbox実行時に利用するメモリを管理する技法だ。Sandbox内から見えるゲストWindowsは、ホストWindowsとまったく同じものだ。ゲストWindowsのメモリイメージは、物理メモリにロードされているホストWindowsの実行メモリイメージをDirect Mapと呼ばれる方法で、そのまま、Sandboxのメモリ空間に割り当てる。
このようにすることで、プロセスとしてはホストWindowsとゲストWindowsで別になるが、メモリの実行イメージを共有するため、メモリ占有量は小さくなる。これによってSandboxは、4GBメモリでも動作可能というわけだ。
物理CPUの実行制御は
ホスト側のWindowsのスケジューラーが行なう
「Integrated Kernel Scheduler」は、スレッド実行の仕組み(スケジューラー)機構である。
SandboxはゲストWindowsが動作しており、アプリケーション側からみると、アプリの実行は、ゲストWindowsのスケジューラーが制御する。しかし、物理CPUの実行制御はホストWindows内のスケジューラーがしている。
通常の仮想マシンでは、ハイパーバイザー(Hyper-V)が仮想CPUを制御する。この制御された仮想CPUを使って、ゲストOSはスケジューリングを実行する。SandboxでのホストWindowsは、ゲストWindowsを1つのプロセス(アプリケーション)のように扱い、ゲストWindowsはその中で動作する。つまり、ホストWidnows側は、ゲストWindows側のスレッドすべてを制御していて、ホストWindows側の優先順位の高いスレッドをゲストWindows側の優先度の低いスレッドよりも優先できるようだ。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











