総合科目「ネットワーク社会を支える情報技術入門 II」、2007年11月05日
筑波大学システム情報工学研究科/電子・情報工学系
新城 靖
<yas @ cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2007-11-05
あるいは、次のページから手繰っていくこともできます。
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-2007-11-05
/it-2007-11-05
.pdf
- 「仮想(virtual)」という考え方は、コンピュータとネットワークの技術
に伴い生じた考え方である。
- 「仮想」の一義的な意味は、「現物と置き換え可能なもの」の意味であ
る。「実体がない」という意味ではない。日本語訳、漢字の語感に惑わされな
いこと。
- 「仮想」がつく概念
- 仮想記憶(virtual memory)
- 仮想計算機(virtual machine)
- 仮想回線(virtual circuit)
- 仮想専用線(virtual private network)
- 仮想LAN(virtual LAN)
- 仮想現実(virtual reality)
- 現物には対応するものがない「もの(オブジェクト)」も、しばしば重要になる。
- オペレーティング・システムは、重要な「もの」を提供する。
コンピュータをうまく使いこなすには、いくつかのコンピュータの内部にある
幻影が存在すると信じることができるかどうかにかかっている。その中で、ファ
イルという幻影がもっとも重要である。
- 経済的利益を得る。未熟な情報技術を活用する時には、情報技術固有の
考え方を知っていた方が有利になる。
- 人生を楽しむ。
英語では、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 の訳語に「仮想」を当てたのは、失敗だった。
「事実上の」
- 仮想 (広辞苑)
- 仮に考えること。仮に想定すること。例:仮想敵国。
- メモリ(メインメモリ)、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)に、当分使わない所を、遅いハー
ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。
この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。
仮想記憶を使うと、メモリが100Mバイトしかないコンピュータで、200
Mバイトのメモリを使うプログラムを実行することができるようになる。
もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕
組みである。最近では、複数のプログラムが使うメモリの総量で考えることも
ある。
主記憶が足りなくなった時に、どのページを犠牲にして、空きを確保するか。
- OPT(Optimal)アルゴリズム。最も遠い将来まで利用されない部分を二次記憶へ。
- FIFO (First-In First-Out) アルゴリズム。最も早い時刻に読み込まれた部分を二次記憶へ。
- Randomアルゴリズム。ランダムに選んで二次記憶へ。
- LRU((Least Recentry Used))アルゴリズム。最も長い時間参照されてい
ない部分を二次記憶へ。
一番よいアルゴリズムは、OPTアルゴリズムだが、実現不可能である。未来の情報を使うので。
LRU は、過去の情報を使って未来を予測する方法。
野口悠紀雄の
「超整理法」の押し出しファイルは、LRUアルゴリズム。
アルゴリズム(手法、算法)とは、問題を解くためのあらかじめ記述された定義
の明確な規則、あるいは、指示の集まり。日本語などで書くこともできる。直
接的にはコンピュータでは実行できない。なんらかの方法で実行できるように
なったものは、プログラムである。
あるいは、仮想マシン、仮想コンピュータ。
計算機(専門用語)とは、コンピュータのこと。電卓ではない。
計算機(machine)とは、インタプリタ(interpreter)の一種。
プログラミング言語で記述されたソース・プログラムを解釈しながら実行する
もの。普通は、それ自体もまたプログラムの一種。
- ハードウェア
- CPU (Central Processing Unit)。「機械語命令」と呼ばれる二進数の並び
(01の並び)を、解釈・実行する。
- 入出力装置。ハードディスク、キーボード、画面、マウス、ネットワークなど。
- ソフトウェア
- 高級言語で記述されたプログラムのための実行時ソフトウェア。
両者ともインタフェースが明確。

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

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

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

