TL

OS TRACK

OS(オペレーティングシステム)

Linux・Windows・macOS の比較から、プロセス・メモリ・ファイルシステムといった OS の考え方まで。まず TL;DR で。

9
Systems
20
TL;DR
SYSTEM の違いと内部構造をつなぎ、OS を立体的に理解する入口です。

Collection 01

デスクトップ(3)

項目WindowsmacOSLinux
区分デスクトップ / サーバデスクトップデスクトップ / サーバ / 組込み・その他
系統Windows NT 系Unix 系(BSD ベース)Unix 系
カーネルハイブリッド(Windows NT カーネル)XNU(Mach + BSD のハイブリッド)モノリシック(Linux カーネル)
ライセンスプロプライエタリ(商用)プロプライエタリ(Apple 製ハード限定)オープンソース(GPL)
主な用途デスクトップ / 業務 PC開発(Web / iOS)サーバ / クラウド

Collection 02

サーバ(2)

項目WindowsLinux
区分デスクトップ / サーバデスクトップ / サーバ / 組込み・その他
系統Windows NT 系Unix 系
カーネルハイブリッド(Windows NT カーネル)モノリシック(Linux カーネル)
ライセンスプロプライエタリ(商用)オープンソース(GPL)
主な用途デスクトップ / 業務 PCサーバ / クラウド

Collection 03

モバイル(2)

項目AndroidiOS
区分モバイルモバイル
系統Linux 系(モバイル)Unix 系(Darwin)
カーネルLinux カーネルベースXNU(Darwin・macOS と共通基盤)
ライセンスオープンソース(AOSP)+ 一部プロプライエタリプロプライエタリ(Apple 製端末限定)
主な用途スマートフォン / タブレットiPhone / iPad

Collection 04

組込み・その他(2)

項目LinuxRTOS / 組込み OS
区分デスクトップ / サーバ / 組込み・その他組込み・その他
系統Unix 系リアルタイム OS(RTOS)
カーネルモノリシック(Linux カーネル)リアルタイムカーネル(プリエンプティブ)
ライセンスオープンソース(GPL)様々(FreeRTOS=MIT、Zephyr=Apache 等)
主な用途サーバ / クラウドマイコン・組込み機器

Concept Map

考え方・概念

プロセス・メモリ・ファイルシステムなど、OS が裏で何をしているか。まず TL;DR で。

TL;DR中級

カーネルモードとユーザーモード

CPU には権限の高いカーネルモードと低いユーザーモードがあり、OS の中核だけを特権で動かして安全を守ります。アプリはシステムコールでカーネルに処理を依頼します。

TL;DR中級

コピーオンライト(CoW)

コピーオンライトは、コピーを要求された時点では実体を共有し、書き込みが起きた瞬間に初めて複製する遅延戦略です。fork やスナップショットを高速・省メモリにします。

TL;DR中級

コンテキストスイッチ

コンテキストスイッチは、CPU が実行する対象を別のプロセスやスレッドへ切り替える処理です。レジスタなどの状態を退避・復元することで、1つの CPU を見かけ上共有します。

TL;DR中級

シグナル

シグナルは、OS やプロセスから別のプロセスへ送る軽量な非同期通知です。「終了して」「中断して」といった合図を番号で送り、受け手はハンドラで応じられます。

TL;DR中級

システムコールとカーネル

アプリは画面やファイル、ネットワークを直接は触れない。OS の中核「カーネル」に“お願い”するための窓口がシステムコール。保護のために世界を二つに分けている。

TL;DR中級

スレッドプール

スレッドプールは、あらかじめ作ったスレッドを使い回してタスクを処理する仕組みです。生成・破棄のコストを抑え、同時実行数を制御しながら多数の仕事をさばけます。

TL;DR中級

ゾンビプロセスと孤児プロセス

ゾンビプロセスは終了済みなのに親に回収されず残る状態、孤児プロセスは親が先に死んだ子です。前者は wait での回収、後者は init による引き取りで処理されます。

TL;DR中級

デッドロック

複数のプロセスやスレッドが、互いの持つ資源を待ち合って永久に止まる状態がデッドロックです。発生条件と予防・回避・検出の手法を整理します。

TL;DR中級

ファイルシステム

ディスクはただのバイトの並び。それを「ファイル」と「ディレクトリ」という人間に扱える形へ翻訳するのがファイルシステム。メタデータ・inode・ブロックで中身と位置を管理する。

TL;DR中級

プロセススケジューリング

1つのCPUを多数のプロセスで“代わりばんこ”に使う仕組み。誰に・どれだけCPUを渡すかを決めるのがスケジューラの仕事。

TL;DR中級

プロセスとスレッド

プロセスは独立したメモリ空間を持つ“実行中のプログラム”、スレッドはその中でメモリを共有しながら走る“実行単位”。隔離を取るか軽さ・共有を取るかで使い分ける。

TL;DR中級

プロセス間通信(IPC)

独立したプロセスは互いのメモリを直接覗けません。データや合図をやり取りする仕組みがプロセス間通信(IPC)で、パイプ・共有メモリ・ソケットなど複数の手段があります。

TL;DR中級

ページングとスワップ

仮想メモリをページという固定長の単位で物理メモリに割り当てる方式がページングです。物理に無いページはページフォルトを契機に、足りなければスワップで補います。

TL;DR応用

メモリマップトファイル(mmap)

メモリマップトファイルは、ファイルをプロセスのメモリ空間に対応づけ、ポインタ経由でメモリのように読み書きする手法です。read/write 呼び出しを介さず効率よく扱えます。

TL;DR中級

メモリ管理(スタックとヒープ)

プログラムが使うメモリは「スタック」と「ヒープ」に大きく分かれる。自動で片付く速い領域と、自分で確保して管理する自由な領域。その違いを押さえると、メモリリークやスタックオーバーフローの正体が見えてくる。

TL;DR中級

仮想記憶(ページング)

各プロセスに“自分専用の広いメモリ”があるかのように見せる仕組み。アドレスを翻訳し、足りなければディスクへ逃がして、物理メモリ以上に使えるようにする。

TL;DR中級

割り込みと入出力(I/O)

デバイスの「準備できたよ」をCPUに知らせる仕組みが割り込み。CPUは無駄に待たず、必要なときだけ反応してI/Oを効率よくさばく。

TL;DR基礎

起動(ブート)プロセス

電源を入れてから OS が使えるようになるまでの一連の流れがブートです。ファームウェア(BIOS/UEFI)→ ブートローダ → カーネル → 初期化と、バトンを渡していきます。

TL;DR中級

排他制御とデッドロック

複数の処理が同じデータを同時にいじると壊れる。それを防ぐのが排他制御(ロック)で、ロックの掛け方を誤ると今度は全員が固まるデッドロックに陥る。

TL;DR応用

名前空間と cgroups(コンテナの基盤)

コンテナの「軽い隔離」は、Linux カーネルの名前空間(見える範囲の隔離)と cgroups(使える資源の制限)という2つの機能で実現されています。