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

T.Fujikura fujikura @ ymail.plala.or.jp
2011年 4月 18日 (月) 12:28:49 JST


昔、MiSPOのディスパッチャにスタックオーバーフローを監視するオプションを付けた様な気がします。

//T.Fujikura


On 2011/04/18, at 12:06, <staka @ scx.co.jp> wrote:

> システムクリエイトの高橋と申します。
> 
>> 素朴な疑問なのですが、皆様はタスクスタックの状況確認をどのように行なっていらっしゃいますでしょうか?
> 
> 私の場合は、スタック領域をあらかじめ固定の値で埋めておき、
> 使用状況の確認は、その値がどこまで残っているか調べることで
> 行っています。
> この方法は MISPO の NORTi が行っていたものを参考にしたものです。
> (NORTi の場合はタスクIDで埋めている)
> TOPPERS に限らず、他の OS や OSなしでのメインスタックの
> 検証でも有効なのでよく使用しています。
> 
> 
> ----- Original Message ----- From: "Shinichiro Nakamura" <shinta.main.jp @ gmail.com>
> To: <users @ toppers.jp>
> Sent: Monday, April 18, 2011 7:00 AM
> Subject: (toppers-users 3425) タスクスタックの状況を確認するためのシステムコール実現の御提案
> 
> 
>> 素朴な疑問なのですが、皆様はタスクスタックの状況確認をどのように行なっていらっしゃいますでしょうか?
>> 
>> ふと疑問に思い調べてみたところ、標準のシステムコールではできないとの判断に至りました。
>> これは、非依存部にはスタックの先頭アドレスとサイズのみが保存され、依存部にスタックポインタをおくためです。
>> 
>> とにかくOSの機能として実現してみたかったので、いい加減な名前を付けて非依存部のスタック先頭アドレスと依存部のスタックポインタを使って取得する機能を作ってみたところ、意外に具合が良いです。
>> http://shinta-main-jp.blogspot.com/2011/04/toppersquick-and-dirty.html
>> 
>> 確かに「見積り」と称してて手計算するというのもアリかもしれませんが、私にとっては魅力的ではありません。
>> 人手で抽出しようとすると、漏れや思い込みがありますし、時間がかかるからです。 商用ツールにその領域を譲っているという見方もできますが、それはTOPPERS自身の魅力ではなくなってしまいます。
>> 
>> そこで、タスクスタックの状況を確認するためのシステムコール実現を1ユーザの立場から提案したいと考えです。
>> 
>> これにより、
>> 「スタックの余裕度をある程度判断できる」
>> 「誤った実装によるRAM消費などを未然に確かめることができる」
>> などの効果が期待できます。
>> 
>> また、上記効果によってTOPPERSを採用するシステムの安定性が結果的に向上し、更なるユーザを獲得できるのではと考えております。
>> 
>> 私の現状の実装は、依存部にあるタスクコンテキストブロックp_tcb->tskctxbを参照していますので極めて不適切な状態ですが、何らかの方法で同様の機能をカーネルに入れることは可能ではないでしょうか?
>> 
>> TOPPERSは触ってみると楽しい道具です。
>> 沢山のOSが組み込み市場に流れてくる中で開発者も流動的になっていますから、
>> システムの安定性や作りやすさ、導入時の利便性を兼ね備えた機能がTOPPERSに加わり、
>> 厳しい組み込みOS市場で多くの開発者とユーザを獲得して頂ければ個人的には嬉しい限りです。
>> 
>> 皆様とご意見やナレッジなどを共有させて頂ければ幸いです。
>> 
>> 中村晋一郎
>> 
>> P.S.
>> これは本当に余計な話ですが、シェルなんかも標準で入っていると嬉しいです。
>> (シェルのないOSって便利なデバッグ用環境をどう構築して良いかわかりませんよね。) http://shinta-main-jp.blogspot.com/2011/03/natural-tiny-shell-nt-shell.html
>> http://shinta-main-jp.blogspot.com/2011/03/natural-tiny-shellnt.html
> 
>