コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
Linux / macOS / Windows のアーキ比較
Linux / macOS / Windows のアーキ比較
このレッスンで分かること
- 主要 3 OS は表面的には似ていますが、カーネル設計・ファイルシステム・プロセスモデルがそれぞれ違います
- Linux はモノリシック、macOS はハイブリッド(XNU = Mach + BSD)、Windows はハイブリッド(NT)という分類が定番です
- 「どれが優れている」よりも、用途と歴史を踏まえた 適材適所 で選ぶ視点が大事です
Linux / macOS / Windows のアーキ比較 とは
Linux / macOS / Windows のアーキ比較。本レッスンでは、Linux / macOS / Windows のアーキ比較 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
3 OS の違いを一言で (結論ブロック)
- Linux = ゼロから書かれた POSIX 互換のオープンソース OS。モノリシックカーネル。サーバー・組込み・Android の土台。
- macOS = Mach マイクロカーネル + BSD のハイブリッド (XNU)。デスクトップ + 開発機 + クリエイティブ用途で強い。
- Windows = VMS の影響を受けた独自設計の NT カーネル。Win32/POSIX/WSL など複数サブシステム同居。
「どれが優れているか」ではなく、カーネル設計の起源 と 想定ワークロード で適材適所に選ぶのが定石です。
3 つの OS の系譜
| OS | カーネル名 | 系譜 | 主な用途 |
|---|---|---|---|
| Linux | Linux | UNIX 系(リライト) | サーバー、組込み、Android、クラウド |
| macOS | XNU | Mach + BSD ハイブリッド | デスクトップ、開発機、クリエイティブ |
| Windows | NT | 独自系(VMS にインスパイア) | 業務 PC、ゲーム、エンタープライズ |
Linux はゼロから書かれた UNIX 互換 OS で、コード自体は AT&T UNIX とは無関係ですが API(POSIX)を共有します。macOS の XNU はカーネギーメロン大学 (CMU) で開発された Mach マイクロカーネルに BSD のサブシステムを乗せた ハイブリッド で、ファイル API は BSD 由来です。Windows NT は VMS の設計者 David Cutler が率いるチームが作り、UNIX とは独立した進化を遂げました。
カーネル設計の図解
Linux はすべての機能がカーネル空間に住む モノリシック。macOS は Mach 由来のメッセージ通信と BSD のシステムコールが混在。Windows NT は HAL(Hardware Abstraction Layer)で機種依存を吸収し、Win32 / POSIX / WSL など複数の サブシステム を同居させる設計です。
ファイルシステムとパス
| OS | デフォルト FS | パス区切り | 大文字小文字 |
|---|---|---|---|
| Linux | ext4 / btrfs / xfs | / | 区別する |
| macOS | APFS | / | デフォルト区別しない |
| Windows | NTFS / ReFS | \ または / | 区別しない |
Linux と macOS は POSIX 互換でパスが似ていますが、macOS は大文字小文字を区別しないボリュームがデフォルトです。Windows は C: 形式のドライブレターという独自概念を持ちます。
具体例
「新しいプロセスを作る」操作はそれぞれ違うシステムコールで実現します。
c
// Linux / macOS (POSIX)
pid_t pid = fork();
if (pid == 0) {
execve("/bin/ls", argv, envp);
}c
// Windows (Win32)
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcess("C:\\Windows\\System32\\cmd.exe",
NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);POSIX 系は fork → exec の 2 段階、Windows は CreateProcess 1 発で完結する設計です。fork は親プロセスのメモリを丸ごとコピーする思想(Copy-on-Write)で、Web サーバーの worker 生成などに向きます。
アプリ配布の違い
- Linux はディストリビューションごとに
apt、dnf、pacmanなどのパッケージマネージャを持ち、依存関係を OS 側 が解決します - macOS は
.appバンドル(ディレクトリ内に必要ファイル全部入り)と Homebrew が主流で、依存はアプリ側に閉じます - Windows は MSI / EXE インストーラが伝統的で、近年は MSIX や
wingetも登場しました
トレードオフ
- Linux はオープンソースで自由ですが、ドライバ・GPU 周りで商用 OS に遅れることがあります
- macOS はハードと OS を同じ会社が作る 垂直統合 が強みですが、選べる機種が限られます
- Windows は GPU ゲームやエンタープライズソフトの互換性に強い一方、強制アップデートや UI 変更の頻度が議論を呼びます
よくある誤解
- 「Mac は UNIX ではない」は誤解で、macOS は 公式に UNIX 認証 を受けた POSIX 準拠 OS です
- 「WSL は仮想マシン」は半分正解で、WSL2 は軽量 VM 上で本物の Linux カーネルを動かしています(WSL1 は API 翻訳でした)
やってみよう
普段使っている OS で uname -a(macOS / Linux)または systeminfo(Windows)を実行し、カーネルのバージョンとビルド番号を確認してください。手元の OS がどの系譜に属するか、改めて意識するだけで日々の運用が立体的になります。
まとめ
このレッスンの要点は、カーネル設計の系譜 / ファイルシステムとパス文化 / プロセス生成 API の違い の 3 点です。実務でこれらを切り分けて説明できるようになると、設計レビューや障害対応の精度が一段上がります。
理解度チェック
Q. macOS のカーネル XNU の構成として正しい説明はどれ?
- Linux カーネルを改造したもの
- Mach マイクロカーネル + BSD のハイブリッド
- Windows NT カーネルをライセンス使用
- 完全に独自のマイクロカーネル
答えを見る
正解は 2。XNU は Mach の IPC/スケジューラ + BSD のシステムコール + IOKit ドライバを組み合わせたハイブリッドカーネルです。
出典 (References)
最終更新: 2026-05-28
関連レッスン
よくある質問
Q. このトピックは実務でどう役立ちますか?
A. DB のクエリ最適化、API 設計、データ構造の選択など、設計判断の根拠になります。表面的にライブラリを使うだけでなく「なぜそれが速いのか」を理解できると、性能問題を未然に防げます。コーディング面接でも頻出のテーマです。
Q. 計算量はどう求めれば良いですか?
A. ループのネストごとに掛け算する、再帰なら漸化式から解く、というのが基本です。Big-O 表記は定数倍と低次の項を無視するため、n の指数(n²、n log n など)に注目してください。最悪・平均・最良の 3 つを意識すると説得力が増します。
Q. 覚えるべき定番アルゴリズムは何ですか?
A. 二分探索、クイックソート/マージソート、BFS/DFS、ダイクストラ、DP の基本問題(フィボナッチ・ナップサック)が必修です。これらを「白紙から書ける」状態にすると、応用問題が一気に解けるようになります。
次のレッスン
次は プロセスとは で、Linux / macOS / Windows のアーキ比較 を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- 主要OS比較 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. 主要OS比較 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン