| English | 意味 |
|---|---|
| virtual machines/ˈvɜːtʃuːəl məˈʃiːnz/ | 仮想マシン |
| parallelism/ˈpærəlelɪzəm/ | 並列性 |
| SIMD/ˈsɪmdiː/ | SIMD(単一命令多データ) |
| MIMD/ˈmɪmdiː/ | MIMD(複数命令多データ) |
| massively parallel/ˈmæsɪvli ˈpærəlel/ | 大規模並列処理 |
| distributed memory/ˈdɪstrɪbjuːtɪd ˈmeməri/ | 分散メモリ |
| hypervisor/ˌhaɪpəˈvaɪzə/ | ハイパーバイザー |
| sandboxing/ˈsændbɒksɪŋ/ | サンドボックス化 |
| bytecode/ˈbaɪtkəʊd/ | バイトコード |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | 即時コンパイル |
一台のコンピューターが四十台の役割を果たす
- かつての企業は、それぞれのアプリケーションに対して物理サーバーを一台ずつ購入していた。メール用、ウェブサイト用、会計用などである。各サーバーは性能の約8%しか使用されていなかったが、ラックに設置され、冷却に必要な電力を全量消費していた。
- その後、サーバーは単なる機械ではなくファイルとなる。3台の物理ホスト上に40台の仮想マシンが動作しており、各虚拟机自身に専用のプロセッサ、メモリ、ディスクがあるかのように錯覚している。
- 節電効果だけでなく、仮想マシンはリスクのある変更前にスナップショットを取得でき、動作中に別のホストへコピーしたり、侵害された場合は破棄したりできる。
- この章のテーマは並列性と仮想マシンである。これら2つのシステムアーキテクチャの違い、そしてVMがもたらすコストと利点について学ぶ。
並列アーキテクチャの概要
- 並列性とは、多数のプロセシングエレメントが同時に動作することを意味する。Flynnの分類法ではその形状を定義しており、SIMDは多数のデータ項目に対し同じ命令を実行し、MIMDは異なるデータ項目に対し異なる命令を実行する。
- 大規模並列処理マシンはMIMDを数千のプロセッサまで拡張したもので、各プロセッサは独自の分散メモリを持ち、メッセージを通じて通信する。
- クロック周波数を上げるだけでは速度は向上しない(熱による限界がある)。代わりに一度に多くのことを行うことで速度が向上する。このページのすべてのアーキテクチャはこの課題に対する解答である。

異なる命令、異なるデータ、同時に
SIMDとは:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Single Instruction, Multiple Data — 例:GPUが数千のピクセルに同一演算を実行する。
Flynnの分類それぞれを例題に対応させなさい。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
Flynnは、同時に実行される指令ストリームとデータストリームの数に基づいて分類します:SISD、SIMD、MIMD(および稀なMISD)。
大規模並列コンピュータは以下を使用します:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
大規模並列システム(スーパーコンピュータ)は、分散メモリを持つ数千のプロセッサを高速ネットワークで接続します。
仮想マシンとは何か
- **仮想マシン(VM)**とは、计算机全体をソフトウェアエミュレーションするものである。内部で動作するソフトウェアは、現実のHardwareのように見えるが、ホストソフトウェアによって提供・管理されるプロセッサ、メモリ、ディスクを使用する。
- 2種類あり、試験ではこれらを区別します:システムVMは完全なゲストOSを実行し、プロセスVMは1つのプログラムのポータブルコードを実行します。
- いずれもより高速なマシンのエミュレーターではない。VMの目的は速度向上ではなく、隔离性とポータビリティである。
コンピューティング概念ラボ
具体的な例を、それが示すコンピューティングのアイデアに基づいて分類せよ。
仮想マシンとは何ですか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
重要なのは速度ではなく、エミュレーションと隔離です。システムVMは完全なゲストOSを実行し、プロセスVMは1つのプログラムのバイトコードを実行します。
システムVM
- ハイパーバイザーとは、VMを作成・管理するソフトウェアであり、ホストの実際のプロセッサ、メモリ、ディスクを割り当てて各VMを互いに隔離する。
- 各VMは独自のゲストOSをブートするため、1台のホスト上でWindows、Linux、古いレガシーシステムなどを同時に動作させることができる。
- 用途:1台のマシンで異なるOSを動作させること、サーバー統合(多数の未活用な物理サーバーを1台のホストに置き換えること)、サンドボックス化(リスクのあるまたは信頼できないソフトウェアを隔離して動作させ、ホストへのアクセスを遮断すること)、スナップショットによる既知の状態へのロールバック。

