OS

【解説】今さら聞けない「オペレーティングシステム」とは?

OS「オペレーティング・システム」は、コンピュータを使うときに無くてはならないソフトである。
ということは分かっていても、

「OSってなに?」

と聞かれると上手く答えられない方も多いのではないでしょうか。
そこで本記事では、初心者向けにOSの役割を分かりやすく解説します

 

OS「オペレーティングシステム」とは?

みなさんがパーソナルコンピュータ(パソコン)を購入するとき、
先ずどのようなハードウェア・スペックにするかを選んでいると思います。

パソコンの利用目的に合わせて、CPU、メモリ容量、HDD/SSDの容量など、
店頭や通販の記載を見て選んでいるのではないでしょうか。

 

次に、どのようなアプリケーションをインストールするかを考えます。
メーラー、Microsoft Office、マルチメディア等、
利用目的に合わせて様々なアプリケーションをインストールします。

これらハードウェアやアプリケーションは、それぞれの役割がハッキリしています。

 

対して、パソコンやスマホの利用目的が何であっても、
必ずオペレーティングシステム(OS)というソフトウェアも準備する必要があります。

パソコンの場合は Windows、スマホの場合は iOS・Android から選択することが多いはずです。

 

パソコンやスマホを含むコンピュータシステムでは、
大まかにハードウェア・OS・アプリケーションで構成されています。

パソコンの構成

コンピュータシステムの構成

コンピュータシステムにおいて、オペレーティングシステムが必須のソフトウェアであることは、
パソコンやスマホ、スーパーコンピュータまで変わりません。
しかし、オペレーティングシステムの役割がいまいち分からないという状況ではないでしょうか。

 

オペレーティングシステムに関して、一般的に理解されていることは次のようなことでしょう。

  • オペレーティングシステムは、コンピュータを使うために必須の最も根幹のソフトウェア
  • オペレーティングシステムがなければ、コンピュータのハードウェアは動かない
  • オペレーティングシステムがなければ、コンピュータ上のアプリケーションも動作しない
  • オペレーティングシステムは、種類(Windows, Linux, Android, etc)によって使い勝手が変わる
  • オペレーティングシステムの種類が違えば、アプリケーションの実行用プログラムは動かない

オペレーティングシステムは、ハードウェアとアプリケーション(ソフトウェア)の境界に位置しており、
いわばコンピュータシステムの土台を形成していると言えます。

「土台」というものは、使用する上で特に意識されることが少ない。
これが、モヤっとしている理由ですが、コンピュータシステムではなくてはならないものです。

 

オペレーティングシステムの役割

オペレーティングシステムの役割について、
オペレーティングシステムが生まれた背景とともにご紹介します。

 

コンピュータを使いやすくする

コンピュータのハードウェアは、そのままでは人間にとって扱いにくいものです。
コンピュータを使いやすくするためのプログラムとして、コンパイラやインタプリタが開発され、
プログラムを書くときに機械語を使わずにプログラミング言語で書けばよくなりました。

しかし、コンパイラやインタプリタだけでは、ハードウェアの複雑な機能をフルに活用できません。
また、コンピュータを動かしてプログラムを実行したりする操作も楽にしたい。

そこで、プログラミング言語を使って作られたアプリケーションが、
ハードウェアの各種機能を利用できるようにするため、オペレーティングシステムが作られました。

 

コンピュータを効率的に使う

コンピュータは人間に比べると演算などの処理が格段に高速です。
それを効率よく動かし、もてる能力を十分発揮させることが重要です。

そのため、プログラムの実行の制御をコンピュータ内の特別なプログラムで行います。
これがオペレーティングシステムの役割です。

オペレーティングシステムは、高速なコンピュータを複数のプログラムで使えるように制御し、
コンピュータ内での仕事の交通整理の役割を担っています。

 

複数の利用者がコンピュータシステムの資源を共有できる

高速なコンピュータのCPUやメモリを複数人で共有して使用する、
という使い方が効率化の観点からまず行われるようになりました。

コンピュータを共有することの利点は、プログラムやデータなどの情報の共有にもあり、
情報の蓄積・交換の道具としての機能実現もオペレーティングシステムの役割です。

現在はネットワーク化が進み、複数の利用者間での情報共有はインターネットを介して行われる。
インターネットを介した情報の共有をサポートする役割もオペレーティングシステムが担っています。

 

使いやすい論理的なマシンを提供する

パソコンは主に一人で使うものなので、コンピュータの利用効率を上げたり、
資源の共用を制御することが不要かと思うかもしれません。

しかし、たとえ一人で使う場合でも、低レベルのハードウェアをそのままでは使いにくいはず。
利用者が使いやすいようにレベルの高い論理的なマシンとして提供することも役割となります。

ハードウェアを制御するインターフェイスとしてオペレーティングシステムがAPIを提供し、
アプリケーションがシステムコールを介してハードウェアを制御できるよう、
オペレーティングシステムがハードウェアを抽象化します。

論理的マシン

論理的マシン (出典:Archive of Yone)

 

利用者のデータを適切に管理する

パソコンやスマホ、タブレットなどが普及するにつれて、
利用者個人の重要なデータがコンピュータ内に保存されるようになりました。
これらデータの適切な管理も、オペレーティングシステムの重要な役割となってきています。

特に最近のコンピュータは、インターネットに接続することが当たり前になっており、
クラウドと連携して利用者のデータを管理する場面も増えてきています。

コンピュータウイルスなどインターネットからの攻撃によって、重要なデータが漏洩しないよう、
適切なセキュリティ機能を提供することが、オペレーティングシステムに求められています。

 

オペレーティングシステムが提供する機能

オペレーティングシステムは、それを利用する人 or プログラムからみると、
使いやすい(抽象化レベルの高い)機能を提供するものです。

また、コンピュータはネットワーク経由で他のコンピュータと通信します。
その基本の制御は、オペレーティングシステムが提供する機能です。

これらの機能は、主に以下の3つのインターフェイスを通して提供されます。

  • ユーザ・インターフェイス(UI:User Interface)
  • アプリケーション・プログラミング・インターフェイス(API:Application Programing Interface)
  • 通信インターフェイス

 

ユーザ・インターフェイス(UI)

オペレーティングシステムは、コンピュータシステムを直接操作する利用者に対して、
ユーザインタフェースを提供しています。

利用者はこのインタフェースを使ってコンピュータシステムを操作し、
またプログラムの実行を制御することができます。

マウスなどを使った画面ベースの操作をグラフィカル・ユーザインターフェイス(GUI)、
文字ベースの各種コマンドを使った操作をキャラクタ・ユーザインターフェイス(CUI)と呼びます。

 

アプリケーション・プログラミング・インターフェイス(API)

アプリケーションは、例えば入出力機器に対して入出力を行いたいとき、
オペレーティングシステムの特定機能を呼び出すことによりそれを OS に依頼します。

依頼されたオペレーティングシステムは、実際の入出力に必要な複雑な制御を
アプリケーションに代わって行います。

アプリケーションは依頼を出すだけでよいので簡単なものになり、
複雑な入出力の制御を行う必要がありません。

このように、OS はアプリケーションの作成を楽にするための各種の機能を提供しており、
それらはまとめてAPIを構成しています。

API は、アプリケーションを作成するプログラマが使うものでもあり、
アプリケーションのプログラマ向けの機能と言っても過言ではないでしょう。

 

通信インターフェイス

オペレーティングシステムは、他のコンピュータと通信するための通信インタフェースを備えています。

利用者やアプリケーションは、この通信インタフェースを介して、
近くのコンピュータやインターネット上のコンピュータと通信をすることができます。
なお、通信インタフェースの中身は、プロトコルスタックです。

プロトコルに従って通信することで、種類の異なるコンピュータ同士(スマホやサーバなど)であっても
通信を行うことができるようになります。

 

オペレーティングシステムが管理する資源

オペレーティングシステムは、利用者やアプリケーションがハードウェア(CPU、メモリ、等)を
使う際の仲介役をしています。

オペレーティングシステムは、各種ハードウェアのコンポーネントを以下の条件で使わせます。

  • ハードウェアコンポーネントをある一定時間使わせる
  • ハードウェアコンポーネントの一部を使わせる

簡単に言うと、前者は「時間的な期限付き」、後者は「空間的な部分貸し」です。

 

このような使われ方をするハードウェアコンポーネントは、それを利用するものとの関係で
資源「リソース」と呼ばれています。

 

例えば、CPU(の時間)は、プログラムを実行する際に割り当てられる資源と考えることができます。
また、メモリ(の空間)は、プログラムやデータに割り当てられる資源と言えます。

 

オペレーティングシステムは、これらハードウェア資源を管理するもと、と言うことができます。
これら資源の状態を管理し、利用者やアプリケーションへの割り当ての管理を行っています。

 

まとめ

いかがでしたでしょうか。
本記事でOS「オペレーティングシステム」の具体的なイメージがつかめるようになったでしょうか。

オペレーティングシステムは、「ハードウェアを抽象化する」とか「ハードウェア資源の管理者」など
と言われています。抽象化とは、どんなハードウェアでもある程度同じように扱えるようにすることです。

大規模なソフトウェアを動かす場合は、特にOSが必須となりますので、
イメージを持ってソフトウェアの開発を行うよう心掛けておけば、スキル上達間違いなしです。

参考

OSで実現している機能の一つ「マルチプロセス」に関する部分を細かく説明しています。
【図解】いまさら人には聞けないMMUの仕組み

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-OS
-