オペレーティングシステム(OS)とは
OS (オペレーティングシステム) とは、その上で複数のプログラムを同時に安定して稼働させ、さらにはハードウェアコンポーネント(CPU/メモリ/HDD/NICだけでなくプリンタ等の周辺機器)を効率的に使えるように抽象化するためのプログラムです。
OS 自体もプログラムなのですが、他の一般的なプログラムと区別するために、ここでは OS ではないプログラムを『一般プログラム』と呼ぶことにします。
OS の主なメリットは以下の 2 つです。
- 一般プログラム開発者の稼働削減および活躍範囲の拡大
- コンピュータ利用者の利便性向上
1. 一般プログラム開発者の稼働削減および活躍範囲の拡大
一般プログラム開発者は一般プログラムを稼働させるコンピュータの CPU/Memory/Disk/NIC 周辺機器を意識せずに、OS の種類だけを意識して一般プログラムを開発できます。
OS が無いコンピュータ上で直接 一般プログラムを稼働させる場合、例えばディスクは HDD なのか SSD なのか、ネットワークは有線なのか無線なのか、プリンタはどのような仕様なのか、といったハードウェア構成に特化したプログラミングを作り込む必要があります。
しかもせっかく苦労して作った一般プログラムは、そのコンピュータと同じハードウェア構成のみでしか稼働できません。
ですが OS 上で間接的に稼働させる場合、そのようなハードウェア構成に依存したプログラムは用意されています。このようなプログラムを一般に『ライブラリ』と呼びます。
一般プログラムは、ネットワークを使いたいときは『ネットワーク用のライブラリを呼び出せ』とプログラミングするだけで、ネットワーク通信ができます。
『ハードウェアを抽象化する』とは、このようにハードウェアの動きを厳密に指示(プログラミング)することなく、曖昧な指示(プログラミング)をするだけで実現できることを言います。
一般プログラム開発者はライブラリを流用することで開発コストを大幅に削減することができ、かつ、色々な種類のコンピュータに適合することができます。
2. コンピュータ利用者の利便性向上
コンピュータ利用者は複数のアプリケーションを同時に安定して使うことができます
OS が無い場合、コンピュータ利用者は 1 つの一般プログラムしか使えません。CPU もメモリも、その一般プログラムの都合だけで使われるからです。仲介者がいないと、CPU は奪い合いとなり、メモリも同じ領域を競合して使うことになりかねません。
OS 上で稼働させる場合、OS が提供する『マルチタスク(スケジューリング)機能』により、複数の一般プログラムが順番かつ公平に CPU が使われるようになります。
また、メモリについても『仮想メモリ』という仕組みにより、汎用プログラムは OS に『メモリをちょうだい!』と要求すれば OS が他の一般プログラムと競合しない物理メモリを割り当ててくれます。(これも抽象化)
代表的なものとして CPU とメモリの例を紹介しましたが、これに限らず、利便性向上のために様々な仕組みや機能を提供しています。
また、OS にはファイルシステムが必要ですが、これについては以下を参照下さい。
また、仮想メモリの仕組みについては以下を参照下さい。
コメント