よく耳にする、 OS(Operating System)とは一体何でしょう? この問いに関して、簡単でシンプルな文章で答えるのは、とても難しいです。 雑誌などでは、Window NT と、Unix という、 OS の違いを、 以下に示すデスクトップの画像を見せて、「こんな風に違います」などと説明していますが、 デスクトップの違いが、OS の違いであるとは言えません。 ましてや、OS の特徴を表しているものでもありません。
ここで示している、X(エックス)のデスクトップ画像を見せて、 「Unix とは、こういう OS です」などとは決して言えません。 何故なら、Unix における X は、 Unix という Operating System の一部の機能ではなく、 Window System だからです。 Window System は、 OS(Operating System)や、 BIOS(Basical Input Output Software)と同じように、 ソフトウエアの論理的な構造を表す名称の一つです。 詳しくは、この後の、ウインドウシステムという概念で触れますね。
Unix 上で動作する Window System は、 X だけではなく、 X が前提とする Operating System は、 Unix だけでもありません。 このことが、Unix という Operating System と、 X という Window System が、 別々のものであることを物語っています。
余談ですが、X のことを X Window と呼んでいるケースがありますが、間違いです。 X は、Window System の一つの種類であり、 X と命名された Window System なのです。 Unix のことを Unix Operating と呼んでいるのと同じことです。 Microsoft Windows ファミリーに属する OS は、特殊です。 Microsoft Windows ファミリーに属する OS は、 Window System としての機能も持ち合せている OS と言えます。
OS の話に戻りましょう。 OS は、基本ソフトウエアとも呼ばれます。 OS というソフトウエアの概念を出来る限り簡素な文章で表してみましょう。
入出力装置、CPU、 メモリなどの資源(Resource、リソース)を無駄無く利用し、 処理時間を短縮し、計算機のコストパフォーマンスを向上させることを目的とする、 制御ソフトウエアのこと。
OS によっては、複数の仕事を同時に処理したり、 仕事と仕事の間の空き時間を有効利用するようにしたり、 物理的に搭載しているメモリ以上の容量を利用するようにしたりといった、 利用形態を可能にする。
解ったような、解らないような... 解ったのか、解っていないのかさえ、解らない... そんな文章に感じていると思います。 無理もありません。 OS は、それを利用している利用者にとって、 存在を肌身に感じることが、滅多に無いからです。 僕らにとっての空気のような存在だからです。 ページのタイトルと矛盾するようですが、 意識しなければ、OS の存在感は希薄です。
一度意識を持つと、アプリケーションの土台となっているものは、 OS なのですから、ここに好みが出るのは当然です。 ここでは、個々の OS の違いを取上げることはしません。 個々の OS の違いが実感できるように、 OS に付いての説明をしていきます。
BIOS は、 基本的な入出力を担う部分でした。 OS も、これに似たようなことをもう少し高度な機能を持って行います。 OS 上では、色々なアプリケーションが動作します。 これらのアプリケーションが、キーボードからの入力を処理するものだとしたら、 OS は、キーボードコントローラと、アプリケーションの橋渡し役をしています。 キーボードだけではなく、ディスプレイや、FDD、 HDD に対する入出力にも、同じことをしてくれています。
また、計算機の資源は、これら外部装置だけでなく、 CPU や、メモリも資源です。 アプリケーションが起動実行されるということは、 OS が、CPU やメモリを、 そのアプリケーションに割り当てているからなのでした。 メモリ資源の制御は、アプリケーションに、 どのようにメモリを割り当てていくか、ということです。 メモリの割り当ては、アプリケーションが使うデータの記憶のためだけではなく、 アプリケーションプログラムを配置するメモリはどこにするのかということも含まれます。 CPU 編で、 “CPU は、プログラムという脚本を、メモリからしか読み込めない”と書きましたね。 アプリケーションプログラムの為に、未使用で必要十分なメモリ空間を見つけ出し、 そこに、HDD からプログラムコードを読み込み、 CPU 資源を割り当てる (CPU に読み込んだプログラムを実行させる)のです。
また、複数のアプリケーションを同時に実行することが可能な OS もあります。 複数のアプリケーションを、 同時に実行するための制御機能を持っている OS は、 マルチタスク OS (Multi Task Operating System、MTOS)と呼ばれます。 マルチタスク OS では、 個々のアプリケーションのことを、タスク(Task、仕事)とか、 プロセス(Process、処理単位)と呼んだりします。
タスク切替 単位時間 |
アプリケーション #1 |
アプリケーション #2 |
アプリケーション #3 |
|||
#1 |
実行
|
休止 |
休止 |
|||
#2 |
休止 |
実行
|
休止 |
|||
#3 |
休止 |
休止 |
実行
|
|||
#4 |
実行
|
休止 |
休止 |
|||
#5 |
休止 |
実行
|
休止 |
|||
| · · · |
· · · |
· · · |
· · · |
|||
マルチタスク OS を利用していると、 アプリケーションが同時進行で実行されているように利用者は感じていますが、 それは、OS が、 その様な効果を生むように、CPU 資源の割り当てを制御しているからです。 CPU が実行できるプログラムの流れは、 瞬間瞬間では、たった一つなのですが、 OS が、どのアプリケーションに対して CPU を割り当てるか (CPU にどのアプリケーションを実行させるか)を、 とても短い時間単位ごとに切り替えているから、同時に実行しているように感じるのでした。
そして、同時に複数のアプリケーションが実行する場合は、 お互いのプログラムコードやデータが、お互いに干渉することの無い様に、 それぞれのメモリー空間を保護しつつ、別々の空間となるように調整します。 お互いのメモリー空間を保護するというのは、 自分のために割り当てられたメモリー空間は、自分だけがアクセスできるようにすることです。 自分以外のアプリケーションが、自分のメモリー空間に勝手に書き込んでしまったら、 プログラムは暴走(最近は、フリーズなんて言いますね)してしまうからです。
メモリーの保護に関しては、全くアクセスを許さない、読み込みだけ許す、アクセス全般を許す、 というモードが用意されており、それぞれの目的に応じて、保護モードが設定されます。
また、キーボードからの入力を処理するアプリケーションが、同時に複数実行状態にあったのならば、 利用者の操作に応じて、キーボードからの入力を、どのアプリケーションに引き渡すべきなのかの判断もしています。 資源の割り当てと制御は、ディスプレイや、FDD、 HDD に対する入出力にも、同じことをしてくれています。
マルチタスク OS の場合、 計算機資源の制御をこのように行うわけですが、 この辺の詳しい説明は、この後の、マルチタスクという概念で触れることにします。