ハードウェアごとの違いをOSが間に入って吸収する
コンピュータを構成する装置は、製品によって命令の与え方や動作の細部が異なります。すべてのアプリケーションがその違いを直接扱うと、同じ「ファイルを開く」「画面に文字を表示する」という処理でも、装置に合わせたコードを個別に用意しなければなりません。
そこでOSは、アプリケーションとハードウェアの間に入り、よく使う機能を共通の窓口として提供します。アプリケーションはOSに処理を依頼し、OSが機器に合った方法へ変換します。このように複雑な違いを隠し、共通した扱い方を示すことを「抽象化」といいます。入力装置と出力装置を交換しても同じ種類の操作を続けやすいのは、OSと、その機器を制御するデバイスドライバが橋渡しをするためです。
ただし、どのアプリケーションでも、どのOSでも同じように動くわけではありません。アプリケーションは特定のOSが用意する機能や規則に合わせて作られるため、対応していないOSではそのまま実行できないことがあります。
CPUの順番待ちとメモリの割り当てを交通整理する
画面上では、音楽を再生しながら文書を編集し、同時にデータを受信できます。しかし、実行したい処理が増えても、計算を担うCPUを無制限に使えるわけではありません。OSは実行可能な処理を管理し、どの処理にCPUを使わせるかを切り替えます。短い時間で切り替えを繰り返すことで、複数のアプリケーションが並行して進んでいるように操作できます。この管理を「スケジューリング」と呼びます。
メモリについても、OSは各プログラムが使う領域を割り当てます。別のプログラムの領域を勝手に読み書きできないように分けることは、誤動作や情報漏えいを防ぐうえで重要です。必要なメモリが足りなくなると、OSは補助記憶装置の一部を一時的に利用する場合があります。ただし、補助記憶装置は主記憶装置と性質や速度が異なるため、空き容量があるからといって主記憶装置と同じように快適に動くとは限りません。
ファイル名の裏側で保存場所と権限を管理する
利用者から見ると、データは名前の付いたファイルとしてフォルダに整理されています。一方、記憶装置の内部では、データは一定の単位に分けて記録されます。OSのファイルシステムは、ファイル名やフォルダの階層と、実際にデータが置かれている場所との対応を管理します。そのため、アプリケーションは記憶装置上の物理的な位置を細かく指定せずに、ファイルを保存したり読み出したりできます。
ファイルには、利用者やアプリケーションごとに、読み取り・変更・実行などを許可する仕組みがあります。これは、複数の利用者や処理が同じコンピュータを使うときに、データを保護するための基本的な機能です。ただし、権限のある利用者が誤って削除した場合まで必ず防げるわけではないため、大切なデータには別の場所へのバックアップも必要です。
アプリの要求はAPIからOSの中核へ届く
アプリケーションがOSの機能を利用するときは、定められた呼び出し方を使います。この接点となるのがライブラリとAPIです。たとえば、ファイルを開く要求やネットワークへデータを送る要求は、APIなどを通してOSへ渡されます。OSの中核部分である「カーネル」は、要求が許されているかを確認し、必要なハードウェア資源を使って処理します。
アプリケーションが異常終了しても、通常はOSそのものまで終了しないよう、実行領域や権限が分けられています。しかし、OSの中核やデバイスドライバに不具合が起きると、コンピュータ全体の動作に影響することがあります。OSの更新には、機能追加だけでなく、不具合や安全上の弱点を修正するものも含まれます。更新内容を確認し、重要なデータを保存したうえで適切に適用することが、安全で安定した利用につながります。
ウィンドウやアイコンはOSそのものの一部分
OSというと、デスクトップ、アイコン、設定画面など目に見える部分を思い浮かべがちです。これらは人とコンピュータをつなぐユーザーインタフェースですが、OSの仕事の一部にすぎません。画面を使わず、文字によるコマンドを入力して操作するOSもあります。また、サーバーのように、日常的には画面を直接操作せず、ネットワーク経由で管理されるコンピュータもあります。
つまり、見た目が大きく違っていても、背後ではCPUの割り当て、メモリの保護、ファイルや機器の管理といった共通の役割が動いています。画面のデザインとOSの中核機能を分けて考えると、OSが単なる「操作画面」ではないことが分かります。
OSはパソコンとスマートフォン以外にも潜んでいる
OSはWindows、macOS、Linux、Android、iOSのように、製品名として目にするものだけではありません。家電、自動車、通信機器などに組み込まれたコンピュータでも、複数の処理を管理したり、機器を制御したりするためにOSが使われる場合があります。このような用途では、決められた時間内に処理を終えること、省電力で動くこと、限られたメモリで動くことなど、パソコンとは異なる条件が重視されます。
一方、単純な機能だけを担う機器では、OSを使わず専用プログラムが直接ハードウェアを制御する構成もあります。「コンピュータには必ず一般的なOSが入っている」とは限りません。必要な機能と利用できる資源に応じて、OSを使うか、どの種類を使うかが選ばれます。