図? 仮想計算機によるサーバの集約(集約後)
- 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 は、Intel 社の CPU 製品で、8086 に由来するものの総称。
- 8086, 80186, 80286
- 80386 (i386), i486
- Pentium, Pentium II, Pentium III, Pentium 4, Celeron, Xeon
- Core Solo, Core Duo, Core 2 Duo
- AMD社 Am386, K5, K6, Athlon, Duron
当初の x86 は、仮想計算機を動作させることに適していない。最近、仮想計
算機を動作させるために適した機能や命令を備えたものが出荷されるようになっ
てきた。
- Intel VT (Virtualization Technology)
- AMD virtualization (Pacifica)
エミュレータ: 別のシステムで、本物のシステムと同じ動きを真似するソフト
ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。
- Wine: Unix 上で Windows 用のプログラムを実行するためのプログラム。
Wine は、Windows のソフトウェア部分(システム・コールと実行時プログラム)をエミュレートする。
- CrossOver Mac: MacOSX 上で Windows 用のプログラムを実行するためのプログラム。
- 端末エミュレータ: 文字端末 の機能を全部、
または、部分的にエミュレートする。
シミュレータ: 現実世界の予測に使うもの。数式でモデル化して計算で予測
する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー
タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代
わりに使える。シミュレータは、本物の代わりには使えない。)
- (文字)端末
- 1台の(高価な)中央のコンピュータを、複数人で TSS (Time Sharing System)で使う時に使う
(安価な)コンピュータ。キーボードから打ち込まれた文字を中央のコンピュー
タに送る機能と、中央のコンピュータから送られてきた文字を画面に表示する
機能がある。
日本政府が決定した「セキュア・ジャパン2006」の項目の1つ。内閣官房情報
セキュリティセンターが推進する。文部科学省平成18年度科学技術振興調整費
「高セキュリティ機能を実現する次世代OS環境の開発」による支援を受ける。
筑波大学がとりまとめ。電気通信大学、東京工業大学、慶應義塾大学、奈良先
端科学技術大学院大学、豊田高専、富士通、NEC、日立製作所、NTT、N
TTデータ、ソフトイーサの技術者が参加。インテルが技術協力。
目標
- オペレーティング・システムやアプリケーションに依存しない形でセキュ
リティ機能を付加する。
- ICカード等による認証と起動制御
- ハードディスクの暗号化
- 仮想プライベート・ネットワークによる経路の暗号化
- Windows, Linux 等を実行する。
分類としては、プロセス仮想計算機。
Java 言語で書かれたプログラム(バイトコードと呼ばれる機械語に変換され
たもの)を実行する。
Java仮想計算機を使うと、さまざまな種類ハードウェア(CPU)やオペレーティ
ング・システムで共通にバイトコードという機械語が使えるようになる。
バイト・コードに変換されたアプリケーションは、どの
CPUやオペレーティング・システムでも動作する。

