総合科目「ネットワーク社会を支える情報技術入門 II」、2012年09月24日
                                       筑波大学システム情報系
                                       新城 靖
                                       <yas @ cs.tsukuba.ac.jp>
このページは、次の URL にあります。
	http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2012-09-24
あるいは、次のページから手繰っていくこともできます。
	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-2012-09-24
/it-2012-09-24
.pdf
 
-  「仮想(virtual)」という考え方は、コンピュータとネットワークの技術
に伴い生じた考え方である。
-  「仮想」の一義的な意味は、「現物と置き換え可能なもの」の意味であ
る。「実体がない」という意味ではない。日本語訳、漢字の語感に惑わされな
いこと。
-  重要な「仮想」がつく概念
-  仮想記憶(virtual memory)
-  仮想計算機(virtual machine)
 
-  仮想計算機には、様々な利用方法がある。
-  オペレーティング・システムの誕生と「プロセス」の考え方の発明で、
仮想化が始まった。
-  経済的利益を得る。未熟な情報技術を活用する時には、情報技術固有の
考え方を知っていた方が有利になる。
-  人生を楽しむ。
英語では、virtual。
-  ソフトウェアの働きで作られている。
-  現実のもの(ハードウェア)と置き換え可能である。仮に取り替えても、
(ある範囲では)利用している側には気がつかれない。
類語:抽象(abstract)、論理(logical) (←→物理(physical))
反語:実(real)
-  virtual (adjective)
-  
almost or nearly as described, but not completely or according to
strict definition : the virtual absence of border controls.
-  Computing
not physically existing as such but made by software to appear to do
so : a virtual computer. See also virtual reality .
-  Optics
relating to the points at which rays would meet if produced backward.
-  Physics
denoting particles or interactions with extremely short lifetimes and
(owing to the uncertainty principle) indefinitely great energies,
postulated as intermediates in some processes.
 
Thesaurus (類語)
-  a virtual guarantee effective, in effect, near, near
enough, essential, practical, to all intents and purposes.
-  a virtual shopping environment simulated, artificial,
imitation, make-believe; computer-generated, online, virtual reality.
MacOSX付属 New Oxford American Dictionary, New Oxford Writers
Thesaurus より。
-  virtual (形容詞)
-  《表面的にはまたは名目上はそうでないが》事実上の, 実質上の, 実際(上)の; 仮想の, バーチャルな;
-  【光】 虚像の (opp. real)
-  【理】 仮想の《遷移の中間状態として現われ直接検出にかからない; opp. real》
-  【電算】 仮想記憶 (virtual memory) の[を用いる]; 
-  《古》 実効のある.
 
リーダーズ英和辞典第2版より。
この講義で中心的に扱う「仮想の考え方」とは、適合しない。
virtual の訳語に「仮想」を当てたのは、失敗だった。
「事実上の」
-  仮想 (広辞苑)
-  仮に考えること。仮に想定すること。例:仮想敵国。
仮想敵国の英語は、{hypothetical、imagined、potential} enemy。virtual
enemy とは言わない。
-  メモリ(メインメモリ)、RAM(Random Access Memory)
-  実行中のプログラムを保持する。加工するデータを一時的に保持する。
IC(Integrated Circuit、シリコンという元素による半導
体で作られた電気回路)で作られているので、速い。
容量は、ハードディスクよりは小さい。値段が高い。
(揮発的(電源を切ると消えてしまう)。)
-  ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
-  プログラムやデータをデータを保持する。
容量は、メモリより大きい。値段が安い。
(永続的である(電源を切っても残っている)。)
メモリには、数字で番地(アドレス)が付いている。番地を指定して、データ
を保存する。番地を指定すると、データが取り出せる。
仮想記憶(仮想メモリ、virtual memory)とは、オペレーティングシステム(後述)の働きにより、実際に備えているメ
モリ容量よりも大きなプログラムを動かすための仕組みである。

