本当に初心者の人に捧げるコンピューター入門

オペレーティングシステム(OS) その1

OSがなかったら?


 これからオペレーティングシステム(OSって略します)の話をしようと思います。
 ではちょっと質問です。ウインドウズってなんでしょう?答えを以下から選んで下さい。
  1. ウインドウズとはコンピューターのことである。
  2. ウインドウズとはOSのことである。
  3. ウインドウズとは窓のことである。
 ちょっとでも悩んだ方はいませんか?
 もちろんウインドウズとコンピューターは全く違う物です。
 またウインドウズは確かにOSですが(こんなものはシェルだという人もいますが・・・意味分からなくていいです)OSがすなわちウインドウズではありません。従ってOSのことだと言ったら間違いです。
 というわけで正解は3です(あ、石投げないで・・・)

 腐ったジョークはともかく、OSと言う言葉はみなさんもどこかで聞いたことがあると思います。ではOSとは何でしょう?

OSとはコンピューターの基本ソフトウェアである

のですが・・・まあちんぷんかんぷんですね。ただ少なくともOSがソフトウェアであることは分かります。ということはプログラムの一種、それもなんだか基本的なものだろうと想像はできますが・・・


C君の悲劇

 それではまずOSがなかったら一体どういうことになるのかお話ししましょう。

 C君は大枚の金を払って、最新鋭のコンピューターを購入しました。予算の都合でOSはなしです。もちろんこれをインターネットにつないで、ムフフな画像をいっぱい入手しようと思っています。

 さてC君は買ってきたコンピューターの電源を入れました。中で何か音がしてちゃんと動いてはいるようです。
 C君はわくわくしてキーボードを打ちました。普通ならここで画面に何か文字が出たりする物ですが・・・画面は真っ暗なままです。どうしてでしょう?

  • 当然の話です。以前にコンピューターとはとてつもなくバカなものだということを散々説明しました。ですから、コンピューターは素のままでは、キーボードを叩いたら画面に文字を表示する、などという難しいことはできません。
 C君は今度はマウスを動かしました。普通ならマウスカーソルが動くはずですが・・・そもそも画面にはマウスカーソルすら出ていません。
  • 同じことですね。もちろんコンピューターが素のままではマウスだのマウスカーソルだのといった難しいことが分かるはずもありません。
 C君は目の前が暗くなりました。しかしC君は大枚の金を既に払っているのです。元はとらねばなりません。
 そこでC君は仕方なく、キーボードを押したら画面に文字が表示されるようなプログラムを作ることにしました。
  • 恐るべき執念です。
 プログラムを作りながらC君の脳裏には、どうして俺はこんなことをしてるんだ?という疑問が駆けめぐります。俺はいんたーねっととやらを見てみたいだけなのに・・・
  • 夕食にチキンソテーが食べたいので、ひよこを育てているという感じです。
 C君が投げ出さずに済んだのは、作っているうちにだんだんとおもしろく感じられてきたからです。彼はプログラマー向きの性格だったのでしょう。
  • ひよこに情が移ってきたんですね。
 そしてプログラムはついに完成しました。しかし・・・困りました!
 キーボードもマウスも効かない状態では、プログラムをメモリーに転送してやることができません!!
 作ったプログラムをどうやって実行するのでしょう?
  • C君の野望はここに潰えました・・・(合掌)
 ・・・というわけでもう大体おわかりでしょう?
 そうです。OSとは本当に基本ソフトウェアなんです。

 すなわち、当たり前すぎて誰も気にしていないけれども絶対必要な基本機能(例えばキーボードを押したら文字が出る、とかマウスを動かしたらマウスカーソルが動くとか、ハードディスクのデータを読み書きするとか)を実現するためのプログラムなのです。

 C君がお金をけちってOSを買わなかったのは失敗でした。例えば一番ちゃちなOSがあるだけでも、とりあえずキー入力などは使えるし、プログラムを作って実行させることもできます(まあそういう場合機械語でプログラムを作らなければならないかもしれませんが)
 そうすればC君が目的を達成するためには、インターネットに接続してデータをやりとりするプログラムを作るだけで済みました。この方がキーボードの入出力プログラムを作るよりは、よほど目的に近いですね(^^)。


OSの機能

 ではそこそこちゃんとしたOSは一体どういう機能を備えているのでしょうか?
 以下はそれをざっとした表にしてみました。なんだかよく分からない?構いません。このOS編では以下の機能を説明するのが目的です。次章以降に詳しく説明しますので、ここではこんな物があるんだなぐらいに考えておいて下さい。

