仮想という考え方

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

                                       筑波大学システム情報工学研究科/電子・情報工学系
                                       新城 靖
                                       <yas @ cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2008-10-27
あるいは、次のページから手繰っていくこともできます。
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-2008-10-27 /it-2008-10-27 .pdf

■先週の補足

◆二分木(binary tree)

子供の節の数が最大2個(0個でも1個でもよい)。 (左右が区別される。)

◆系統樹(phylogenetic tree)

生物の進化を、最初の生物を根とする木構造で表したもの。

普通は、二分木で書く。(分岐した時期が近くなるとどちらが先かよくわから ないものもあるが、必ずどちらかが先と考える。)

◆細胞内共生説

もともと別の種であったものが、合体して1つの種になる。 例: これを考えると木構造ではなくなる。

■今日の重要な話

コンピュータをうまく使いこなすには、いくつかのコンピュータの内部にある 幻影が存在すると信じることができるかどうかにかかっている。その中で、ファ イルという幻影がもっとも重要である。

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

■仮想とは

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

英語では、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 の訳語に「仮想」を当てたのは、失敗だった。 「事実上の」

仮想 (広辞苑)
仮に考えること。仮に想定すること。例:仮想敵国。

■仮想記憶(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)に、当分使わない所を、遅いハー ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。 この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。

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

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

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

主記憶が足りなくなった時に、どのページを犠牲にして、空きを確保するか。

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

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

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

■仮想計算機(virtual machine)

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

◆計算機とは

計算機(machine)とは、インタプリタ(interpreter)の一種。 プログラミング言語で記述されたソース・プログラムを解釈しながら実行する もの。普通は、それ自体もまたプログラムの一種。 両者ともインタフェースが明確。

図? ハードウェア、OS、実行時プログラム、アプリケーション

図? 計算機とは

◆システム仮想計算機とプロセス仮想計算機

システム仮想計算機
ハードウェアの代わりに、 オペレーティング・システムが動作可能な 完全なシステム環境を提供する。
プロセス仮想計算機
1つのプロセス(後述)を実行するためのプラットフォーム。

図? システム仮想計算機、プロセス仮想計算機

図? 2種類の仮想計算機

仮想計算機モニタ(virtual machine monitor, VMM)
システム仮想計算機を実現するための小さなソフトウェア。仮想計算機 モニタが動作することで、仮想計算機が作られる。仮想計算機モニタは1個で も、複数の仮想計算機を作ることができる。
ハイパーバイザ(hypervisor)
仮想計算機モニタと同義。
スーパーバイザ(supervisor)
オペレーティング・システムと同義。

◆システム仮想計算機の利用方法

◆コンピュータの集約

コンピュータの高速化で、性能が余ってきた。もともとハードウェアn台でやっ ていた仕事を、ハードウェアとしては1台に集約する。並列処理の逆。

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

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

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

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

◆さまざまな仮想計算機

IBM メインフレーム用 (1970年代)。
1台のハードウェアで数種類のOSを動かす。
Virtial PC, Real PC, VMware, Parallels Workstation
Windows PC のハードウェアと同じような動きをする。Macintosh や Linux で Windows 用のプログラムを実行するために使う。
vMac (Virtual Macintosh)
Unix, Windows 等で(古い)Macintosh 用のプログラムを動かす。
VirtualGameStation
Macintosh 上で Playstation のプログラムを動かす。

◆x86の仮想化

x86 は、Intel 社の CPU 製品で、8086 に由来するものの総称。 当初の x86 は、仮想計算機を動作させることに適していない。最近、仮想計 算機を動作させるために適した機能や命令を備えたものが出荷されるようになっ てきた。

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

エミュレータ: 別のシステムで、本物のシステムと同じ動きを真似するソフト ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。 シミュレータ: 現実世界の予測に使うもの。数式でモデル化して計算で予測 する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代 わりに使える。シミュレータは、本物の代わりには使えない。)
(文字)端末
1台の(高価な)中央のコンピュータを、複数人で TSS (Time Sharing System)で使う時に使う (安価な)コンピュータ。キーボードから打ち込まれた文字を中央のコンピュー タに送る機能と、中央のコンピュータから送られてきた文字を画面に表示する 機能がある。

