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側の優先度の低いスレッドよりも優先できるようだ。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