オペレーティングシステムとは
コンピュータシステムは大きく、ソフトウェアとハードウェアの二つに分類されます。
- ハードウェア:柔軟性は低いが、高速に動作する
- ソフトウェア:柔軟性が高いが、高速に動作することは難しい
コンピュータシステムでは、このトレードオフを設計することが非常に重要です。
その中で、オペレーティングシステム(OS: Operating System)とは、パソコンやスマートフォンなどのハードウェアデバイスを動作するための基本ソフトウェアです。OSは、コンピュータ全体の動作を管理・制御して、ユーザがコンピュータを利用できるようにするという役割があります。
ここで、基本ソフトウェアという単語が出てきましたが、対応する単語として応用ソフトウェアがあります。この応用ソフトウェアが多くの場合、プログラミングで作成するソフトウェアになります。
パソコン上で動作するソフトウェアは次の図のように階層化されています。

アプリケーションプログラムは、WordやExcelなどのアプリケーションです。ミドルウェアはデータベースなどが該当します。OSがWindowsやMac OS, Linuxなどが該当します。
このようにソフトウェアは階層化されています。これは様々な目的があり、このような階層で実装されており、上位層は下位層が提供するサービス, APIを利用してソフトウェアを実装しています。つまり、アプリケーションプログラムは直接ハードウェアの制御は行えず、OSの機能を用いて間接的に制御を行います。実質的にハードウェアを制御できるのはOSのみで、それに委譲する形でソフトウェアは実装されます。
OSの役割
OSの役割は主に3つあるとされています。
- リソースの管理
- ハードウェアを含む制御
- 仮想化
それぞれ説明します。
リソースの管理
コンピュータシステムにおけるリソースとは、以下のようなものがあります。
ハードウェアとしてのリソースとして、CPU、メモリ、HDD, SSDなどのディスク領域, GPUなどがあります。その他にも、コンピュータに接続されているマウス・キーボードなども含まれます。
一方で、ソフトウェアのリソースとしてプログラム、データなどがあります。
これらをOSで管理することが求められます。
ハードウェアを含む制御
コンピュータシステムには、様々なハードウェアが接続されています。例えば、入力装置としてマウスやキーボード、マイクなどがあります。出力装置としては、ディスプレイやスピーカなどがあります。
他にもコンピュータシステムの根幹となるCPU、メモリ、ディスクなどの制御プログラム群がOSには含まれています。
仮想化
アプリケーションプログラムからは、ハードウェアと同等の機構があるように見えます。プロセッサ、メモリ、入出力装置などの相違点を、仮想的なハードウェア環境をアプリケーションプログラムに提供します。これらのハードウェア環境をアプリケーションプログラムを作成する際に気にする必要がないのがメリットです。
例えば、CPUやメモリが違うなどハードウェア環境が異なっていてもOSが共通なら、アプリケーションプログラムの移植や互換性を確保がしやすくなります。

まとめ
本記事では、オペレーティングシステムについて解説しました。また、OSの役割として、リソースの管理、ハードウェアを含む制御、仮想化の3つの役割があることを解説しました。
コメント