図? 共通のバイトコードが使える
インターネットで通信しあう2つのプログラムは、それらが動作している2台
のコンピュータがあたかも物理的な回線で直結されているかのように見える。
実際には、間に何台ものルータと呼ばれる機器がある。
本当は、インターネットという、誰もがアクセスできるネットワークを通って
いるが、あたかも 専用線(private network) で結ばれているように見せかけ
る。
例:
- PPTP
- L2PT over IPsec
- OpenVPN
- Packetix VPN (SoftEther VPN)
- SSL-VPN
1本の物理的な媒体上に、独立した複数の LAN (Local Area Network) を構築する。
物理的に切れている LAN と LAN を接続する。
通常の LAN で使うアドレスの前に vLAN タグという、vLAN を区別するアドレ
スを付ける。
VPN と vLAN の違いは、本質的にはあまりないが、実際問題として、vLAN は、
「vLANタグ」を使うもの、間にルータが入らないものの意味で使われる。
1つの大きなファイルを、1つのハードディスクと同じように扱えるようにし
たもの。仮想ディスクを使うと、次のようなことができる。
- データを暗号化して保存する。
- 複数のファイルからなるソフトウェアを1まとめにする。
- CD-R などに書き込むためのファイルを一時的に蓄える。
オペレーティング・システムは、本来ならハードウェア上
で動作するものである。
それを、一般のアプリケーションと同じように、他のオペレーティング・シス
テム上で実行したものを、ユーザ・レベル・オペレーティング・システムとい
う。
ネットワークに接続されたコンピュータをホストという。ホストは、サービス
を提供するプログラム(サーバ)を動作とせるという意味もある。
仮想ホストは、本来なら複数のコンピュータが必要であったものを、1台に集
約する。ただし、ネットワークを超えて向こう側で見た時には、1台に集約さ
れていることには気がつかせない。
仮想ホストの実現方法
高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない
ものを(コンピュータの中に)実在しているかのごとく見せかける。
人間が働き掛けると、現実と同じように応答する。感覚のフィードバックがある。
最近の日本語では、コンピュータによる原義を離れて、「現実には存在しない」
という意味が使われることがある。
以前は、空間(と時間)の制約で実現できなかったことが、コンピュータとネッ
トワークの発達により、現実に近いレベルにまで達してきた(部分的に現実の
ものと置き換え可能になってきた)という意味も生じてきている。
- 仮想都市、仮想社会
- 仮想大学、仮想教官、仮想学生
- ・・・
- 基本ソフトウェア(プログラム)。
- 電源を入れて、使えるようになった時に動いているプログラム。
(オペレーティング・システム以外のプログラムは、
すべてオペレーティング・システムの働きで実行される。)
- コンピュータの「顔」を作る。基本的な考え方と操作方法とを決める。
同じハードウェアでも、違うオペレーティング・システムが動くと、
考え方も操作方法も違う。
- ソフトウェアにより、基本的なもの(幻影、オブジェクト)を提供する。
- ファイルとディレクトリ
- プロセス
- ウィンドウ、アイコン
- 管理職。ハードウェアを管理する。メモリ管理、CPU管理。
徒然草(つれづれぐさ)。八になりし年。最初の仏問題。
OSは、他のプログラムを実行するプログラムである。
他のプログラムは、OSの力を借りてはじめて実行される。
ではOSは、誰が実行するか?
ブート・ストラップ(Boot strap,靴ひも)。
ほら吹き男爵は、底なし沼に落ちた時に、自力で脱出するために、自分の靴ひ
もにつかまって脱出した。
BIOSがブートローダをメモリに読み込み、ブートローダを実行する。
ブートローダがOSをメモリに読み込み、OSを実行する。
BIOS(Basic Input Output System)、ROM Monitor。OSをハードディスクから
メモリにコピーして、OSに制御を渡すプログラム。ROM (Read-Only Memory)
という、少容量の不揮発的なメモリに入っている。古いシステムでは、(フロッ
ピ・ディスクへの)基本的な入出力の機能が含まれていた。
- Microsoft Windows95/98/2000/NT/XP
- MS-DOS
- Unix, Linux
- MacOS
ソフトウェアを買う時、自分のパソコンのOSで動作するものを買う。
(CPU の種類も大事。同じ OS でも CPU の種類がプログラムは違うと動作しない。)
自分が使いたいソフトウェアが動作するようなOSとCPUを積んだパソコン
を買う。
- Loader
- Monitor
- バッチ処理
- TSS (Time Sharing System)
- ワークステーション用OS
- パソコン用OS
- ネットワークOS, 分散OS, 実時間OS
「パーソナル・コンピュータ」の考え方は、比較的新しい。昔は、コンピュー
タが高価だったので、1台のコンピュータを複数人(時には数百人)で同時に
使うことが一般的だった。
TSS (Time Sharing System)では、1台のコンピュータを大勢の人で同時に使
う、一人ひとりは、自分で占有しているかのように見える。
- カーネル
- シェル(User Interface)
- ウィンドウ・システム
- コマンド群
- Application Programming Interface (API) (ライブラリ、システム・コール)
API は、ソフトウェアを創る人にとって重要。
その他の要素は、一般利用者にも関係してくる。