図 仮想記憶による主記憶容量の拡大。主記憶よりも、「事実上」多くのメモリがあるように見せかける。
-  主記憶 (main memory, primary storage)
-  RAM で作る。小容量、高価。
-  二次記憶(secondary storage)
-  ハードディスクで作る。大容量、高価。
-  ページ
-  主記憶と二次記憶(ハードディスク)を固定長のブロックに分けたもの。
大きさは、4Kバイト-8Kバイトが一般的。
-  ページアウト
-  主記憶にある(当分使いそうにない)ページを、二次記憶へコピーする。
-  ページイン
-  二次記憶にある(現在必要とされている)ページを、主記憶へコピーする。
仮想記憶の基本的なアイディアは、高価な RAM の容量を、
安価なハードディスクを使って、「事実上」拡大する。
すぐに使うところだけを速いメモリ(IC)に、当分使わない所を、遅いハー
ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。
この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。
仮想記憶を使うと、メモリが 1000 M バイトしかないコンピュータで、2000 M
バイトのメモリを使うプログラムを実行することができるようになる。
もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕
組みである。最近では、複数のプログラムが使うメモリの総量で考えることも
ある。
要求ページング(demand paging)は、仮想記憶を実現するための技術。
-  主記憶には、最初はなにも入れない
-  プログラムが実行して、あるページをアクセスした時に、主記憶になけれ
ば、プログラムの実行を一旦中断する。目的のページを、二次記憶から主記憶
へページインして、実行を再開する。
特徴
-  アクセスされないページは、主記憶には入らない。
-  無駄な二次記憶から主記憶へのコピーは発生しない。
-  存在しないページをアクセスした時に「中断」と「再開」が行われるので、
その分遅くなることもある。
ページインしようとした時に、全部の主記憶が利用中ということがある。
この時には、利用中のページの中から、犠牲となるページを選択してページア
ウトし、空きを確保する。
犠牲となるページを選択する方法(アルゴリズム)には、次のようなものがある。
-  OPT(Optimal)アルゴリズム。最も遠い将来まで利用されない部分を二次記憶へ。
-  FIFO (First-In First-Out) アルゴリズム。最も早い時刻に読み込まれた部分を二次記憶へ。
-  Randomアルゴリズム。ランダムに選んで二次記憶へ。
-  LRU((Least Recentry Used))アルゴリズム。最も長い時間参照されてい
ない部分を二次記憶へ。
一番よいアルゴリズムは、OPTアルゴリズムだが、実現不可能である。未来の情報を使うので。
LRU は、過去の情報を使って未来を予測する方法。
野口悠紀雄(のぐち ゆきお)の
「超整理法」の押し出しファイルは、LRUアルゴリズム。
アルゴリズム(手法、算法)とは、問題を解くためのあらかじめ記述された定義
の明確な規則、あるいは、指示の集まり。日本語などで書くこともできる。直
接的にはコンピュータでは実行できない。なんらかの方法で実行できるように
なったものは、プログラムである。
あるいは、仮想マシン、仮想コンピュータ。
計算機(専門用語)とは、コンピュータのこと。電卓ではない。
-  1セットのハードウェア(実計算機)を1つのオペレーティング・システム(OS)が操作する。
-  OSの上で複数のアプリケーション・プログラムが動作する。
-  ハードウェアには、次のようなものが含まれる。
-  CPU
-  メモリ
-  周辺装置(ハードディスク、ディスプレイ、キーボード、ネットワーク・カード)
 

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

図 仮想計算機上でのオペレーティング・システムの実行
仮想計算機は、仮想計算機モニタ(virtual machine monitor, VMM) という小さ
なソフトウェアにより実現される。
仮想計算機モニタは、ハイパーバイザ(hypervisor)と呼ばれることもある。
仮想計算機モニタは1個でも、複数の仮想計算機を作ることができる。
-  もともと複数のコンピュータで行っていた仕事を1台の物理的なコンピュー
     タでこなすために集約する。
-  1台のコンピュータで、複数のオペレーティング・システム用の
     アプリケーション・プログラムを同時に利用する。
-  ハードウェアが故障した時に、簡単に交換できるようにする。
-  データのバックアップや、ソフトウェアのインストールを簡単にする。
-  クラッシュに強くする。(書き込みを取り消すことができるハードディスクを使う。)
-  オペレーティング・システムの開発環境として利用する。
-  セキュリティを高める。
目的
-  1970年代: ハードウェアの価格が高い。
1つのハードウェアで複数のOSが走れば、
ハードウェアを買うお金が節約できる。
-  現在: 
コンピュータの高速化で、性能が余ってきた。もともとハードウェアn台でやっ
ていた仕事を、ハードウェアとしては1台でこなせるようになってきた。
並列処理の逆。

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

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

図? ホスト型仮想計算機モニタ
VMware Fusionは、MacOSX 上で動くホスト型の仮想計算機モニタ製品。
デモでは、次の OS を実行する。
日本政府が決定した「セキュア・ジャパン2006」の項目の1つ。内閣官房情報
セキュリティセンターが推進する。文部科学省平成18年度科学技術振興調整費
「高セキュリティ機能を実現する次世代OS環境の開発」による支援を受ける。
筑波大学がとりまとめ。電気通信大学、東京工業大学、慶應義塾大学、奈良先
端科学技術大学院大学、豊田高専、富士通、NEC、日立製作所、NTT、N
TTデータ、ソフトイーサの技術者が参加。インテルが技術協力。
2009年3月開発プロジェクト終了。
目標: オペレーティング・システムやアプリケーションに依存しない形でセキュ
リティ機能を付加する。
-  ICカードがないと、オペレーティング・システムが起動しない。
盗難にあっても、他人には使われない。
-  ハードディスクが自動的に暗号化される。
ハードディスクのが取り出されても、
情報漏えいが発生しない。
-  強制的に
仮想プライベート・ネットワーク(後述)
に参加させ、ネットワーク通信を暗号化すると共に、
利用可能なネットワークを制限する。
既存のオペレーティング・システム(Windows, Linux 等)を変更しないで実行す
る。このために、仮想計算機(モニタ)で、セキュリティ機能を追加する。
図? BitVisor の機能

図? BitVisor の起動画面
http://www.bitvisor.org/
http://www.securevm.org/
-  エミュレータ
-  別のシステムで、本物のシステムと同じ動きを真似するソフト
ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。
-  Wine: Unix 上で Windows 用のプログラムを実行するためのプログラム。
Wine は、Windows のソフトウェア部分(システム・コールと実行時プログラム)をエミュレートする。
-  端末エミュレータ: 文字端末 の機能を全部、
または、部分的にエミュレートする。
 
-  シミュレータ
-   現実世界の予測に使うもの。数式でモデル化して計算で予測
する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー
タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代
わりに使える。シミュレータは、本物の代わりには使えない。)
(文字)端末
1台の(高価な)中央のコンピュータを、複数人で TSS (Time Sharing
System)で使う時に使う(安価な)コンピュータ。キーボードから打ち込まれた
文字を中央のコンピュータに送る機能と、中央のコンピュータから送られてき
た文字を画面に表示する機能がある。
Java 言語で書かれたプログラム(バイトコードと呼ばれる機械語の一種に変換
されたもの)を実行する。
Java仮想計算機を使うと、さまざまな種類ハードウェア(CPU)やオペレーティ
ング・システムで共通にバイトコードという機械語が使えるようになる。
バイト・コードに変換されたアプリケーションは、どの
CPUやオペレーティング・システムでも動作する。

