July 2025
Intermediate to advanced
492 pages
8h 23m
Japanese
本章ではLinuxにおけるCPUスケジューリングについて説明します。カーネルレベルでのCPUスケジューリングの仕組みを理解することはカーネルあるいはデバイスドライバ開発者にとってだけではなく、ユーザ空間アプリケーションの開発者にとっても重要です。
まずは基礎的なことを説明します。例えばカーネルスケジュール可能エンティティ(KSE)の概念、およびLinuxが実装するPOSIXスケジューリングポリシーなどです。続いてperfなどのツールを使用して、LinuxがCPU上でタスクを実行し、切り替える際の制御フローを可視化します。これはアプリケーションのプロファイリングにも非常に役立ちます。
その後にCPUスケジューリングの具体的な動作について説明し、Linuxのモジュール化したスケジューリングクラス、コアスケジューラ、デフォルトのスケジューラであるCFSについて説明します。システム上の任意のスレッドのスケジューリングポリシーと優先度をプログラムから参照する方法についても説明します。
CPUはシステム上で動作するプロセス、スレッドが共有するリソースです。システムの全ユーザが共有するリソースとも言えます。この共有はCPUスケジューラが実現します。システム全体のリソース共有機能であるcgroupsを介した制御もできます。
LinuxのCPUスケジューリングを理解するために必要な基本的な背景情報を簡単に見てみましょう。
![]() |
|
本書ではLinux上のユーザ空間のシステムプログラマが既に理解しているであろう内容はほとんど説明しません。例えばスレッドの状態、リアルタイムタスクとは何かということ、POSIXスケジューリングポリシーなどです。 ... |
Read now
Unlock full access