API OSの持つ機能をプログラムから利用するための方法です。
ディスク管理 ハードディスクなどからデータのやりとりをする機能。ファイルシステムが云々というのはここの話になります。
入出力管理 外部入出力装置から入出力する機能(キーボードとかマウスなどもこれですね)。ネットワーク関連の機能も、広い意味ではこれに入ります。
メモリ管理 メモリの割り当てをする機能。
タスク管理 プログラムの実行を制御する機能。
ユーザー管理 コンピューターを使うユーザーを管理する機能。

 これを見るとインターネットにつなぐだの、文書を編集するといったような機能はありません。そういったことを実現するためには、やっぱりプログラムを作ってやらなければなりません。
 ですからOSがあるだけでは結局やっぱりそのコンピューターは何の役にも立たない、ただの箱なのです。

     だったらOSにもっといろいろな機能を付け加えていけばどんどん便利になるんじゃないか?と思う方もいるでしょう。実際そういう発想の元にいろいろな物が付け加わったOSもあります。そう。Windows です!
     でもこれには様々な問題があって、一概に便利になるとは言えないのです。このあたりについては後でもう少し詳しく説明するつもりです。
 従って様々な仕事を本当にしようと思えば、そのためのソフトウェアを自分で作るか、またはどこからか入手しなければなりません。
 こういうソフトウェア(例えばワープロやブラウザなどです)のことをアプリケーションソフトウェアといいます。
 OSとアプリケーションのことについては次章以降でもっと詳しく説明します。


OSの種類

 OSはざっと前に書いたような機能を持っているわけですが、その機能を実現する方法は一通りではありません。またコンピューターによって上記のどの機能に重点を置くか?というようなことも異なります。
 そのため結局OSにも様々な種類が存在します。

UNIX 長い歴史があり、非常に優れたOSの一つ。単一の物ではなく、様々な種類があります。最近流行の Linux はパソコン上で実行できるUNIXの一種です。でもなかなか初めての人には難しいです。
MS-DOS パソコン上でかつて最も使われたシンプルなOS。機能的にはかなりちゃち。やっぱり初めての人には難しいです。
Windows 現在のパソコン上で最も使われているOSなんですが・・・(少なくともOSが簡単にクラッシュするというのは、決して正しいことではないです、と悪口を言い出したらきりがないので以下略)簡単そうに見えるだけでトラブったりしたらやっぱり難しいです。
Mac-OS マッキントッシュ上で動いているOS。爆弾の出ないうちは簡単そうですが・・・以下同文。

 このあたりになると結構聞いたこともある名前ではないですか?
 もちろんこれ以外にも星の数ほどOSは存在します。


ところでOSはどうやって実行する?

 ここまで読んで次のような疑問を感じた人はいないでしょうか?

通常のプログラムを実行したりするためにOSが必要なのは分かった。だがOSそのものもプログラムだと言ってなかったか?だとするとOSそのものを実行させるのは一体誰がやってるんだ?
 全くその通りです。これは結構奥の深い問題なんです。

 まず一番最初に考えられるのは、OSそのものをコンピューターにあらかじめ組み込んでしまうことです。
 実際大昔のPC−8001などのパソコンではこの手が採られていました。PC−8001を起動するとN−BASICというプログラム言語の入力画面になりましたが、このN−BASICがPC−8001のOSだったわけです。

 しかしこうすると当然PC−8001ではN−BASICしか使用できません。N−BASICにできないことがあると・・・全てを機械語で自作するしかなかったわけです(結構そういうことをみんなやってましたが)

 コンピューターはソフトを交換することで様々な機能を持てると以前書きました。そこでOS部分もやはりいろいろなものと交換できると便利です。
 というわけで実際のコンピューターは大体以下のような手順でOSを読み込んで実行します。

  1. CPUは電源が入ったらまずメモリーの0番地から命令を実行するように設計されている。
  2. メモリーの0番地にはあらかじめ簡単なプログラムが書き込まれている(これをブートローダといって、電源を切っても消えないような仕組みになっている)
  3. 0番地からのプログラムは、指定された入力装置(大抵はハードディスクやフロッピーディスク装置)の一番最初に書かれているデータを、メモリーに読み込んで実行するという機能を持っている。

 こうしておけば、ディスクの一番最初の部分に好きなOSのプログラムを書いておけばいいわけです。書くOSの種類を変えてやれば、そのコンピューターで別なOSが動き出すというわけです。
 すなわち同じDOS/Vマシンでウインドウズを動かしたりLinuxを動かしたりとかができるわけです。
  • 実際はもうちょっと何段階にもわたる過程があるのですが、みなさんの場合はとりあえずこういう考え方だと思っておけば良いでしょう。
 この過程のことをコンピューターの起動とか、ブートと言います。

 ところで、通常のパソコンではOSの書かれているディスクは決め打ちではなく、ここになかったらこれといった指定ができるようになっています。一番普通の設定は、まずフロッピーディスクを調べて、そこにディスクがあればフロッピーディスクの最初の部分、なければハードディスクの最初の部分、という順序になっています。

 冒頭のこの悲劇を・・・のA君が遭遇したトラブルはここに起因します。
 B君はコンピューターにフロッピーディスクが入っている状態で起動したため、コンピューターはフロッピーディスクの最初の部分を読みに行きました。しかしそのフロッピーディスクにはたまたまOSが入っていなかったのです。そのためコンピューターは「システムディスクがおかしい!」というエラーを出して止まったわけです。

 そのぐらい何とかしろよ!と思われるかもしれません。でも、それが何とかなるぐらいならこんな苦労はせんわ!というのが実状なのです。



前へ 目次へ 次へ