この端末というのは、「端末」という名前が示している通りそれだけではあ まりたいしたことはできない。「イーサネットスイッチネットワーク」を通して つながっている各種のサーバを使うことで初めていろいろなことができるわけ である。
今みなさんが使っている(はずである)のはUnix CPU サーバである。これ は一応自立した計算機であって、その上でいろいろなプログラムが動作する。 Netscape や mule といったものは、この Unix CPU サーバの上で動 作しているわけである。
来週からは、 Windows NT も少し使ってみようと思っている。これは Unix CPU サーバとは別の、 Windows CPU サーバで動く。Unix サーバと Windows サーバは絵では同じ計算機みたいに書いてあるが、別のメーカの別の計算機で ある。 なお、メイルについてはメイルサーバーとなる計算機、また WWW についても そのサーバーや、さらにその代理となる計算機がある。
NC 上の ICEMail の場合には、話が少し簡単になって、 ICEMail というプログラムが NC の上で動作し、これが mail server と会話する。
さて、前にも少し話したが、このようなややこしい仕掛けというのは、必 ずしも一般的なものというわけではない。例えば私の研究室の場合では、「メ イルサーバー」の役を割り当てられた特別な計算機があるわけではない。私は (ファイルサーバーに使われている計算機はあるが、これはファイルサービス だけをするのではなく数値計算や mule を走らせるのにも使う)他のスタッフ や大学院生も使っている計算機のなかの一つでメイルを読み書きしている。
さて、こう書くとわからないことが実はいっぱいあるわけで、
現在計算機の普通のネットワーク用の接続では上のように 1から2、2から1に いくための専用の線があって、そこに電気信号の形でデータが流れる。これは、 大学の計算機ネットワークの中で使われているイーサネットと呼ばれるものでも、 また皆さんが自宅からインターネットプロバイダなどに電話でつなぐという場 合でも同じことである。
電話の場合には、データを一旦音声信号の形にして、それが電話線を通ってな がれる。普通の計算機ネットワークでは、データが「パケット」という単位に まとめられて、そのまとまりで送ったり受けとったりする。
さて、使っているほうから見ると、例えば A さんが mule でファイルを編集 していて、 Save を実行すると、mule はそのファイルを作ろうとする。例え ば上の絵で Computer 1 で mule が動いていて、 Computer 2 がファイルサー バーであるとしよう、この時、別に mule が Computer 2 がつながっていると いうことを知っていて、データを送るというわけではない。 Mule は、別のプ ログラムに「こういう名前でファイルをつくって、こういうデータをしまいた い」という要求を出す。ここでの「別のプログラム」が OS (オペレーティン グシステム)であるということになる。OS は、このデータを受けとって、ファ イルサーバーの側にしまうべきデータであればふつうはさらにまた別のプログ ラムに要求を振り替える(UNIXの場合、 biod とか nfsiod)。これらが、もう 一度データを解釈し直して、「こういうデータを Computer 2 に送ってくれ」と いう形に変換して、また OS に返すと、最終的に OS が上の線をつかって Computer 2 にデータを送るということになる。
Computer 2 の方では、受けとったデータを逆の順番で解釈して、最終的には 自分のハードディスクにファイルをしまう。
このように、ファイルサーバーにファイルをしまうという一見簡単に見える (かどうかしらないけど)操作でも、それぞれの計算機のなかでは極めて複雑 な処理が行なわれているのである。
なぜ、このような面倒なことをするかというと、実は、このような複雑な処理 を OS とその補助プログラムがやることによって、応用プログラムである Mule や、それを使って仕事をする皆さんはこういった複雑な処理が起こって いるということをあまり(あくまでも「あまり」であって、「全く」というわ けではないが、、、)意識しなくても計算機が使えるということになっている のである。
例えば、ファイルサーバーがなくて Computer 1 が自分のハードディスクを持っ ている場合でも、 Mule が何をするかというのは全く変わらず、 OS に「ファ イルにしまって」という要求を出すだけである。 OS の方で、ファイルの名前 等からどこに書くべきかを自動的に判断して、自分のハードディスクなりファ イルサーバーなりにデータを送る。
最初のプログラムを書き込むというところで、うまいことを考えた人がいる。 「プログラムを紙テープ(あるいは磁気テープ)」から読み出して、それを実 行するというプログラムを作れば、紙テープにプログラムがあればそれを読み 込ませて実行出来る。これが、もっとも原始的な OS ということが出来よう。
さて、計算機は昔は高いものだったので、遊ばせておくのはもったいない。そ う考えると、あるプログラムがデータを読んだり、結果を書いたりしている時 間というのは無駄である。というのは、多くの場合に入出力にかかる時間は結 構長くて、計算自体はすぐに終るからである。とすると、あるプログラムが入 出力している間に、別のプログラムが計算するとか、あるいは入出力装置を沢 山つけてそれらを別々のプログラムが使うとか、そういうことをしたくなる。 これが Multitask である。 こういった要求を実現するために OS はどんどん複雑なものになってきたわけ である。
さらに、計算機に紙テープやカードでデータやプログラムを与えて、結果がプ リンターに出るというのではなく、今やっているように画面とキーボードをつ けて直接人が計算機とやりとりすればもっと便利になると考えた人がいた。こ こでも、一人が占有しては計算機がもったいないので多数の人が「同時」に使 うという機能、つまり Timesharing をつけるということが行なわれた。
UNIX という OS は、この Timesharing を比較的小さい計算機で手軽に使おう ということでアメリカ ATT のベル研で 1970年頃に開発された。当時は、 Multics という OS が開発されており、これはそれまでのあらゆる OS の便利 な機能を全部合わせたうえに Timesharing も実現しようというなかなか大変 なもの(計算機ソフトウェアのプロジェクトはこういった「何でもあり」なも のになることが珍しくないが)で、予定よりも時間、予算が大幅に超過してな お予定の性能、機能のものはできなかった。
UNIX は、比較的機能を絞って、単純なやり方で実現するという発想で(今は とにかく最初は)作られた。比較的小型の計算機でも高い性能で動いたこと、 また、ベル研が非常に安価(大学、研究機関には無償)で OS のソースプログ ラムを配布したこともあって、大学関係から次第に広まり、80年代中頃からは 新しく開発される計算機のほとんどが UNIX を OS に使うようになった。特に、 Sun Microsystems という 1980年代初めに作られたメーカーで UNIX のさまざ まな改良がなされ、上の「ファイルサーバー」の仕組みなど、複数の計算機を 一つの「ネットワーク」として利用出来るようになったことも、 UNIX の普及 を助けた。
しかしながら、多数のメーカに採用されたということは、結果的にそれぞれの メーカーが独自の形で UNIX を「改良」するということにつながった。改良自 体は悪くないが、各メーカーは改良した結果を普通公開しないので、同じ UNIX といっても少しずつ違ってきてしまうという問題がかなり深刻なものに なっている。
では、 Windows95/98/NT というのはなにで、その UNIX との関係はどんなも のかという疑問が生じるであろう。これもごく簡単に説明しておく。
これらは、1970 年頃に「マイクロプロセッサ」というものが開発されたこと が契機になって発展してきたものである。 UNIX の話の時に述べた「計算機」 というのは、少なくとも 1980年頃までは計算センターの巨大なマシンルーム を占有するような高価なものであった。しかし、 1970年ころから IC (集積 回路)の技術が進んで、計算機の基本的な機能を 1 つの IC チップに収める ことが出来るようになった。もちろん、当時は 1 つのチップに収めるために 機能を削っていたので、速度も遅かったが、とにかく完全な計算機が普通の人 が買える値段になったのである。
もちろん、普通の人が計算機を持っていても、ソフトウェアがなければ何も出 来ない。 OS と応用プログラム、あるいは自分で応用プログラムを書くための コンパイラといったものが必要になる。1970年代に広く使われたのが (Apple を別にすると) CP/M という OS であった。
OSといっても、これは UNIX や Multics が OS であったのとはだいぶ趣を異 にする。もっとも違う点はなにかというと、 timesharing と multitask の機 能がなかったことである。基本的に一人で使うものであったのでこれらは全く 必要ではなかったことが理由の一つであり、もう一つの理由は当時のマイクロ プロセッサは multitask を実現するのに必要ないろんな機能をそもそも持っ ていなかったことである。
CP/M はザイログという会社の Z-80 というチップ用に書かれていたが、これ を発展させてインテル社の 8086 というチップ用にしたものがマイクロソフト 社の MS-DOS である。これにも timesharing と multitask の機能はなかった。
インテル社の 8086 を採用した計算機の代表的なものが IBM-PC と NEC の PC-98であろう。これらは、表計算(Multiplan, Lotas 1-2-3, Excel) やワー ドプロセッサ(Wordperfect, 一太郎, MS-Word) といったものが一般家庭やオ フィスに受け入れられたこともあって非常に急速に普及した。
その間に半導体技術はどんどん進歩し、インテル社のマイクロプロセッサは今 ではちょっと前のスーパーコンピュータ以上の能力を持つまでになった。それ に合わせて、MS-DOS に OS の機能をどんどん追加してきたのが Windows であ る。また UNIX を、「オープンソース」の形で、商業ベースではなくボランティ アの集まりが作り上げたのが Linux や FreeBSD などである。
以上の簡単な歴史からわかるように、 Windows の利点は広く使われているワー プロソフトなどの応用ソフトが充実しているというところにある。これに対し て UNIX の利点はネットワーク、 multitask などの対応がしっかりしている ことということになろう。Windows は特にウィルスに対する脆弱性が近年問題 になっている。
hostnameいうコマンドを (UNIXの場合)実行すると出てくるのが CPU サーバーについた 名前ということになる。これは妙に短くて、これでは世界中には同じ名前の計 算機が沢山あるのではないかという気がするが、これは、「この計算センター の外では .ecc.u-tokyo.ac.jp がついたものが名前になる」ということで解決 する。この、下の名前のことをドメインネームという。
名前は人には便利だが、計算機にはいろいろやっかいなものである。そういう わけで、名前の他に計算機には IP アドレスという番号がついている。この二 つの関係をつけるのが前にちょっと述べた DNS である。
例えばある UNIX CPU サーバーがファイルサーバーにデータを 送るというときには、最初の図で「イーサネットスイッチネットワーク」と書 いてあるところに「この IP アドレスのところにこのデータを送ってくれ」と いう形でデータを送る。すると、このスイッチやルータといったものが交通整 理をして、ファイルサーバーのほうにデータを伝えていくことになる。
これがセンターの外の計算機でも話は同じで、 UTnetコアネットワークという のがまたルータで、そこで交通整理がされる。なお、「スイッチ」と「ルータ」 はどう違うかとかいろいろ疑問はあると思うが、これはあまりに技術的な話に なるので説明は省く。なお、上の説明も、いろいろ簡略化しているところもあ る。
この、 CPU サーバーの潜在的な能力不足に対する対応として、計算センター 側では皆さんがもっとも良く使うであろうメイルと Web については、CPU サー バー上ではなく NC 端末上で直接実行されるプログラムを準備してくれている。 これが画面左上のメニューに出ている Netscape と ICEMail である。これら を使うことは、そういう意味では CPU サーバーの負担を減らすことになって 好ましいという面もある。が、いまのところこれらと UNIX の画面との使いわ けが面倒であるとか、また ICEMail は必ずしもちゃんと動かないとかいうこ とがあって改善の余地はある。
もちろん、これは程度問題なので、あまり神経質になるのもどうかと思うが、 自分がどれくらい計算機資源を使っているかということには意識的であるよう に心がけたい。
また、毎年問題になることとして、メイルの乱用がある。電子メイルの便利な ところは沢山の人にコピーを送るのが簡単にできることで、クラス全員とか、 その気になれば東大生全員に送ることもそれほど難しくはない。これには技術 的な問題と社会的な問題があり、技術的な問題としては、あまりに沢山の人に 同時にメイルを送るようなことをすると、メイルサーバーの計算機がその負荷 に対応出来なくて止まってしまうようなことがあり得る。現在のメイルサーバー はただでさえあまり安定に動いていないので(時々読めなくなっているのに気 がついたことはあるだろうか?)、無用な負担は掛けないようにしてほしい。
Latex の場合、手順は以下のようにすること
メイルは Subject を kadai-2A (Latex の場合)または kadai-2B (ホームページの場合) として、「課題2を提出します」というメイ ルを送ること(Subject があっていれば本文はなんでも構わない)。送り先は 前回と同じ。
〆切は再来週の講義の時間である。
今回の課題(の提出)は結構手間が掛かります。まあ、そういう手間を通して どういうふうに計算機が処理しているのか少し考えてもらおうというもので すので、頑張って下さい。