C
OS//Lesson 01

オペレーティングシステム — コンピュータの見えない指揮者

30分·theory

オペレーティングシステム — コンピュータの見えない指揮者

🎯 このレッスンを読み終えたら

このレッスンを読み終えると、以下の3つを自信を持って行えるようになります。

  • OS (Operating System — コンピュータのリソースを管理する基本ソフトウェア) の動作を一文で説明できる
  • プロセス (実行中のプログラムの単位)スレッド (1つのプロセス内の小さな実行単位) がパフォーマンスに与える影響を理解できる
  • メモリと GC (Garbage Collector — 不要なメモリを自動で回収する仕組み) に関する面接の頻出問題に答えられる

学習目標を チェックリストとして活用し、すべてに答えられるようになったらレッスンを閉じてください。

💻 オペレーティングシステムを作った人物たち — 4人4コマ

01
Ken Thompsonケン・トンプソン
Creator of UnixBell Labs → Google1943年〜現在

たった1人で1か月のうちにUnixの初版を書き上げた人物 — 現代OSすべての出発点

  • 1969 Bell LabsでPDP-7上にUnixの初版をわずか4週間で作成
  • 1971 Unix 1st Editionを正式公開。パイプや階層型ファイルシステムといったコア概念を導入
  • 1983 Dennis Ritchieと共にチューリング賞を受賞 — 「Unixの開発への貢献」
  • 2007 Googleに入社し、Rob Pikeとともにプログラミング言語Goを共同設計
Unix → BSD → Linux → macOS → Android。現代OSの共通の祖先UNIX・OS創始者
02
Dennis Ritchieデニス・リッチー
Co-creator of Unix · Creator of CBell Labs1941-2011

C言語でUnixを書き直した天才 — OSとプログラミング言語、2つの標準を同時に作り上げた

  • 1972 C言語の初版を公開 — 後に「OSを書ける高水準言語」の標準となる
  • 1973 ThompsonとともにUnixをCで書き直し、移植性が飛躍的に向上
  • 1978 Brian Kernighanと共著で「The C Programming Language (K&R)」を出版
  • 1983 チューリング賞および1998年の米国国家技術勲章を受賞
C言語 + Unix — あらゆるオペレーティングシステム・組み込み・システムプログラミングの基盤C & UNIX・システムの父
03
Linus Torvaldsリーナス・トーバルズ
Creator of Linux KernelHelsinki → OSDL → Linux Foundation1969年〜現在

趣味でOSを始めたヘルシンキ大学の学部生 — 35年後、世界のサーバーの96%がその上で動く

  • 1991 ヘルシンキ大学在学中にLinux 0.01を公開。Minixの代替として開発を開始
  • 1996 Linux 2.0でSMPマルチプロセッサをサポート — 本格的なサーバー市場への進出
  • 2005 Gitをわずか2週間で作成 — Linuxカーネル開発用ツールが業界標準に
  • 2024 Linuxはクラウドサーバーの96%、Androidデバイス75億台、そして組み込みシステム全般で使用されている
Linuxカーネル — サーバー・クラウド・Android・組み込みの共通基盤LINUX・カーネル創始者
04
Steve Wozniakスティーブ・ウォズニアック
Designer of Apple I & IIApple Computer (共同創業者)1950年〜現在

パーソナルコンピュータを1人で設計したエンジニア — 「コンピュータをデスクの上に」が彼の一言

  • 1976 Apple Iの回路図とBASICインタープリターを自ら設計し、Steve Jobsと共同でAppleを創業
  • 1977 Apple IIを発売 — カラー表示、キーボード、内蔵BASICを搭載。100万台を販売し、パソコンを大衆化
  • 1979 Apple II用のDisk IIコントローラーを単独設計 — わずか8個のICで実現した伝説的な設計
  • 1985 米国国家技術勲章を受賞(Jobsと共同)
Apple I・II — 個人がOSを直接操作できる時代を切り開いたハードウェアAPPLE・パーソナルコンピュータの基礎
💻
一言まとめ
Thompson・Ritchie (Unix・C) → Torvalds (Linux) → Wozniak (Apple)。この4人がサーバーからパーソナルPCまで、OSのすべての流れを作り上げた。

なぜオペレーティングシステムを学ぶ必要があるのか

一言: すべてのコードは OS (オペレーティングシステム) の上で動作する。プロセス・メモリ・ファイル・I/O (Input/Output — ディスク・ネットワークの入出力)パフォーマンスの限界 を決める。


ツールマッピング — 各セルの英語は概念・ツール名のみ。右側の説明を参照してください

領域主要概念
プロセス (実行中のプログラムの単位)PID · fork · コンテキストスイッチ (プロセスID · 複製 · CPUがタスクを切り替える動作)
スレッド (1つのプロセス内の小さな実行単位)mutex · semaphore · race condition (同時アクセスを防ぐロック · 信号 · 順序が狂うバグ)
メモリ仮想メモリ · ページング · OOM (物理RAMより大きなメモリを擬似的に使う · フラグメント管理 · メモリ不足)
ファイルシステムinode · ext4 · NTFS · APFS (ファイル情報の単位 · Linux・Windows・macOSのストレージ形式)
スケジューリングCFS · O(1) · リアルタイム (どのプロセスをいつCPUに割り当てるかを決めるルール)
非同期 I/Oepoll · kqueue · io_uring (多数の入出力を待たずに一括処理する機能)

5つの重要な理由

理由意味
プロセス vs スレッド並行性モデルの選択。コード1行の違い = 10倍のパフォーマンス差
コンテキストスイッチ (CPUがタスクを切り替えるコスト)コストが高い。スレッド数が多いほど損失が大きくなる
仮想メモリOOM (Out Of Memory) Killer が自分のプロセスを強制終了する理由
ファイルディスクリプタ (file descriptor — 開いているファイルやソケットを示す番号)'too many open files' エラーの 本当の原因
ブロッキング vs ノンブロッキングNode.js・Go・Rustが速い 根本的な理由 — 待たずに次の処理を実行する

核心: OSを知らなければ Heisenbug (まれにしか再現しないバグ) のデバッグに 数週間 かかる。知っていれば 数分 で解決できる。

🤖 AIにこう聞いてみよう

このレッスンの概念を知ることで、AIに 具体的な 指示を出せるようになります。トークン (AIが一度に処理する文字の単位) を節約する出発点です。

  • 「このNode.jsアプリのsyscall (system call — プログラムがカーネルにリクエストする関数) をstraceで追跡するコマンドと出力の解釈ガイドを教えて。」
  • 「このコードがuser space / kernel space (user/kernel space — 一般プログラム領域 vs OSコア領域) のどちらのコストが高いか診断して。」
  • 「このマルチスレッドコードのrace condition (複数のスレッドが同じデータに同時アクセスして結果が狂うバグ) の可能性を確認して、lockを適用して。」

なぜこれがトークンを節約するのか

「プロセス・スレッド・syscall」といったOS用語を知っていれば、AIは 診断 + 解決 を一度に提示します。基礎がなければ「まずOSがどのように...」から説明が始まります。