(toppers-users 3437) Re: タスクスタックの状況を確認するためのシステムコール実現の御提案

SHUKUGUCHI Masahiro shukuguchi @ biz.nifty.jp
2011年 4月 26日 (火) 22:59:38 JST


宿口です。

有益なアイデアだと思うのですが、意外と冷たい(?)反応でしたね。

静的に、タスク設計時のスタック見積りは原則だと思います。

動的な防護策として、ディスパッチャ、システムサービスのエントリや割込み
処理の入口でのスタックチェックがあると良いと思います。これの課題(?)
は、処理速度とスタックオーバフローを検出した場合の振舞いの定義ですかね。

処理速度は、コンパイルスイッチ等でスタックチェックの有効・無効を選択
できれば問題は少なくなりそうですが、それだと、動的にチェックする動機が
薄れます。(信用の置けないアプリケーションを搭載するような場合だと特に)

スタックオーバフロー検出時のカーネルの振舞いは、μITRON仕様の範囲では決
めようが無いと思いますが、タスク例外処理の起動あたりが妥当と思います。
しかし、タスク例外処理の起動はマスクできますし、そもそもタスク例外処理
ルーチンが定義されていないと意味を成さないですね。

また、カーネルで一意に振舞いを決めたくなりますが、カーネルに過度の機能
を持たせることの懸念が生じるように思います。

# だんだんネガティブになっていく。。。

一方、
タスク観点では、タスク例外処理ルーチンでスタックオーバーフローを検出した
場合に状況を知りたくなりますので、その際や、デバッグ時にはスタック状況を
確認するインタフェースは有効だと思います。

でも、CPUアーキテクチャに依存しますので、カーネルよりはSILあたりの
実装になりますか・・・ スタックの情報以外にカーネル等の資源状況を調査
できるデバッギングパッケージなるものがあると、うれしいかもしれませんね。

とりとめもなくすみません。

Shukuguchi

> 皆様
> 
> 先日は多くの有用なアイデアの共有ありがとうございました。
> 
> TOPPERSとしては今のところ「それはTOPPERSのサービスとして提供するものではない。」という認識に至りました。
> このような機能については、先日高田先生から御指摘いただいたTECSを使って実装すれば良いのかもしれませんね。
> 
> 中村晋一郎