カーネル

OSの中心で、CPUやメモリ、機器を管理するプログラム。

仕組みを見る

アプリとハードウェアの間に入り、限られた資源を安全に分けます。Linuxという言葉は、狭い意味ではこのカーネルを指します。

プロセス

実行中のプログラムを管理する単位。

仕組みを見る

同じアプリを2つ起動すれば、通常は別々のプロセスとして管理されます。

スケジューラ

次にどの仕事をCPUで動かすか決める係。

仕組みを見る

たくさんのプロセスを短い時間で切り替えます。待ち時間と公平さの釣り合いを取ります。

コンテキストスイッチ

CPUが、実行するプロセスを入れ替えること。

仕組みを見る

途中の状態を保存し、次のプロセスの状態を読み込みます。切り替えにも少し時間がかかります。

仮想実行時間

各タスクがどれだけCPUを使ったか比べるための時計。

仕組みを見る

優先度を考慮して進み方を調整します。CFSやEEVDFが公平さを判断する材料です。

EEVDF

イー・イー・ブイ・ディー・エフ

選択対象になったタスクから、仮想デッドラインが最も早いものを選ぶ方式。

仕組みを見る

Linux 6.6から公平スケジューリングの選択方式として使われ始めました。仮想デッドラインは公平さを計算するための値です。実時間の制約にはSCHED_DEADLINEなどを使います。

namespace

ネームスペース

同じコンピュータの資源を、別々に見せる仕組み。

仕組みを見る

プロセスID、ネットワーク、マウント位置、ホスト名などを分けられます。コンテナの『見える範囲』を作ります。

cgroup

シーグループ

プロセスの集まりごとに、資源の利用量や優先度を管理する仕組み。

仕組みを見る

CPU、メモリ、I/Oなどの利用を計測し、重みや上限を設定します。

コンテナ

同じカーネルを共有しながら、プロセスを分離して動かす環境。

仕組みを見る

Linux上のコンテナは、namespace、cgroup、capability、ファイルシステムなど複数の機能を組み合わせて作ります。

仮想マシン

一台の物理コンピュータ上で動く、別のコンピュータのような環境。

仕組みを見る

ゲストOSは自分のカーネルを持ちます。LinuxではKVMとQEMUなどを組み合わせて動かします。

ハイパーバイザ

仮想マシンへCPUやメモリを割り当てる仕組み。

仕組みを見る

KVMはLinuxカーネルの仮想化機能です。機器のモデルなどはQEMUのようなユーザー空間プログラムが担います。

完全仮想化

ゲストOSを修正せずに動かせるよう、CPUや機器の環境を用意する方式。

仕組みを見る

KVMはCPUの仮想化支援機能を使い、ゲストOSの特権命令を処理します。I/Oにはデバイスエミュレーションとvirtioのどちらも組み合わせられます。

デバイスエミュレーション

QEMUなどが、既存の物理デバイスと互換の動作を再現する方式。

仕組みを見る

ゲストOSは、既存のデバイス用ドライバを使えます。ホスト側はレジスタ操作、割り込み、データ転送などを処理します。

準仮想化

ゲストOSが仮想環境向けのインターフェースを使う方式。

仕組みを見る

ゲスト側の専用ドライバとホスト側の装置モデルが、仮想環境向けの形式でやり取りします。virtioはI/Oデバイス向けの標準仕様です。

virtio

仮想マシン向けの標準的な準仮想化I/O。

仕組みを見る

ゲスト側のドライバとホスト側の装置モデルが、virtqueueという共有キューを通して要求と完了を渡します。

ABI

プログラムがOSへ仕事を頼むときの、機械語レベルの約束。

仕組みを見る

Linuxは既存のユーザー空間を動かし続ける方針を強く守ります。公開ABIには安定度の区分があります。カーネル内部のAPIはバージョンとともに変わります。

システムコール

アプリがカーネルへ仕事を頼むための入口。

仕組みを見る

ファイルを読む、通信する、プロセスを作る、といった操作に使います。

マージウィンドウ

次のリリースへ新機能を取り込む、約2週間の期間。

仕組みを見る

終了後はリリース候補を毎週出し、主に修正と安定化を進めます。

リリース候補(-rc)

正式リリース前に、広く試して不具合を直す候補。

仕組みを見る

通常は週に一度更新されます。回数はカーネルの状態に応じて増減します。

メモリフォリオ

連続する一つ以上のページを、まとめて扱う抽象化。

仕組みを見る

Linux 5.16で導入されました。1ページのフォリオもあり、大きなフォリオは必要に応じて分割できます。struct pageと役割を分けながら使われています。

LSM

カーネルへ安全確認の場所を用意する共通の枠組み。

仕組みを見る

カーネル内の処理へ共通の確認地点を設けます。SELinux、AppArmor、Landlockなどが、このフックを使います。

PREEMPT_RT

カーネル処理の最大遅延を小さくし、ばらつきを抑えるリアルタイム対応。

仕組みを見る

6.12で公式カーネルの対応範囲が大きく広がりました。達成できる最大遅延は、CPU、ドライバ、カーネル設定を含む実機測定で評価します。

チェックポイント

実行中のプロセスを、後で再開できる形で保存すること。

仕組みを見る

メモリ、CPUレジスタ、開いているファイル、プロセスの親子関係などを記録します。復元側では識別子や資源の関係も作り直します。

CRIU

Linuxプロセスやコンテナをユーザー空間から保存・復元するソフトウェア。

仕組みを見る

Checkpoint/Restore In Userspaceの略です。namespace、cgroup、ptrace、procfs、各種カーネルAPIを組み合わせて動きます。