このページの本文へ

Windows Info 第152回

Windows 10の新機能であるアプリテスト用環境 「Sandbox」の技術を見る

2018年12月23日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

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側の優先度の低いスレッドよりも優先できるようだ。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン