witchの日記: (ROBO)(作業メモ) sched_setscheduler() について
日記 by
witch
カーネルHZ変更の日記を見たBAKさんから「sched_setscheduler使ってみた?」との指摘。
「なんだっけ?それ?」と思って man を見る…
…が英文だったので面倒になってJM Projectへ
sched_setscheduler() は pid によって識別されるプロセスのスケジューリング方針やそれに関連するパラメータを設定する。
(中略)
SCHED_FIFO は 0 より大きな静的優先度でのみ使用でき、 SCHED_FIFO プロセスが実行可能になった場合、すぐに、現在実行している SCHED_OTHER か SCHED_BATCH プロセスと置き換えられる。 SCHED_FIFO は時分割のない単純なスケジューリング・アルゴリズムである。
あ…そいえばそんな機能がありましたね…
しかし
SCHED_FIFO や SCHED_RR でスケジューリングされるプロセスが停止せずに無限ループにおちいると、他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、ソフトウェア開発者はコンソールのシェルの静的優先度をテストするアプリケーションよりも常に高く保つべきである。
きっとこの地雷を踏むに違いない。
カーネルHZの変更はうまくいった気がします。(LinkUpするようになりました)
これでダメだったらスケジュールをいじる方向で。
あれ?でも割り込みが起きなければタスク切替え間隔はTICK単位なんじゃ…
シリアルポートの送信バッファが空になったら割り込み入ってくれるのかな?
---
今月の日記は写真が一枚もない…
(ROBO)(作業メモ) sched_setscheduler() について More ログイン