雑記帳

ソフトを中心に雑記を書いてる割とすぐ転職したい28歳。

Linuxカーネル解読室(10日目)

  1. 1.5.3 リアルタイムプロセス
    • Linuxのプロセススケジューリングは全てのプロセスを公平に扱うことが方針だが、問題がある。
      • しかし、実時間公平にすると音声/画像等の重い処理や機器制御が困難になり、スケジューリング公平にするとプロセスの開始/終了の予測が全く出来なくなる
    • そのため、Linuxではリアルタイムプロセス機能が提供されている。
      • 特別扱いのため、通常のプロセスより優先度が高く、変動優先度は変化しなく、実行割り当て時間も無制限のプロセスだ。
  2. 1.5.4 マルチプロセッサシステムにおけるプロセススケジューリング
    • ある程度実行優先度の逆転が起きてもプロセスが実行されるCPUは変わらない方が良い。
      • キャッシュメモリの有効利用が1点、アドレス変換バッファ(仮想メモリ→物理メモリの変換テーブルのキャッシュ)の有効利用が1点。
    • なので、Linuxでは基本的にプロセスは1つのCPUに張り付いている。
    • Intel系CPUにあるハイパースレッディングは、CPU一つでマルチコアもどきの動作をするけど、Linuxではそんなこと気にしていない。
    • SMPシステムでは、全てのCPUが等価にバスやメモリを共有していることによる限界がある。
      • NUMA(Non-UniformedMemoryArchitecture)ではSMPマシンを1つのノードとして複数のノードを高速スイッチで相互接続するような構造をしているが、Linuxカーネルではノード間の移動を禁止している。
      • NUMAでの負荷バランスの調整は、exec処理をするとき負荷が低いノードを選択し実行ノードとする形で行われる。

明日からはプロセススケジューラの実装