仮想という考え方

総合科目「ネットワーク社会を支える情報技術入門 II」、2013年12月09日

                                       筑波大学システム情報系
                                       新城 靖
                                       <yas @ cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2013-12-09
あるいは、次のページから手繰っていくこともできます。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/
http://www.cs.tsukuba.ac.jp/~yas/

印刷配布資料 http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2013-12-09 /it-2013-12-09 .pdf

■期末試験について

その他、この授業の責任者(片岸)にも質問できる。 (連絡先は、総合科目のシラバスに記載されている。)

■今日の重要な話

◆仮想という考え方を身につける意義

■仮想とは

◆コンピュータ由来の「仮想」の意味

英語では、virtual。

類語:抽象(abstract)、論理(logical) (←→物理(physical))

反語:実(real)

◆英語のvirtualの説明

virtual (adjective)
almost or nearly as described, but not completely or according to strict definition : the virtual absence of border controls.
Thesaurus (類語)
  1. a virtual guarantee effective, in effect, near, near enough, essential, practical, to all intents and purposes.
  2. a virtual shopping environment simulated, artificial, imitation, make-believe; computer-generated, online, virtual reality.

MacOSX付属 New Oxford American Dictionary, New Oxford Writers Thesaurus より。

◆英和辞典

virtual (形容詞)
《表面的にはまたは名目上はそうでないが》事実上の, 実質上の, 実際(上)の; 仮想の, バーチャルな;
リーダーズ英和辞典第2版より。

◆日本語の辞書に現れる「仮想」

この講義で中心的に扱う「仮想の考え方」とは、適合しない。 virtual の訳語に「仮想」を当てたのは、失敗だった。 「事実上の」と訳せば良かった。

仮想 (広辞苑)
仮に考えること。仮に想定すること。例:仮想敵国。
仮想敵国の英語は、{hypothetical、imagined、potential} enemy。virtual enemy とは言わない。

■仮想記憶(virtual storage,仮想メモリ,virtual memory)

◆(物理的な)メモリ

メモリ(メインメモリ)、RAM(Random Access Memory)
実行中のプログラムを保持する。加工するデータを一時的に保持する。 IC(Integrated Circuit、シリコンという元素による半導 体で作られた電気回路)で作られているので、速い。 容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

メモリには、数字で番地(アドレス)が付いている。番地を指定して、データ を保存する。番地を指定すると、データが取り出せる。

◆仮想記憶(仮想メモリ)

仮想記憶(仮想メモリ、virtual memory)とは、オペレーティングシステム(後述)の働きにより、実際に備えているメ モリ容量よりも大きなプログラムを動かすための仕組みである。

主記憶、6ページ、ハードディスク、15ページ、ページイン、ページアウト

図 仮想記憶による主記憶容量の拡大。主記憶よりも、「事実上」多くのメモリがあるように見せかける。

主記憶 (main memory, primary storage)
RAM で作る。小容量、高価。
二次記憶(secondary storage)
ハードディスクで作る。大容量、安価。
ページ
主記憶と二次記憶(ハードディスク)を固定長のブロックに分けたもの。 大きさは、4Kバイト-8Kバイトが一般的。
ページアウト
主記憶にある(当分使いそうにない)ページを、二次記憶へコピーする。
ページイン
二次記憶にある(現在必要とされている)ページを、主記憶へコピーする。

仮想記憶の基本的なアイディアは、高価な RAM の容量を、 安価なハードディスクを使って、「事実上」拡大する。 すぐに使うところだけを速いメモリ(IC)に、当分使わない所を、遅いハー ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。 この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。

仮想記憶を使うと、メモリが 1000 M バイトしかないコンピュータで、2000 M バイトのメモリを使うプログラムを実行することができるようになる。

もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕 組みである。最近では、複数のプログラムが使うメモリの総量で考えることも ある。

◆要求ページング

要求ページング(demand paging)は、仮想記憶を実現するための技術。 特徴

◆ページ置き換えアルゴリズム

ページインしようとした時に、全部の主記憶が利用中ということがある。 この時には、利用中のページの中から、犠牲となるページを選択してページア ウトし、空きを確保する。

犠牲となるページを選択する方法(アルゴリズム)には、次のようなものがある。

