総合科目「IT革命を解き明かす」、2004年10月18日
電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2004-10-18
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
印刷配布資料 http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2004-10-18
/it-2004-10-18
.pdf
- コンピュータの内部には、ハードウェア以外に、ソフトウェアの働きに
よってつくられたさまざまな幻影(オブジェクト、仮想的な「もの」)が存在する。
- 基本的な幻影を創っているソフトウェアが、オペレーティング・システムである。
- コンピュータが発達してきて、「仮想(virtual)」という考え方が広がってきた。
- 仮想記憶(virtual memory)
- 仮想計算機(virtual machine)
- 仮想回線(virtual circuit)
- 仮想専用線(virtual private network)
- 仮想LAN(virtual LAN)
- 仮想現実(virtual reality)
- 基本的な幻影を創っているソフトウェアが、オペレーティング・システムである。
- コンピュータに仕事をさせるには、代理人としてプロセスをつくる。
コンピュータをうまく使いこなすには、いくつかのコンピュータの内部にある
幻影が存在すると信じることができるかどうかにかかっている。その中で、ファ
イルという幻影がもっとも重要である。
人間は(コンピュータがなくても)さまざまな幻影を使っている。
- 愛、正義、根性
- お金、国家
- 整数、実数、複素数
- 分子、原子、電子、陽子、中性子、クォーク
- オブジェクト(object)
- もの。コンピュータの中にはいっている人間(専門家)のようなもの。
記憶ができる。コピーすると別のものになる。名詞。
- 機能。操作。
- オブジェクトを操作するもの。動詞。
- コピーする(通信)。
- 保存する。
- 加工する。選別する(フィルタリング)。
保存されたものは、オブジェクト。保存する行為は、機能。
幻影は、ハードウェアとソフトウェアの両方の役割によって作り上げられる。
コンピュータを構成する、幻影以外のもの。目に見えるもの。
図コンピュータのハードウェアの構成要素
- CPU(Central Processing Unit)。主に計算をする部品。
- メモリ(主記憶)
- 入出力装置(I/O)。コントローラと呼ばれる部品を
経由して接続されている。
- ハードディスク(2次記憶)
- キーボード
- マウス
- ディスプレー(液晶、CRT、)
- ネットワーク
部品は、「バス」と呼ばれる配線の束で結ばれている。
部品間は、バスを通じてデータを交換する。
コンピュータの内部の部品
- 計算のための部品
- 記憶のための部品
- 通信のための部品
コンピュータの中では、いろいろな種類の記憶のための部品、すなわち、メモ
リが使われている。もっとも重要なものは、メインメモリ(主記憶)と呼ばれ
ているもので、単にメモリといった時には、メインメモリを差す。
メインメモリは、IC(Integrated Circuit、シリコンという元素による半導
体で作られた電気回路)でできている。その他に、ハードディスクやフロッピ・
ディスクも重要な記憶のための部品である。
- メモリ(RAM(Random Access Memory))
- 実行中のプログラムを保持する。加工するデータを一時的に保持する。
揮発的(電源を切ると消えてしまう)。非常に速い。容量は、ハードディスクよ
りは小さい。
- ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
- プログラムやデータをデータを保持する。永続的(電源を切っても
残っている)。容量は、メモリより大きい。
メモリには、数字で番地(アドレス)が付いている。番地を指定して、データ
を保存する。番地を指定すると、データが取り出せる。
(役にたつ)ビットの並び。
- プログラム
- データ
- ワープロの文書、電子メールの内容
- 辞書
- 音楽
- 映画
- 書籍(になるような内容)
- テレビ番組(になるような内容)
- ファイル
- ディレクトリ(フォルダ)
- プロセス
- (ウインドウ)
- 仮想記憶、仮想計算機
- (トランザクション)
画面には表示されないものが、存在すると思えれば、コンピュータの扱いが簡
単になる。
コンピュータを創る側の都合で作り出してしまった不便な幻影も多い。
- さまざまな文字コード
- 再起動
- パッチ、修正プログラム、サービスパック、Windows Update
- クッキー
- (キャッシュ(cache)) -- 使い方によっては便利
IT革命の時代には、コンピュータを創ってきた人の考え方(文化)を理解で
きていると便利(有利)なことも多くなってきた。
例:
- 仮想
- (キャッシュ(cache)) -- 使い方によっては不便
- Undo
- トランザクション
IT革命以前の例。
- 物理(宇宙論、原子、因果、熱力学、・・・)
- 生物(DNA、遺伝子、・・・)
ファイルとは
- 永続的なメモリ(ハードディスクなど)を便利にしたもの(抽象化、仮想化)。
- 情報に名前を付けるためのもの
- 永続的
- 電源を切っても残っているもの
- 揮発的
- 電源を切ると消えてしまうもの
ディレクトリとは
- ファイルに名前をつけるための仕組み
- ファイル名の一覧表を含んでいるもの
- 物理的な記憶媒体によらずに、データを同じ方法であつかえる。
- 物理的な記憶媒体を、細かく分割して使える。
- 名前の管理をコンピュータがしてくれる。
- 物理的
- ハードウェアに近い、ハードウェアの制約に縛られる
- 論理的(仮想的)
- 人間の思考、扱う情報に近い
1990年ごろコンピュータ:使いたいソフトウェアのフロッピ・ディスクを目で
みて探し、コンピュータに入れて、リセットする。
2004年ごろの DVD ビデオレコーダの使い方:見たい番組を録画した DVD
を目でみて探し、DVD ビデオレコーダに入れて再生ボタンを押す。
- 名前がある。
- 内容がある。内容は、符号化された情報やプログラム。
- 属性がある。
- 所有者(誰のものか)
- 時刻(いつ作ったか)
- 保護(内容を読み出せる権限があるかどうか、内容を変更する権限があるかどうか)
ファイルの内容による分類
- テキスト・ファイル(text file)
- 内容として符合化された文字だけを含むファイル
- バイナリ・ファイル(binary file)
- テキスト・ファイル以外のファイル。CPUが解釈できるプログラムや
画像・音声データを含んだファイル。
ただし、「文字」といっても、ASCII という方法で符合化されたものだけを指
すことがある。日本語の漢字を含むファイルの場合、テキスト・ファイルとし
て扱えることもあるが、バイナリ・ファイルとして扱わなければならないこと
がある。たとえば、インターネットでファイルをコピーするプログラム(ftp)
では、漢字を含むデータをコピーする時に、バイナリ・ファイルとして扱う必
要がある場合がある。
テキスト・ファイルは、次のような所で使われている。
- 電子メールの1つひとつ
- ネットワーク・ニュースの記事1つひとつ
- WWW のデータのうち、HTML で書かれたもの
- ソース・プログラム
テキスト・ファイルを作ったり、内容を修正するには、テキスト・エディタ
(text editor)というプログラムを使う。テキスト・エディタは、ワープロと
似ているが、文字に飾りを付けたり、図を入れたりすることはできない。
実習室のパソコンには、「メモ帳」、「秀丸エディタ」という名前のテキスト・
エディタが使えるようになっている。Unix サーバには、emacs (mule) という
名前のテキスト・エディタが入っている。
- 基本ソフトウェア(プログラム)。
- 電源を入れて、使えるようになった時に動いているプログラム。
(オペレーティング・システム以外のプログラムは、
すべてオペレーティング・システムの働きで実行される。)
- コンピュータの「顔」を作る。基本的な考え方と操作方法とを決める。
同じハードウェアでも、違うオペレーティング・システムが動くと、
考え方も操作方法も違う。
- ソフトウェアにより、基本的なもの(幻影、オブジェクト)を提供する。
- ファイルとディレクトリ
- プロセス
- ウィンドウ、アイコン
- 管理職。ハードウェアを管理する。メモリ管理、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 は、ソフトウェアを創る人にとって重要。
その他の要素は、一般利用者にも関係してくる。
図オペレーティング・システムの構成要素
一番人間(利用者)の目につきやすいのは、シェル。
- プログラムの実行
- ウインドウの重なりの調整
- キーボードの切り替え(フォーカスの切り替え)。どのプログラム(プロ
セス)にキーボードのデータを送るかを決める。
- ファイルのコピー
仮想記憶とは、オペレーティングシステムの働きにより、実際に備えているメ
モリ容量よりも大きなプログラムを動かすための仕組みである。
コンピュータには、2種類の記憶するためのハードウェアが使われている。
- メモリ(memory)、主記憶(main memory,primary storage)
-
CPUと同じく、半導体で作られている(IC)。速度が速く、値段が高い。
CPUが直接データをアクセスできる。
(電源を切ると、内容が失われる。)
- 二次記憶(secondary storage)
-
ハードディスクなど。半導体のメモリと比較して、速度が遅く、値段が安い。
CPUが直接データをアクセスでない。
(電源を切っても、内容は保存される。)
図 仮想記憶によるプログラム(プロセス)の実行
仮想記憶を使うと、メモリが100Mバイトしかないコンピュータで、200
Mバイトのメモリを使うプログラムを実行することができるようになる。
もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕
組みである。最近では、複数のプログラムが使うメモリの総量で考えることも
ある。
仮想記憶の基本的なアイディアは、すぐに使うところだけを速いメモリ(IC)
に、当分使わない所を、遅いハードディスクに置き、ディスクとメモリの内容
を入れ替えながら仕事を進めることである。この時、速いメモリを主記憶
(main memory, primary storage)、遅いハードディスクを二次記憶(secondary
storage)とう。
主記憶が足りなくなった時に、どうするか。
- OPTアルゴリズム。最も遠い将来まで利用されない部分を二次記憶へ。
- FIFOアルゴリズム。最も早い時刻に読み込まれた部分を二次記憶へ。
- Randomアルゴリズム。ランダムに選んで二次記憶へ。
- LRU((Least Recentry Used))アルゴリズム。最も長い時間参照されてい
ない部分を二次記憶へ。
一番いいのは、OPTアルゴリズムだが、実現不可能。未来の情報を使うので。
LRU は、過去の情報を使って未来を予測する方法。
野口悠紀雄の
「超整理法」の押し出しファイルは、LRUアルゴリズム。
アルゴリズム(手法、算法)とは、問題を解くためのあらかじめ記述された定義
の明確な規則、あるいは、指示の集まり。日本語などで書くこともできる。直
接的にはコンピュータでは実行できない。なんらかの方法で実行できるように
なったものは、プログラムである。
仮想記憶は、「仮想」という言葉が付く言葉で、もっとも基本的なもの。
- 仮想記憶(virtual memory)
- 仮想計算機(virtual machine)
- 仮想回線(virtual circuit)
- 仮想専用線(virtual private network)
- 仮想LAN(virtual LAN)
- 仮想現実(virtual reality)
ファイルは、ハードディスクを仮想化したものである。
類語:論理(logical)(←→物理、物理フォーマット/論理フォーマット)、
抽象(abstract)
反語:実(real)
辞書の定義は、今一つ。仮想記憶との類推で仮想という考え方を押さえたい。
「仮想敵国」の「仮想」と「仮想記憶」の「仮想」は別物である。
- 仮想 (広辞苑)
- 仮に考えること。仮に想定すること。例:仮想敵国。
- 仮想敵国 (広辞苑)
- a hypothetical [potential] enemy。
- virtual--形A(比較なし) (研究社新英和中辞典)
-
1 (表面または名目上はそうでないが)事実上の, 実質上の,実際(上)の:
It was a virtual promise. (約束ではないが)約束も同然だった /
He was the virtual leader of the movement. 彼はその運動の事実上の
指導者だった.
-
2 【光】虚像の(<−>real): a virtual image 虚像.
計算機とは、コンピュータのこと。電卓ではない。
ハードウェアには存在しないが、実際の計算機と同じように命令セット、メモ
リ、入出力など機能をソフトウェア的に実現したもの。
- IBM メインフレーム用 (1970年代)。
- 1台のハードウェアで数種類のOSを動かす。
- Virtial PC, Real PC, VMware
- Windows PC のハードウェアと同じような動きをする。Macintosh や
Linux で Windows 用のプログラムを実行するために使う。
- vMac (Virtual Macintosh)
- VirtualGameStation
- Java仮想計算機
- Java 言語で書かれたプログラムを実行するための仮想計算機。
Java仮想計算機を、いろいろな環境(Unix, Windows, Macintosh, 携帯電話)で
ソフトウェア実現すれば、Javaで書かれたプログラムがそれらの
環境でそのまま動作する。
エミュレータ: 別のシステムで、本物のシステムと同じ動きを真似するソフト
ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。
- Wine: Windows のソフトウェア部分(API)をエミュレートする。
- 端末エミュレータ: 文字端末 の機能を全部、
または、部分的にエミュレートする。
シミュレータ: 現実世界の予測に使うもの。数式でモデル化して計算で予測
する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー
タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代
わりに同じように使える。)
- (文字)端末
- 1台の(高価な)中央のコンピュータを、複数人で TSS で使う時に使う
(安価な)コンピュータ。キーボードから打ち込まれた文字を中央のコンピュー
タに送る機能と、中央のコンピュータから送られてきた文字を画面に表示する
機能がある。
インターネットで通信しあう2つのプログラムは、それらが動作している2台
のコンピュータがあたかも物理的な回線で直結されているかのように見える。
実際には、間に何台ものルータと呼ばれる機器がある。
本当は、インターネットという、誰もがアクセスできるネットワークを通って
いるが、あたかも 専用線(private network) で結ばれているように見せかけ
る。
例:
1本の物理的な媒体上に、独立した複数の LAN を構築する。
物理的に切れている LAN (主に Ethernet) と LAN を、接続する。
通常の LAN で使うアドレスの前に vLAN タグという、vLAN を区別するアドレ
スを付ける。
高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない
ものを(コンピュータの中に)実在しているかのごとく見せかける。
人間が働き掛けると、現実と同じように応答する。
- 仮想都市、仮想社会
- 仮想大学、仮想教官、仮想学生
- ・・・
現実と仮想の違いは、存在するのか。
現実とは、何なのか。
現実も仮想も、脳の働きによって作り出されたもの。
プログラムとプロセス。
プロセスとは、オペレーティング・システムの働きにより、二次記憶に保存さ
れていたプログラムがメモリ(主記憶)に読み込まれ、実行可能になったもの。
単にファイル(ハードディスク)に入っていも、プログラムはプログラムであ
る。
1つのプログラムを同時に2個動かすことを考えると、プログラムとプロセス
の違いがわかる。
1つのプロセスから見ると、普段は自分一人で全部のコンピュータのハードウェ
アを利用しているように見える。コンピュータの仮想化の最初。
プロセスは、時々、他のプロセスからデータを受け取る(プロセス間通信)。
プロセスは、コンピュータの中で利用者の代理という意味がある。利用者は、
コンピュータが持っているハードウェア資源を利用したい時、直接コンピュー
タの中に入り込むことはできない。そこで、代理人としてプロセスを作る。プ
ロセスは、利用者の代わりに、コンピュータの中で活動する。
- 生成(作成)
- 消滅(削除、終了と強制終了)
- 切り替え
- (プロセス間通信)
あるプロセスが、他のプロセスやOSのメモリ内容を破壊しないようにする。
プロセスを作るには、プログラムを実行する。WindowsやMacintosh では、プ
ログラムが入っているファイルのアイコンをダブルクリックする。Unixでは、
プログラムが保存されているファイルの名前をキーボードで打ち込む。
プロセスを消す(殺す)には、実行しているプログラム(プロセス)の終了の
手順を行う。
ダブルクリックで、「画面が変る」と思うか、「プロセスがつくられる」と思
うか。
時にプロセスを強制終了する必要か出てくる。
- Unix
- kill コマンド、^C
- Windows
- Alt+Control+Delete キーを押し、タスクマネジャを実行する
- MacOS
- Command+Option+Escape
新城の最近の研究成果。
SF (Science Fiction) のパラレルワールド(parallel world, parallel
universe)を、オペレーティング・システムのレベルで実現する。
図 SFのパラレルワールド
SFでは、時々別の世界にジャンプしたり人が入れ替わったりする。
Undo とは、do の効果を打ち消して、もともと do しなかったことにする。
(do not とは違う。)
世界OSでは、ファイルの内容を変更すると、2つの世界ができる。
図 世界OSで使える世界の操作
実際には、先に世界を作り、その中でファイルの内容を書き換える。うまくいっ
たら、融合する。失敗すれば削除して、変更の結果を無効にする。
普通の仮想計算機では、融合はできない。継承のコストが大きい。
- クラックキング、攻撃による破壊からの迅速な回復。攻撃される
可能性があるプログラム、
怪しいプログラムを子世界で実行して、破壊されたら削除して回復させる。
- 投機的処理/楽観的処理。実行しろと命じられる前に先行的に実行する。
- 複数のPCでのファイル内容の統一。複数の世界の内容を比較して
更新された部分を反映させる。
画面の裏側にあるオブジェクト、仮想的な物が存在すると信じることができる
か。