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側の優先度の低いスレッドよりも優先できるようだ。
この連載の記事
-
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第429回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? -
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す - この連載の一覧へ