図オペレーティング・システムの構成要素
一番人間(利用者)の目につきやすいのは、シェル。
- プログラムの実行
- ウインドウの重なりの調整
- キーボードの切り替え(フォーカスの切り替え)。どのプログラム(プロ
セス)にキーボードのデータを送るかを決める。
- ファイルのコピー
ファイルとは
- 永続的なメモリ(ハードディスクなど)を便利にしたもの(抽象化、仮想化)。
- 情報に名前を付けるためのもの
- 永続的
- 電源を切っても残っているもの
- 揮発的
- 電源を切ると消えてしまうもの
ディレクトリとは
- ファイルに名前をつけるための仕組み
- ファイル名の一覧表を含んでいるもの
- 物理的な記憶媒体によらずに、データを同じ方法であつかえる。
- 物理的な記憶媒体を、細かく分割して使える。
- 名前の管理をコンピュータがしてくれる。
- 物理的
- ハードウェアに近い、ハードウェアの制約に縛られる
- 論理的(仮想的)
- 人間の思考、扱う情報に近い
1990年ごろコンピュータ:使いたいソフトウェアのフロッピ・ディスクを目で
みて探し、コンピュータに入れて、リセットする。
2005年ごろの DVD ビデオレコーダの使い方:見たい番組を録画した DVD
を目でみて探し、DVD ビデオレコーダに入れて再生ボタンを押す。
- 名前がある。
- 内容がある。内容は、符号化された情報(データ)やプログラム。
- 属性がある(メタデータ)。
- 所有者(誰のものか)
- 時刻(いつ作ったか)
- 保護(内容を読み出せる権限があるかどうか、内容を変更する権限があるかどうか)
プログラムとプロセス。
プロセスとは、オペレーティング・システムの働きにより、二次記憶に保存さ
れていたプログラムがメモリ(主記憶)に読み込まれ、実行可能になったもの。
単にファイル(ハードディスク)に入っていも、プログラムはプログラムであ
る。
1つのプログラムを同時に2個動かすことを考えると、プログラムとプロセス
の違いがわかる。
1つのプロセスから見ると、普段は自分一人で全部のコンピュータのハードウェ
アを利用しているように見える。コンピュータの仮想化の最初。
プロセスは、時々、他のプロセスからデータを受け取る(プロセス間通信)。
プロセスは、コンピュータの中で利用者の代理という意味がある。利用者は、
コンピュータが持っているハードウェア資源を利用したい時、直接コンピュー
タの中に入り込むことはできない。そこで、代理人としてプロセスを作る。プ
ロセスは、利用者の代わりに、コンピュータの中で活動する。
- 生成(作成)
- 消滅(削除、終了と強制終了)
- 切り替え
- (プロセス間通信)
あるプロセスが、他のプロセスやOSのメモリ内容を破壊しないようにする。
プロセスを作るには、プログラムを実行する。WindowsやMacintosh では、プ
ログラムが入っているファイルのアイコンをダブルクリックする。Unixでは、
プログラムが保存されているファイルの名前をキーボードで打ち込む。
プロセスを消す(殺す)には、実行しているプログラム(プロセス)の終了の
手順を行う。
ダブルクリックで、「画面が変る」と思うか、「プロセスがつくられる」と思
うか。
時にプロセスを強制終了する必要か出てくる。
- Unix
- kill コマンド、^C
- Windows
- Alt+Control+Delete キーを押し、タスクマネジャを実行する
- MacOS
- Command+Option+Escape
人間は(コンピュータがなくても)さまざまな幻影を使っている。
- 愛、正義、根性
- お金、国家
- 整数、実数、複素数
- 分子、原子、電子、陽子、中性子、クォーク
- オブジェクト(object)
- もの。コンピュータの中にはいっている人間(専門家)のようなもの。
記憶ができる。コピーすると別のものになる。名詞。
- 機能。操作。
- オブジェクトを操作するもの。動詞。
- コピーする(通信)。
- 保存する。
- 加工する。選別する(フィルタリング)。
保存されたものは、オブジェクト。保存する行為は、機能。
幻影は、ハードウェアとソフトウェアの両方の役割によって作り上げられる。
コンピュータを構成する、幻影以外のもの。目に見えるもの。

図コンピュータのハードウェアの構成要素
- CPU(Central Processing Unit)。主に計算をする部品。
- メモリ(主記憶)
- 入出力装置(I/O)。コントローラと呼ばれる部品を
経由して接続されている。
- ハードディスク(2次記憶)
- キーボード
- マウス
- ディスプレー(液晶、CRT、)
- ネットワーク
部品は、「バス」と呼ばれる配線の束で結ばれている。
部品間は、バスを通じてデータを交換する。
コンピュータの内部の部品
- 計算のための部品
- 記憶のための部品
- 通信のための部品
(役にたつ)ビットの並び。
- プログラム
- データ
- ワープロの文書、電子メールの内容
- 辞書
- 音楽
- 映画
- 書籍(になるような内容)
- テレビ番組(になるような内容)
- 仮想記憶、仮想計算機
- ファイル、ディレクトリ、フォルダ
- プロセス
- (ウインドウ)
- (トランザクション、undo)
画面には表示されないものが、存在すると思えれば、コンピュータの扱いが簡
単になる。
コンピュータを創る側の都合で作り出してしまった不便な幻影も多い。
- さまざまな文字コード
- 再起動
- パッチ、修正プログラム、サービスパック、Windows Update
- クッキー
- (キャッシュ(cache)) -- 使い方によっては便利
情報技術社会では、コンピュータを創ってきた人の考え方(文化)を理解で
きていると便利(有利)なことも多くなってきた。
情報技術社会以前の例。
- 物理(宇宙論、原子、因果、熱力学、・・・)
- 生物(DNA、遺伝子、・・・)
Last updated: 2007/11/05 11:06:30
Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>