B−FreeOS入門書
OSは何のためにあるの?  目次へ戻る

マックOSとかウィンドウズとかBeOSとかリナックスとか...もちろんBTRON仕様OSも。
これらはパソコン向けのOSですが、一部の組み込み用コンピュータを除いてOSの無いコンピュータは存在しないといっても良いでしょう。
  組み込み用コンピュータというのは、製品の機能を実現するために組み込むマイクロコンピュータの事です。
マイクロコンピュータは元々電卓用の汎用コンピュータから始まって、今では一昔前のスーパーコンピュータを凌ぐ物も存在します。
以外な物に組み込まれている事もありますが、「マイコン」電子ジャーみたいな名前でハッキリと判る物もあります。(^^;

●OSは何をする物なの?
OSとはオペレーティングシステムの略称で、簡単に言うなら(なんかそのままですが)「コンピュータを操作する為の機構=システム」です。
ここで考えて頂きたいのは、「誰が」操作するのか?と言う事です。
「誰って人間でしょう?」という答えはもちろん正しいのですが、実はもう1つ答えがあります。
よく「○○○ for Windows98」や「□□□ 動作環境 MAC OS8.0」とかありますよね。
これは○○○や□□□というプログラムがOSを利用(操作)しているという事なのです。
つまりプログラムも「誰が」の答えの1つになる訳です。
  プログラムというのは、CPUに対して何をすれば良いのかが書かれたデータの集まりです。
では、人間とプログラムそれぞれについて、OSとの関わり方を考えてみましょう。

●人間がコンピュータを使う場合
コンピュータを使うという事は、「CPUに対してプログラムを与えて実行させて結果を得る」事になります。
ここで問題になるのが「プログラムを与えて実行」の部分です。
CPUが理解できるプログラムは、メモリ上になければなりません。
OSがある場合は、「マウスでクリック」とか「キーボードからプログラム名を入力」などの方法がありますが、 もしOSが無いとすると、CPUが判る言葉(機械語)でメモリに1つ1つ書き込んでいかなくてはなりません。
  よく機械語とアセンブラを混同している方を見かけるので補足します。
機械語というのは 0000からFFFF(16bitCPUの場合)のコードの組み合わせの集まりであり、直接CPUが理解できます。
対してアセンブリ言語(単にアセンブラと言う事が多い)という物があり、これは機械語を人間が判る形で表現したものです。
アセンブラというのはこのアセンブリ言語を機械語に変換するプログラムを指します。
ほかのプログラミング言語と異なる特徴としては、機械語とアセンブリ言語は1対1に対応している為にトコトン無駄を省ける利点がありますが、反面非常にめんどくさいです(^^;
昔あったマイクロコンピュータの評価用ボードには、OSではなくモニタープログラムというのがあり、これを利用してプログラムを与えて実行していました。
できる事といったら、
  A.メモリを読み書きする場所を設定する
  B.設定した場所のメモリの内容を(LEDに)表示する
  C.16進を入力して設定した場所のメモリに書き込む
  D.CPUのレジスタを表示する
  E.16進を入力してCPUのレジスタに書き込む
  F.指定した場所からプログラムを実行する
と、たったこれだけでした。
プログラムを動かすには、A→C→A→C→A→C→A→C→...と繰り返してすべてのプログラムを入力してFを行う訳です。
これは、モニタープログラムが非常に低機能だった為というのもありますが、モニタープログラムがなければメモリにプログラムを書き込む事すらできなくなります。

●プログラムがコンピュータを使う場合
プログラムがコンピュータを使うというのは、コンピュータがプログラムを実行するという事から考えると変な気もしますが、コンピュータがプログラムの通りに動く訳ですから正しいですよね。
一般に、プログラムでは同じ処理が何個所もある場合、サブルーチンという形でまとめてしまいます。
プログラムから見たOSは、このサブルーチンのかたまりなのです。
コンピュータ系の雑誌などで、APIという言葉を見かける事があると思います。
APIとはアプリケーションプログラムインターフェースの略で、要はOS内のサブルーチンの事を指しています。
これらのサブルーチンは、OSによって異なる為に、そのOS専用のプログラムになってしまう訳です。
では、もしOSが無いとするとどうなるでしょうか?
「サブルーチンを自分で用意するだけでしょ」というのは正しいのですが、サブルーチンの中にはハードウェアに依存した部分もあります。
たとえば色々なメーカーからディスプレイカードが発売されていますが、たいてい「○○OS用ディスプレイドライバ」と呼ばれるプログラムが付属しています。
そしてディスプレイを使用するプログラムでAPIを呼び出すと、API内では現在繋がれているディスプレイのディスプレイドライバが呼び出される訳です。
そうする事で、1種類のAPIで色々なメーカーのディスプレイが使えるようになります。
もしAPIを使わなければ、それぞれのプログラムが色々なメーカーのハードウェアに対応しなければならなくなります。
(ハードウェアメーカーが情報を出してくれなければ不可能ですし、作ってもらうにしても費用が掛かります。)
そして新しい高性能なカードが発売されても、高性能な部分はそのプログラムが対応しない限り使えないのです。
  過去に存在しないようなジャンルの製品やOSが想定している機能の上限を越えた場合はなんともなりませんが、そうでなければプログラムにとっても、またハードウェアメーカーにとってもOS側に合わせる事が利点になる訳です。

●DOSとOSの違いは?
DOSというプログラムがあります。DOS/V系のパソコンでは数年前まで主流になっていた物です。
これはディスクOSという物で、フロッピィディスクやハードディスクを操作する為のプログラムです。
一般にOSとは、ハードウェアや実行するプログラムのすべてをコントロールする物であり、DOSはディスクを対象とした機能限定版のOSという感じです。

●それ以外のOSの利点
OSには、大きく分けると次のような種類があります。
  シングルタスク・シングルユーザー
  マルチタスク・シングルユーザー
  マルチタスク・マルチユーザー
  マルチタスク・リアルタイム・シングルユーザー
  マルチタスク・リアルタイム・マルチユーザー
まずシングルタスクとマルチタスクの違いがあり、これは人間から見て同時に複数の仕事ができるかの違いです。
一般にパソコンのCPUは1つしかありませんが、たいていマルチタスクになっています。
これはOSの仕組みで実現している事であり、非常に大きな利点でもあります。
次にシングルユーザーとマルチユーザーですが、これは同時に複数の人から仕事の依頼を受けられるかの違いです。
特にネットワークで繋がれている場合に威力を発揮しますが、1台のパソコンの場合は画面が切り替えられるようにして画面単位で1台のパソコンに見立てる事が多いようです。
最後のリアルタイムというのは、コンピュータの反応速度が保証されているかの違いです。
たとえばエレベータの扉にはさまれるとすぐに開きますが、階数のボタンを押しっぱなしにすると1分後に開きますというのでは困りますよね。
これらの内容ついては、またの機会にお話したいと思います。
目次へ戻る