図? 共通のバイトコードが使える
本当は、インターネットという、誰もがアクセスできるネットワークを通って
いるが、あたかも 専用線(private network) で結ばれているように見せかけ
る。
VPNを実現する技術:
筑波大学では、学外から学内のサービス(Twins等)を利用するために使える。
1つの大きなファイルを、1つのハードディスクと同じように扱えるようにし
たもの。仮想ディスクを使うと、次のようなことができる。
-  データを暗号化して保存する。
-  複数のファイルからなるソフトウェアを1まとめにする。
-  CD-R などに書き込むためのファイルを一時的に蓄える。
ネットワークに接続されたコンピュータをホストという。ホストは、サービス
を提供するプログラム(サーバ)を動作とせるという意味もある。
仮想ホストは、本来なら複数のコンピュータが必要であったものを、1台に集
約する。ただし、ネットワークを超えて向こう側で見た時には、1台に集約さ
れていることには気がつかせない。
仮想ホストの実現方法
-  仮想計算機を使う
-  個々のプログラムで対応する。
1台のコンピュータで動いている1つのプログラムで、
複数のドメイン名に対してサービスを提供する。
高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない
ものを(コンピュータの中に)実在しているかのごとく見せかける。
人間が働き掛けると、現実と同じように応答する。感覚のフィードバックがある。
最近の日本語では、コンピュータによる原義を離れて、「現実には存在しない」
という意味が使われることがある。
以前は、空間(と時間)の制約で実現できなかったことが、コンピュータとネッ
トワークの発達により、現実に近いレベルにまで達してきた(部分的に現実の
ものと置き換え可能になってきた)という意味も生じてきている。
-  仮想都市、仮想社会
-  仮想大学、仮想教官、仮想学生
-  ・・・
-  基本ソフトウェア(プログラム)。
-  電源を入れて、使えるようになった時に動いているプログラム。
(オペレーティング・システム以外のプログラムは、
すべてオペレーティング・システムの働きで実行される。)
-  コンピュータの「顔」を作る。基本的な考え方と操作方法とを決める。
同じハードウェアでも、違うオペレーティング・システムが動くと、
考え方も操作方法も違う。
-  ソフトウェアにより、基本的なもの(幻影、オブジェクト)を提供する。
-  ファイルとディレクトリ
-  プロセス
-  ウィンドウ、アイコン
 
-  管理職。ハードウェアを管理する。メモリ管理、CPU管理。
徒然草(つれづれぐさ)。八になりし年。最初の仏問題。
OSは、他のプログラムを実行するプログラムである。
他のプログラムは、OSの力を借りてはじめて実行される。
ではOSは、誰が実行するか?
ブート・ストラップ(Boot strap,靴ひも)。
ほら吹き男爵は、底なし沼に落ちた時に、自力で脱出するために、自分の靴ひ
もにつかまって脱出した。
BIOSがブートローダをメモリに読み込み、ブートローダを実行する。
ブートローダがOSをメモリに読み込み、OSを実行する。
BIOS(Basic Input Output System)、ROM Monitor。OSをハードディスクから
メモリにコピーして、OSに制御を渡すプログラム。ROM (Read-Only Memory) 
という、少容量の不揮発的なメモリに入っている。古いシステムでは、(フロッ
ピ・ディスクへの)基本的な入出力の機能が含まれていた。
-  Unix, Linux
-  MacOS 9/X
-  Microsoft Windows 95/98/2000/NT/XP/Vista/7/8
-  MS-DOS
-  iOS, Android, Symbian OS, iTron
ソフトウェアを買う時、自分のパソコンのOSで動作するものを買う。
(CPU の種類も大事。同じ OS でも CPU の種類がプログラムは違うと動作しない。)
自分が使いたいソフトウェアが動作するようなOSとCPUを積んだパソコン
を買う。
-  ローダ(Loader)
-  モニタ(Monitor)
-  バッチ処理OS
-  TSS (Time Sharing System)OS
-  ワークステーション用OS
-  パソコン用OS
-  ネットワークOS, 分散OS, 実時間OS
「パーソナル・コンピュータ」の考え方は、比較的新しい。昔は、コンピュー
タが高価だったので、1台のコンピュータを複数人(時には数百人)で同時に
使うことが一般的だった。
TSS (Time Sharing System)では、1台のコンピュータを大勢の人で同時に使
う、一人ひとりは、自分で占有しているかのように見える。
プログラムとプロセス。
プロセスとは、オペレーティング・システムの働きにより、二次記憶に保存さ
れていたプログラムがメモリ(主記憶)に読み込まれ、実行可能になったもの。
単にファイル(ハードディスク)に入っていも、プログラムはプログラムであ
る。
1つのプログラムを同時に2個動かすことを考えると、プログラムとプロセス
の違いがわかる。

図? オペレーティング・システムの構成要素
1つのプロセスから見ると、普段は自分一人で全部のコンピュータのハードウェ
アを利用しているように見える。コンピュータの仮想化の最初。
プロセスは、時々、他のプロセスからデータを受け取る(プロセス間通信)。
Last updated: 2012/09/20 13:52:48
 
 Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>