※この記事は自分用の学習記録です。間違いがあれば後日追記します。
1. そもそもOSって何してるの?
アプリは直接ハードウェア(CPU/メモリ/SSD)を触れません。間にいて共通のルールを提供するのがOSです。
OSの主な仕事(運用で効いてくる要点)
• プロセス管理:実行/停止/切替(スケジューリング)
• メモリ管理:各プロセスに安全にメモリを割当(仮想記憶、ページング)
• ファイル / 入出力:異なる装置(ディスク/ネットワーク等)をファイルディスクリプタ+read/write/send/recv等の共通作法で扱えるよう抽象化
• ユーザー/権限:認証・認可、プロセス隔離(最小権限)
• ネットワーク:TCP/IPスタック、ソケットAPIの提供
• 割り込み(Interrupt) とドライバ:ハードからの「合図」に反応し、OSが適切に対処
• プロセス間通信(IPC):パイプ、UNIXドメインソケット、共有メモリ、シグナル など
用語:ファイルディスクリプタ(FD) は「開いている資源の番号」。STDIN=0 / STDOUT=1 / STDERR=2。/proc//fd で確認できます。
2. Linux・Windows・macOSの違い(ざっくり)
| 観点 | Linux | Windows | macOS |
|---|---|---|---|
| ライセンス | オープンソース | クローズド | クローズド1 |
| 主戦場 | サーバー/クラウド/組み込み(多数派) | デスクトップ/一部サーバー | クリエイティブ/開発者端末 |
| 操作スタイル | CLI/自動化が強い | GUI中心(PowerShellも強力) | GUI+UNIX系CLI |
| 学習の旨み | OSの仕組みを体験で学べる | 学べるがブラックボックス多め | UNIX流を学べる |
主要クラウド(例:AWS EC2 / GCP Compute Engine)で動くのはLinuxが多数派。学ぶと“クラウドの土台”が見えるようになります。
3. Linuxの内部構造(カーネルとユーザー空間)
• カーネル:OSの心臓(ハード直結の特権空間)
• ユーザー空間:普段のアプリやシェルが走る場所
• システムコール:ユーザー空間 → カーネルへの“お願いの窓口”
4. 「サービス」と「プロセス」の違い(運用の単位 vs 実体)
• プロセス:実行中のプログラムの“実体”(PIDが付く)
• サービス:systemd が起動順序・監視・自動再起動・ログまで面倒を見る“運用単位”
• 本番運用では systemctl start/stop/status や journalctl -u でサービス単位に扱うのが基本
5. まとめ
• OS=“アプリとハードの通訳”、Linuxはその仕組みを体験で学べる最高の教材
• Linuxの基礎(プロセス/権限/サービス/ネットワーク)を武器化しよう
-
macOSはUNIX認証(SUS準拠)。基盤の Darwin/XNU はオープンソース。 ↩