多数の仮想マシンを格納するホストラック
ハイパーバイザーは以下のために使用されます:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
ハイパーバイザーはシステムVMを管理し、複数のゲストOSが1台の物理マシンを共有できるようにします。
ハイパーバイザーによって管理されるシステムVMは完全なゲストOSを実行しますが、JVMのようなプロセスVMは1つのプログラムのポータブルなバイトコードのみを実行します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
システムVMは複数のゲストOSで1台の物理マシンを共有しますが、プロセスVMは単一のプログラムに対して「書き込み一度、どこでも実行可能」を実現します。
1台のホスト上で複数のシステムVMを作成・管理するソフトウェアは____と呼ばれます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
これはホストの実際のハードウェアをゲスト間で分割し、各々が隔離されていることを意味します。これがサンドボックスや統合を可能にする理由です。
プロセスVM
- プロセスVM(言語VMとも呼ばれる)は、ホストのマシンコードではなく、ポータブルなバイトコードで書かれた1つのプログラムを動作させる。Java Virtual Machine (JVM) と .NET CLR がその例である。
- 利点:ポータビリティ(バイトコードはVMが存在するあらゆる環境で動作するため、「一度書けばどこでも動作する」)、ランタイム安全性(VMがコードの挙動を検証する)、ホットコードの JIT コンパイル(ネイティブ指令に変換することで、長期間動作するプログラムがネイティブ速度に近づく)。
- コスト:プログラムとハードウェアの間に追加レイヤーが生じ、プログラムを動作させるには事前にVMをインストールする必要がある。
JVMのようなプロセス(言語)VMの利点として正しいものを選択してください。すべて該当するものを選びなさい。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
VMが存在することは必須であり、これがポータビリティの対価です。ポータビリティ、安全性、JITが利点です。
演習例:どの種のVMか
- セキュリティチームが怪しいメール添付ファイルを開封したいが、社内ネットワークへのリスクは避けたい。 システムVM:ゲストOSはハイパーバイザーにより隔離されており、マルウェアがホストに到達することはなく、後でスナップショットを復元して変更内容を抹消できる。
- 開発者がコンパイル済みのプログラムを再コンパイルせずにWindows、macOS、Linuxで動作させたい。 プロセスVM:プログラムはバイトコードにコンパイルされ、各プラットフォームのVMがそれを動作させる。
- 必要とする性質(隔離性またはポータビリティ)に応じた種類を答えること。
1台の物理ホストが故障した場合の影響を、順序立てて記述せよ。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
統合はリスクを集約します:1台のホストは、それが保持するすべてのものの単一障害点となります。これがステートに対する限界です。
演習例:利点と制限
- 虚拟マシンを用いて企業の物理サーバーを置き換える際の利点2つと制限2つを説明せよ。[4]
- 利点:複数のサーバーが1台の物理ホスト上で動作するため、ハードウェア、電力、冷却コストが削減される。また各VMは隔離されているため、侵害やクラッシュが発生しても他のサーバーに影響せず、スナップショットから復元できる。
- 制限:VMsはホストの実際のプロセッサ、メモリ、ディスクを共有するため、専用ハードウェアより性能が低下し、1つのBusyなVMが他をスタベーションさせる可能性がある。またホストに故障が発生すると、其上の全てのVMが同時に停止する。
- 各2つずつ、かつそれぞれが単なるラベルではなく因果関係に基づく記述であること。
見落としやすいポイント
- ハイパーバイザーはシステムVMを管理するものであり、ゲストOSやホスト自身のOSではない。
- プロセスVMはバイトコードを動作させるものであり、これはマシンコードではない。これがポータビリティの根拠である。
- VMの制限は「複雑である」という点ではなく、リソースの共有と単一故障点である。
- 「サンドボックス化」の結果として、リスクのあるソフトウェアはホストから隔離されており、被害を与えたりホストに到達したりできない。
理解できましたか
- 並列処理はクロック速度の限界に答える:SIMDは多数のデータに対して1つの命令を、MIMDは多数の命令を、大規模並列は分散メモリを持つ数千のプロセッサを指す
- **仮想機械(VM)**とは、コンピュータ全体をソフトウェアでエミュレートしたものである
- システムVMはハイパーバイザの下で完全なゲストOSを実行する:1台のマシン上で異なるOS、サーバー統合、サンドボックス化、スナップショット
- プロセスVMはポータブルなバイトコードを実行し、ランタイム時の安全性とジ・イン・タイムコンパイルを提供する。代价は追加のレイヤー、ホストリソースの共有、そしてホストが故障するとすべてのVMが停止することである