Linuxのリアルタイムカーネルについて

いろいろと調べてみたので、頭の整理も兼ねたまとめ。

現在のLinuxの基本はプリエンプションありだけれども、クリティカルセクションの最中などは
常に特定の処理が走るため、必ずしも一定時間で応答がかえってくるとは限らない。
この点でLinuxにはリアルタイム性がないとなっている。

当然、Linuxも組み込み用途で使いたいという需要から、リアルタイム(RT)化するパッチが出ている。
それがPREEMPTRTのパッチ。
厳密なリアルタイム性を保証しているわけではないが、リアルタイムにできるだけ近いものになっている。
(いわゆるソフトリアルタイム)
この、PREEMPT
RTのパッチが何をやっているかに関しては、以下のスライドの前半がわかりやすい。

http://events.linuxfoundation.org/sites/events/files/slides/rtmux_1.pdf

やっていることは、

  • スピンロックをMutexに変更してプリエンプション可能にする
  • クリティカルセクションの最中もプリエンプション可能にする
  • Mutexはプライオリティの継承ができるようにする(これの意図がいまいちわかっていない)
  • 割り込みはカーネルスレッドに割り当てて、プリエンプション可能にする

簡単に言うと、とにかくどこでもプリエンプション可能にして、処理をぶった斬れるようにすること。
Linuxの場合、どのプログラム(ドライバ)が何やっているかを気にしていると
キリがないので、どのプログラムが実行してようがとにかく実行権を取り上げる、って思想だと思う。

それ以上のリアルタイム性(いわゆるハードリアルタイム)が欲しい場合、
Xenomaiや別のOSを同時に動かすことなどがあげられる。

Posted at : 2015-02-11 22:02:20 / Category : none

Comments

まだコメントはありません / No comment.

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (241222 と入力してください / Please input 241222.)