コンピューター仮想化の歴史
丸の内ブライトクリスマス2017が徐々に始まっていますが、今週末から来週にかけて面白くなりそうです。
一部ご紹介します。今回は花をテーマにしているようですね。来週月曜日に、ちゃんとしたカメラで写真を撮りに行こうと思っています。私のオフィスは丸の内の仲通りに近くて、御幸通りも歩いてすぐですので手軽に行けます。
今日はコンピューター仮想化の歴史についてお話します。
仮想マシンとは
現在コンピューターの世界で、最も注目されているといっても過言ではないことが「コンピューターの仮想化」でしょう。一般的に言えば、この仮想化とはコンピューターの「リソース」が重要な役割を占めているといっても良いでしょう。このリソースと言われるものは、資源あるいは必要となる資源の事を意味している言葉で、コンピューターの世界では、本体となるハードウエアやソフトウエアを動作させるうえでの処理速度を司るCPUやメモリの容量にハードディスクの容量といったものが、重要なリソースと言えるでしょう。このリソースは、比喩的な意味合いでも使われる事もあり、必要な人手や資金をそう呼んだり、設備などやそれに関する資料に情報源といったものにもこのリソースという事が使われていますので、意外と聞き慣れている言葉のひとつと言えるでしょう。
この仮想技術は簡単に言ってしまえば、一台のコンピュータリソースを分化仕分けすることによって、実際には1つしかないにもかかわらず、いくつもあるように見せてみたりすることです。さらに言うと、2つ以上のコンピュータリソースを集約させることで、1つのリソースに見せかけたりする技術や手法を指し示しているといえます。ひと昔前のコンピューターは非常に高価なものでしたので、一人1台を持つ事がやっとの事でした。しかし、安価なマシンが次々と提供されるにつれ、その利用方法も広がっていき、そのニーズも多様化していったのです。1台しかマシンがないにもかかわらず、複数マシンを利用しているようにコンピューターを活用できるのですから、ユーザーにとってはこれは理想的なものといっても過言ではないでしょう。利用方法は様々に柔軟な対処できるのもメリットで、複数のOSを利用したりとその自由度は高いものと言えます。
仮想マシンの歴史
マシンの仮想化を考えた時に、その元となるプロセッサの歴史も知っておかなければならないでしょう。このプロセッサと呼ばれるものは、コンピューターにとっては欠かせないもののひとつで、データの演算やその加工に転送技術、さらにはプログラムの実行や複数の装置の制御などを行っている処理装置の事を「プロセッサ」と呼んでいるのです。そうした意味でCPUは、心臓とも呼ばれる意味が良くおわかりだと思います。このプロセッサの代表とされているのが「Intel 8086」で、一般的にX86系のプロセッサと言われるものです。1978年に発表された8086は改良を繰り返され、1983年には32ビットのプロセッサを発表しました。互換性にも優れており、この時にX86系プロセッサはほぼ完成されたものに近いアーキテクチャになったと言えるでしょう。
現在でもその優れた互換性は維持されたままで、より多機能になり高速化が進んできました。コンピューターの世界では一般的だった、1つのプロセッサ辺りには1コアのみ実装であったのが、2つのコアや4つのコアが取り付けられる事も多くなり、それ以上のコアを持つスペックマシンが、次々と開発され続けています。この「マルチコアプロセッサ」のおかげで、複数の命令を同時にこなす事ができるようになり、さらなる進化が続いています。仮想マシンを新たに設定する際に、アプリケーションが必要とする性能に合わせてコア数を設定することができるようになったことも、インテルアーキテクチャーのCPUを搭載したコンピューター(いわゆるX86やX64)での仮想化が浸透したともいえます。
システム仮想マシンはすぐれた特徴をもち、x86システムの上で動く事はもちろん、そのシステムを再現する事もできます。また、x86システム用のソフトウェアを動作させる事ができますので、ネット上でダウンロードした古いソフトウェアでも、手持ちのパソコンにあまり負担を掛けずに手軽に動かす事ができようになりました。
仮想マシンの優れた利点
「プロセス仮想マシン」というものは、そのコンピュータ環境に関係なくプログラムを実行できるというものです。代表的なものには、スマートフォンなどによるアプリ機能というものが挙げられるでしょう。このアプリ機能は、Java言語で作られたアプリケーションを実行するため、スマートフォン内部に仮想マシンが搭載されているのです。Java言語というものは、モバイル端末アプリをはじめ、ウィンドウアプリやWebアプリなどの開発を行う為のプログラム言語です。現在この業界では、世界中で最も多用されているプログラム言語と言えるでしょう。スマートフォンには、この言語が読み取れる機能が始めから備え付けられていますので、それぞれの機種が違っていたりメーカーが違って、そのハード構成に互換性がないものでも、同じアプリケーションが使用可能になっているわけです。
またJava言語と同じ様に、「Net Framework」というものがあります。これは、対応するプログラミング言語であればだれでも開発できるという利点があり、幅広く使われているプログラムです。他にも同様のプログラムは存在しており、これらの総称をプロセス仮想マシンと呼んでいるのです。また、システムの仮想化を行えばコンピューター上を動作させる別のOSを動かせるという利点があります。これは、1台のコンピューターであるにもかかわらず2台使用しているのと同じ作業が行えますので、ユーザーにとってはメリット以外の何ものでもないでしょう。たとえば従来では、WindowsとLinuxを同時に使う必要に迫られた場合などには2台のパソコンが必要でしたが、1台でこなせるので非常に都合が良いのです。