カーネル
OSの中心で、CPUやメモリ、機器を管理するプログラム。
仕組みを見る
アプリとハードウェアの間に入り、限られた資源を安全に分けます。Linuxという言葉は、狭い意味ではこのカーネルを指します。
各ページの強調語をまとめて読む
用語の表記、短い定義、仕組みの説明をまとめています。
OSの中心で、CPUやメモリ、機器を管理するプログラム。
アプリとハードウェアの間に入り、限られた資源を安全に分けます。Linuxという言葉は、狭い意味ではこのカーネルを指します。
実行中のプログラムを管理する単位。
同じアプリを2つ起動すれば、通常は別々のプロセスとして管理されます。
次にどの仕事をCPUで動かすか決める係。
たくさんのプロセスを短い時間で切り替えます。待ち時間と公平さの釣り合いを取ります。
CPUが、実行するプロセスを入れ替えること。
途中の状態を保存し、次のプロセスの状態を読み込みます。切り替えにも少し時間がかかります。
各タスクがどれだけCPUを使ったか比べるための時計。
優先度を考慮して進み方を調整します。CFSやEEVDFが公平さを判断する材料です。
選択対象になったタスクから、仮想デッドラインが最も早いものを選ぶ方式。
Linux 6.6から公平スケジューリングの選択方式として使われ始めました。仮想デッドラインは公平さを計算するための値です。実時間の制約にはSCHED_DEADLINEなどを使います。
同じコンピュータの資源を、別々に見せる仕組み。
プロセスID、ネットワーク、マウント位置、ホスト名などを分けられます。コンテナの『見える範囲』を作ります。
プロセスの集まりごとに、資源の利用量や優先度を管理する仕組み。
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デバイス向けの標準仕様です。
仮想マシン向けの標準的な準仮想化I/O。
ゲスト側のドライバとホスト側の装置モデルが、virtqueueという共有キューを通して要求と完了を渡します。
プログラムがOSへ仕事を頼むときの、機械語レベルの約束。
Linuxは既存のユーザー空間を動かし続ける方針を強く守ります。公開ABIには安定度の区分があります。カーネル内部のAPIはバージョンとともに変わります。
アプリがカーネルへ仕事を頼むための入口。
ファイルを読む、通信する、プロセスを作る、といった操作に使います。
次のリリースへ新機能を取り込む、約2週間の期間。
終了後はリリース候補を毎週出し、主に修正と安定化を進めます。
正式リリース前に、広く試して不具合を直す候補。
通常は週に一度更新されます。回数はカーネルの状態に応じて増減します。
連続する一つ以上のページを、まとめて扱う抽象化。
Linux 5.16で導入されました。1ページのフォリオもあり、大きなフォリオは必要に応じて分割できます。struct pageと役割を分けながら使われています。
カーネルへ安全確認の場所を用意する共通の枠組み。
カーネル内の処理へ共通の確認地点を設けます。SELinux、AppArmor、Landlockなどが、このフックを使います。
カーネル処理の最大遅延を小さくし、ばらつきを抑えるリアルタイム対応。
6.12で公式カーネルの対応範囲が大きく広がりました。達成できる最大遅延は、CPU、ドライバ、カーネル設定を含む実機測定で評価します。
実行中のプロセスを、後で再開できる形で保存すること。
メモリ、CPUレジスタ、開いているファイル、プロセスの親子関係などを記録します。復元側では識別子や資源の関係も作り直します。
Linuxプロセスやコンテナをユーザー空間から保存・復元するソフトウェア。
Checkpoint/Restore In Userspaceの略です。namespace、cgroup、ptrace、procfs、各種カーネルAPIを組み合わせて動きます。