一番よいアルゴリズムは、OPTアルゴリズムだが、実現不可能である。未来の情報を使うので。 LRU は、過去の情報を使って未来を予測する方法。

野口悠紀雄(のぐち ゆきお)の 「超整理法」の押し出しファイルは、LRUアルゴリズム。

アルゴリズム(手法、算法)とは、問題を解くためのあらかじめ記述された定義 の明確な規則、あるいは、指示の集まり。日本語などで書くこともできる。直 接的にはコンピュータでは実行できない。なんらかの方法で実行できるように なったものは、プログラムである。

■仮想計算機(virtual machine)

あるいは、仮想マシン、仮想コンピュータ。 計算機(専門用語)とは、コンピュータのこと。電卓ではない。

◆コンピュータの構成

ハードウェア、OS、アプリケーション2個

図 単純化したコンピュータの構成

◆仮想計算機

仮想計算機とは、仮想計算機モニタと呼ばれるソフトウェアの働きにより作り 出された、事実上のハードウェア。オペレーティング・システムから見ると、 実際のハードウェアとは区別がつかない。

仮想計算機、OS、アプリケーション2個

図 仮想計算機上でのオペレーティング・システムの実行

仮想計算機は、仮想計算機モニタ(virtual machine monitor, VMM) という小さ なソフトウェアにより実現される。 仮想計算機モニタは、ハイパーバイザ(hypervisor)と呼ばれることもある。

仮想計算機モニタは1個でも、複数の仮想計算機を作ることができる。

◆仮想計算機の利用方法

◆コンピュータの集約

目的

図? サーバ3台、OS3種類、アプリケーションそれぞれ2つ

図? 仮想計算機によるサーバの集約(集約前)

図? ハードウェア1台、OS3種類、アプリケーションそれぞれ2つ

図? 仮想計算機によるサーバの集約(集約後)

◆ハイパーバイザ型とホスト型

仮想計算機モニタの分類
ハイパーバイザ型
実計算機上で仮想計算機モニタが動作する。
ホスト型
実計算機上では普通のオペレーティング・システムが動作する。 仮想計算機モニタは、そのオペレーティング・システムの1つの アプリケーションとして動作する。

図? ホスト型仮想計算機モニタ

図? ホスト型仮想計算機モニタ

◆仮想計算機モニタの実例紹介

VMware Fusionは、MacOSX 上で動くホスト型の仮想計算機モニタ製品。 デモでは、次の OS を実行する。

◆セキュアVM/BitVisor

日本政府が決定した「セキュア・ジャパン2006」の項目の1つ。内閣官房情報 セキュリティセンターが推進する。文部科学省平成18年度科学技術振興調整費 「高セキュリティ機能を実現する次世代OS環境の開発」による支援を受ける。 筑波大学がとりまとめ。電気通信大学、東京工業大学、慶應義塾大学、奈良先 端科学技術大学院大学、豊田高専、富士通、NEC、日立製作所、NTT、N TTデータ、ソフトイーサの技術者が参加。インテルが技術協力。 2009年3月開発プロジェクト終了。

目標: オペレーティング・システムやアプリケーションに依存しない形でセキュ リティ機能を付加する。

既存のオペレーティング・システム(Windows, Linux 等)を変更しないで実行す る。このために、仮想計算機(モニタ)で、セキュリティ機能を追加する。

図? PC、ICカード、画面に PIN

図? BitVisor の機能

図? PC、ICカード、画面に PIN

図? BitVisor の起動画面

http://www.bitvisor.org/ http://www.securevm.org/

◆エミュレータとシミュレータ

エミュレータ
別のシステムで、本物のシステムと同じ動きを真似するソフト ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。
シミュレータ
現実世界の予測に使うもの。数式でモデル化して計算で予測 する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代 わりに使える。シミュレータは、本物の代わりには使えない。)

(文字)端末

1台の(高価な)中央のコンピュータを、複数人で TSS (Time Sharing System)で使う時に使う(安価な)コンピュータ。キーボードから打ち込まれた 文字を中央のコンピュータに送る機能と、中央のコンピュータから送られてき た文字を画面に表示する機能がある。

◆Java仮想計算機

Java 言語で書かれたプログラム(バイトコードと呼ばれる機械語の一種に変換 されたもの)を実行する。

Java仮想計算機を使うと、さまざまな種類ハードウェア(CPU)やオペレーティ ング・システムで共通にバイトコードという機械語が使えるようになる。 バイト・コードに変換されたアプリケーションは、どの CPUやオペレーティング・システムでも動作する。

図? Pengium,Linux,PowrPC,MacOSX,Pentium,Windows,SPARC,Solaris

図? 共通のバイトコードが使える

■仮想記憶、仮想計算機以外の仮想

◆VPN(Virtual Private Network)

本当は、インターネットという、誰もがアクセスできるネットワークを通って いるが、あたかも 専用線(private network) で結ばれているように見せかけ る。

VPNを実現する技術:

筑波大学では、学外から学内(IPアドレスで制限)のサービスを利用するために使える。

◆仮想ディスク(virtual disk)

1つの大きなファイルを、1つのハードディスクと同じように扱えるようにし たもの。仮想ディスクを使うと、次のようなことができる。

◆仮想ホスト(virtual host)

ネットワークに接続されたコンピュータをホストという。ホストは、サービス を提供するプログラム(サーバ)を動作とせるという意味もある。

仮想ホストは、本来なら複数のコンピュータが必要であったものを、1台に集 約する。ただし、ネットワークを超えて向こう側で見た時には、1台に集約さ れていることには気がつかせない。

仮想ホストの実現方法

◆仮想現実感(virtual reality)

高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない ものを(コンピュータの中に)実在しているかのごとく見せかける。

人間が働き掛けると、現実と同じように応答する。感覚のフィードバックがある。

◆世俗的な「仮想」

最近の日本語では、コンピュータによる原義を離れて、「現実には存在しない」 という意味が使われることがある。 以前は、空間(と時間)の制約で実現できなかったことが、コンピュータとネッ トワークの発達により、現実に近いレベルにまで達してきた(部分的に現実の ものと置き換え可能になってきた)という意味も生じてきている。

■オペレーティング・システム

◆オペレーティング・システム(Operating System,OS)とは

◆オペレーティング・システムのメモリへの読込みと実行

徒然草(つれづれぐさ)。八になりし年。最初の仏問題。

OSは、他のプログラムを実行するプログラムである。 他のプログラムは、OSの力を借りてはじめて実行される。

ではOSは、誰が実行するか?

BIOSがブートローダをメモリに読み込み、ブートローダを実行する。

ブートローダがOSをメモリに読み込み、OSを実行する。

BIOS(Basic Input Output System)、ROM Monitor。OSをハードディスクから メモリにコピーして、OSに制御を渡すプログラム。ROM (Read-Only Memory) という、少容量の不揮発的なメモリに入っている。古いシステムでは、(フロッ ピ・ディスクへの)基本的な入出力の機能が含まれていた。

◆オペレーティング・システムの種類

ソフトウェアを買う時、自分のパソコンのOSで動作するものを買う。 (CPU の種類も大事。同じ OS でも CPU の種類がプログラムは違うと動作しない。)

自分が使いたいソフトウェアが動作するようなOSとCPUを積んだパソコン を買う。

◆歴史

「パーソナル・コンピュータ」の考え方は、比較的新しい。昔は、コンピュー タが高価だったので、1台のコンピュータを複数人(時には数百人)で同時に 使うことが一般的だった。

TSS (Time Sharing System)では、1台のコンピュータを大勢の人で同時に使 う、一人ひとりは、自分で占有しているかのように見える。

◆プロセス

プログラムとプロセス。

プロセスとは、オペレーティング・システムの働きにより、二次記憶に保存さ れていたプログラムがメモリ(主記憶)に読み込まれ、実行可能になったもの。

単にファイル(ハードディスク)に入っていも、プログラムはプログラムであ る。 1つのプログラムを同時に2個動かすことを考えると、プログラムとプロセス の違いがわかる。

メモリ、CPU、I/O、単一プログラム、複数プログラム/プロセス

図? オペレーティング・システムの構成要素

1つのプロセスから見ると、普段は自分一人で全部のコンピュータのハードウェ アを利用しているように見える。コンピュータの仮想化の最初。

プロセスは、時々、他のプロセスからデータを受け取る(プロセス間通信)。


Last updated: 2013/12/09 15:31:04
Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>