◆セキュアVM/BitVisor

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

目標

このために、仮想計算機(モニタ)で、セキュリティ機能を追加する。

図? BitVisor の機能

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

図? BitVisor の起動画面

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

http://www.securevm.org/

◆Java仮想計算機

分類としては、プロセス仮想計算機。 Java 言語で書かれたプログラム(バイトコードと呼ばれる機械語に変換され たもの)を実行する。

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

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

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

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

◆仮想回線(virtual circuit)

インターネットで通信しあう2つのプログラムは、それらが動作している2台 のコンピュータがあたかも物理的な回線で直結されているかのように見える。

実際には、間に何台ものルータと呼ばれる機器がある。

◆VPN(Virtual Private Network)

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

例:

◆仮想LAN(Virtual LAN, vLAN)

1本の物理的な媒体上に、独立した複数の LAN (Local Area Network) を構築する。 物理的に切れている LAN と LAN を接続する。

通常の LAN で使うアドレスの前に vLAN タグという、vLAN を区別するアドレ スを付ける。

VPN と vLAN の違いは、本質的にはあまりないが、実際問題として、vLAN は、 「vLANタグ」を使うもの、間にルータが入らないものの意味で使われる。

◆仮想ディスク(virtual disk)

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

◆ユーザ・レベル・オペレーティング・システム

オペレーティング・システムは、本来ならハードウェア上 で動作するものである。 それを、一般のアプリケーションと同じように、他のオペレーティング・シス テム上で実行したものを、ユーザ・レベル・オペレーティング・システムとい う。

◆仮想ホスト(virtual host)

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

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

仮想ホストの実現方法

◆仮想現実感(virtual reality)

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

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

◆世俗的な「仮想」

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

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

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

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

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

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

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

ブート・ストラップ(Boot strap,靴ひも)。 ほら吹き男爵は、底なし沼に落ちた時に、自力で脱出するために、自分の靴ひ もにつかまって脱出した。

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台のコンピュータを大勢の人で同時に使 う、一人ひとりは、自分で占有しているかのように見える。

◆構成要素

API は、ソフトウェアを創る人にとって重要。 その他の要素は、一般利用者にも関係してくる。

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

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

一番人間(利用者)の目につきやすいのは、シェル。

◆シェルの機能

■ファイルとディレクトリ

ファイルとは

永続的
電源を切っても残っているもの
揮発的
電源を切ると消えてしまうもの

ディレクトリとは

◆ファイルの便利さ

物理的
ハードウェアに近い、ハードウェアの制約に縛られる
論理的(仮想的)
人間の思考、扱う情報に近い
1990年ごろコンピュータ:使いたいソフトウェアのフロッピ・ディスクを目で みて探し、コンピュータに入れて、リセットする。

2005年ごろの DVD ビデオレコーダの使い方:見たい番組を録画した DVD を目でみて探し、DVD ビデオレコーダに入れて再生ボタンを押す。

◆ファイルの性質

■プロセス

プログラムとプロセス。

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

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

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

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

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

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

◆プロセスの類語

◆利用者の代理

プロセスは、コンピュータの中で利用者の代理という意味がある。利用者は、 コンピュータが持っているハードウェア資源を利用したい時、直接コンピュー タの中に入り込むことはできない。そこで、代理人としてプロセスを作る。プ ロセスは、利用者の代わりに、コンピュータの中で活動する。

◆プロセスの操作

◆プロセスの保護

あるプロセスが、他のプロセスやOSのメモリ内容を破壊しないようにする。

◆プロセスの生成・消滅

プロセスを作るには、プログラムを実行する。WindowsやMacintosh では、プ ログラムが入っているファイルのアイコンをダブルクリックする。Unixでは、 プログラムが保存されているファイルの名前をキーボードで打ち込む。

プロセスを消す(殺す)には、実行しているプログラム(プロセス)の終了の 手順を行う。

ダブルクリックで、「画面が変る」と思うか、「プロセスがつくられる」と思 うか。

◆プロセスの強制終了

時にプロセスを強制終了する必要か出てくる。

Unix
kill コマンド、^C
Windows
Alt+Control+Delete キーを押し、タスクマネジャを実行する
MacOS
Command+Option+Escape


Last updated: 2008/10/23 15:00:54
Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>