OSとはハードウェアの抽象化を行うプログラムのことである

OSの本質を考える上で、抽象化という概念をイメージすると理解しやすいように思う。

抽象化とは、内部のことをとやかく言わないで、外界とのインターフェースを通じて対称とやりとりをする仕組みをつくることと言える。


数学の関数もこれとまったく同じ構造といえる。

この数式は、xに具体的な値を入力すると、関数が実装している具体的な手続きにもとづいて(この手続きは遮蔽されていてもよい)、yが出力されてくるということを意味している。

コンピュータシステムにおいても、抽象化の概念は大変重要だ。
Operating Systemはハードディスクなどのハードウェアとアプリケーションソフトウェアとの間に入って、ハードウェアを仮想化している。
このようにOSがハードウェアを抽象化することのメリットは、ハードウェアに対しての具体的な操作をOSが一手に引き受けることで、アプリケーションは共通のシステム・コールという入力を使用すればよくなるからである。OSが無い場合のことを考える。
OSが無い場合、アプリケーションがハードウェアを利用する場合、ハードウェアを使用するための方法を具体的に実装する必要が出てくる。先ほどのようにハードウェアとの間にOSが存在し、共通の規格であるシステム・コールを発行しさせえすればよかったのとは大違いである。

この話を発展させると、「インターフェースがあるところには抽象化がある」と言えるのではないだろうか。なにもOSだけの話ではない。流通システムを例にとると、お店(小売業者)にとって、流通システムとは生産者との間のインターフェースであり、各地に点在する生産者からダイレクトに買い付けるよりも問屋に注文した方が、細かい連絡や事務手続きが省けて、かつ大量注文が可能である。しかし、そのかわり流通システムを介すると、そこでお金が発生する。それは当然の事である。

OSも流通業者と考えれば、コストが発生するのは当たり前である。この場合のコストとは、お金ではなく、CPUへの負荷である。OSが細かいハードウェアの制御を一手に引き受けてくれるので、OS自体がCPUに負荷をかけることは避けられないのである。エアコンなどの家電製品に組み込まれるプログラムは、組み込みプログラムといってOSを利用せず、直接ハードウェアを制御していることが多い。この利点は、OSを動かすコストを回避できる点にある。OSを使用するかしないかは利用できる資源によってケースバイケースと言える。


以上をまとめると、OSはハードウェアとアプリケーションの位置して、ハードウェアを抽象化する。そして、アプリケーションに共通の規格であるシステムを提供する事で、アプリケーションがハードウェアを容易に制御できるようにするプログラムのことをいうのである。

(注)図中の矢印は一方行であったが、逆方向のやり取りがあってもかまわない。