メインコンテンツへ移動
SEMentor
基礎理論 約11分 基礎理論 curriculum

OS の役割と仕組み

オペレーティングシステムがどのようにハードウェアを管理するかを学ぶ

OS とは

OS(Operating System)は、ハードウェアとアプリケーションの間に立ち、リソースを管理するソフトウェアです。代表例は Windows, macOS, Linux です。

OS の主要機能

プロセス管理

複数のプログラムを同時実行(マルチタスク)するために、CPU 時間をプロセスに割り当てます。

プロセス A: 実行 → 待機 → 実行 ...
プロセス B:        実行 → 待機 → 実行 ...

スケジューリングアルゴリズムの例:

  • ラウンドロビン:各プロセスに均等な時間を割り当てる
  • 優先度ベース:優先度の高いプロセスを先に実行

メモリ管理

各プロセスに独立したメモリ空間を提供します。

  • 仮想メモリ:物理メモリより大きなアドレス空間をプロセスに提供
  • ページング:メモリを固定サイズ(ページ)に分割して管理
  • スワップ:使われていないページをディスクに退避

ファイルシステム

ストレージ上のデータをファイルとディレクトリの階層で管理します。

OSファイルシステム
WindowsNTFS, FAT32, exFAT
macOSAPFS, HFS+
Linuxext4, XFS, Btrfs

デバイス管理

ハードウェアとのやり取りをデバイスドライバ経由で抽象化します。アプリケーションはハードウェアの詳細を知らなくてよくなります。

システムコール

アプリケーションは OS の機能をシステムコール(syscall)を通じて利用します。

// ファイルを開く(C言語の例)
int fd = open("/etc/hosts", O_RDONLY);

主なシステムコール:

  • read / write:ファイル読み書き
  • fork / exec:プロセス生成・実行
  • socket / connect:ネットワーク通信
  • malloc / free( libc 経由):メモリ確保・解放

カーネルとユーザ空間

OS はカーネル空間ユーザ空間に分離されています。

┌─────────────────────────────┐
│  ユーザ空間                   │  アプリケーション
│  アプリA  アプリB  アプリC    │
├─────────────────────────────┤
│  カーネル空間                 │  OS の中核
│  プロセス管理 / メモリ管理     │
│  ファイルシステム / ネットワーク │
├─────────────────────────────┤
│  ハードウェア                  │  CPU / RAM / ディスク
└─────────────────────────────┘

初心者が混同しやすいポイント

OSを学ぶときは、アプリケーションとOSの責務を分けると理解しやすくなります。

できごとアプリケーションの役割OSの役割
ファイルを読む「このファイルを読みたい」と要求する権限確認、ディスクアクセス、結果返却
通信するソケットを開いてデータを送るネットワークデバイス、TCP/IPスタックを扱う
メモリを使う必要な領域を要求する仮想メモリを割り当て、保護する
複数処理を動かすプロセスやスレッドを作るCPU時間を配分し、状態を管理する

「アプリが直接ハードウェアを触っている」のではなく、OSが安全に仲介していると捉えると、権限エラーやリソース不足の意味が見えてきます。

中級者向け:障害調査でOSを見る

本番障害やローカル開発の詰まりでは、OSの観点が役立ちます。

  • CPUが高い: どのプロセスがCPU時間を使っているか
  • メモリが足りない: スワップが発生していないか
  • ファイルが読めない: パス、所有者、パーミッションは正しいか
  • ポートが使えない: すでに別プロセスがListenしていないか
  • プロセスが落ちる: 終了コード、OOM、シグナルを確認する

Linuxなら top, ps, df, free, lsof, journalctl などが入口になります。コマンドを暗記するより、「プロセス・メモリ・ファイル・ネットワークのどれを見たいのか」を先に決めましょう。

まとめ

  • OS はプロセス・メモリ・ファイル・デバイスを管理する
  • プロセスはスケジューリングにより CPU を交代で使う
  • アプリケーションはシステムコールを通じて OS 機能を利用する
  • 中級者はOSのメトリクスを使って、性能問題や権限問題を切り分ける

Beginner to Intermediate

OS の役割と仕組みを実務につなげる学び方

基礎理論は、言葉を知るだけでなく「どこで使う知識か」まで結びつけると定着します。初学者は全体像をつかみ、中級者は切り分けや設計判断に使える形へ伸ばしていきましょう。

初心者の到達点

  • 用語を暗記する前に、CPU・メモリ・OS・ストレージがどの順番で関わるかを図にして説明する。
  • 数値や単位は丸暗記ではなく、処理速度・容量・待ち時間の違いとして捉える。

中級者の観点

  • 性能問題を見たときに、CPU不足・メモリ不足・I/O待ち・OS設定のどれが疑わしいか切り分ける。
  • アプリケーションのログやメトリクスを、ハードウェアとOSの制約に結びつけて読む。

手を動かす練習

  • 普段使うPCや開発環境で、CPU使用率・メモリ使用量・ディスクI/Oを観察する。
  • 『処理が遅い』と言われたときの確認順を3ステップで書き出す。

このレッスンは未完了です。

次のレッスンへ