コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

コンピューターとOSの役割

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

コンピューターとOSの役割

このレッスンで分かること

  • OS は CPU・メモリ・ディスク・ネットワークといったハードウェアを抽象化し、アプリと利用者の橋渡しをするソフトウェアです
  • アプリは OS が提供する API を呼ぶだけで、機種ごとの違いを意識せずに動かせます
  • 「OS とは何か」を一言で言うと 資源管理と抽象化を行うソフトウェアの基盤 という整理になります

コンピューターとOSの役割 とは

コンピューターとOSの役割。本レッスンでは、コンピューターとOSの役割 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

OS が「資源管理」と「抽象化」を行う具体例

資源OS が管理する具体内容アプリから見える抽象
CPU 時間スケジューラ、プリエンプションスレッド、プロセス
メモリページング、仮想メモリ、保護malloc / new で取れるアドレス空間
ストレージファイルシステム、デバイスドライバファイル、ディレクトリ
ネットワークTCP/IP スタック、ソケットsocket() API
入出力デバイスドライバ、割り込み処理read() / write() システムコール

OS の定義

オペレーティングシステム(OS)は、コンピューターの 資源 をアプリに分配し、複数のプログラムが安全に同時実行できるように調停するソフトウェアです。資源とは、CPU の実行時間、メモリ領域、ディスク容量、ネットワーク帯域、入出力デバイスなどを指します。OS が無いと、各アプリは自分でドライバーを書き、メモリを直接管理し、他のアプリとの衝突を避ける仕組みまで実装する必要があります。

歴史的には、研究者がカードリーダーやテープに直接命令を書いていた 1950 年代から、徐々に「共通処理を一箇所にまとめる」発想が芽生え、IBM の OS/360(1964)や Multics(1969)、それを簡略化した UNIX(1971)が現在の OS の祖先になりました。

役割の図解

diagram (will load when visible)

OS の中心にいるのが カーネル で、ハードウェアと直接やり取りします。アプリはカーネルが用意した API(システムコール)を通して間接的にハードウェアを利用します。

具体例

ターミナルで echo hello > /tmp/a.txt と打つと、内部では下記の流れになります。

ターミナル

echo hello > /tmp/a.txt
  1. シェルが echo を処理する(echo 自体は多くのシェルで組み込みコマンドのため fork/execve は発生しないが、外部コマンド /bin/ls などを起動する場合は fork でプロセスを複製し execve でそのプログラムに切り替える)
  2. echo は標準出力に "hello\n" を書こうとするが、シェルがリダイレクトで /tmp/a.txtopen 済み
  3. write システムコールでバイト列をファイルディスクリプタに送る
  4. カーネルが対応するファイルシステムドライバを呼び、ディスクに書き込む

ユーザーは > 1 文字書いただけですが、その裏で OS が何十ものシステムコールを処理しています。

トレードオフとよくある誤解

  • 「OS は遅い・重い」というイメージは半分正解で、抽象化のオーバーヘッドは確かに存在しますが、その代わり どのアプリも同じ書き方で動く という巨大な利点があります
  • 「OS と GUI は同じもの」は誤解で、Windows のエクスプローラや macOS の Finder は OS の上で動く アプリ です。GUI が無くてもサーバー用 Linux は普通に動きます
  • 「OS は 1 つのプログラム」も誤解で、実際にはカーネル本体、シェル、システムデーモン、ライブラリの集合体です

やってみよう

ターミナルで uname -a を実行し、自分の OS 名、カーネルのバージョン、CPU アーキテクチャを確認しましょう。次に ps -ef | head で現在動いているプロセスを覗き、init や launchd といった「OS が自動で起動する管理プロセス」が常駐していることを確かめてみてください。

まとめ

このレッスンの要点は、資源管理と抽象化 / カーネルとシステムコール / OS とアプリ・GUI の区別 の 3 点です。実務でこれらを切り分けて説明できるようになると、設計レビューや障害対応の精度が一段上がります。

理解度チェック

Q. 次のうち、OS の「カーネル」の役割として正しいものはどれ?

  1. GUI の描画を司る
  2. ハードウェアと直接やり取りし、アプリに資源を分配する
  3. ブラウザを高速化するキャッシュ層
  4. ファイル形式を変換する翻訳機能
答えを見る

正解は 2。カーネルが OS の中心で、ハードウェアとの直接やり取り (デバイスドライバ、メモリ管理、スケジューリング) を担い、アプリにはシステムコール経由で機能を提供します。GUI は OS の上で動くアプリ群です。

出典 (References)

最終更新: 2026-05-28

関連レッスン

よくある質問

Q. このトピックは実務でどう役立ちますか?

A. DB のクエリ最適化、API 設計、データ構造の選択など、設計判断の根拠になります。表面的にライブラリを使うだけでなく「なぜそれが速いのか」を理解できると、性能問題を未然に防げます。コーディング面接でも頻出のテーマです。

Q. 計算量はどう求めれば良いですか?

A. ループのネストごとに掛け算する、再帰なら漸化式から解く、というのが基本です。Big-O 表記は定数倍と低次の項を無視するため、n の指数(n²、n log n など)に注目してください。最悪・平均・最良の 3 つを意識すると説得力が増します。

Q. 覚えるべき定番アルゴリズムは何ですか?

A. 二分探索、クイックソート/マージソート、BFS/DFS、ダイクストラ、DP の基本問題(フィボナッチ・ナップサック)が必修です。これらを「白紙から書ける」状態にすると、応用問題が一気に解けるようになります。

次のレッスン

次は OSの歴史(バッチ→マルチタスク→マルチユーザー) で、コンピューターとOSの役割 を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. OSとは の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. OSとは とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン