[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re:RTOSに kaffe




こんばんは、
Cなどの組込み機器制御の経験はありますが、Javaはありません。
外していたらごめんなさい。

>おっしゃる通りで、もともとはUNIX汎用のJVMということで開発されましたの
>で、リアルタイム性に関してはなんの保証もありません。
>
>DOS版についても、当然ながら、スレッドの切り替えはライブラリで行ってま
>す。


ライブラリというのがピンときませんが、スレッドの切替えを
定周期割込みでCPUコンテキストを切り替えているのだろうと思います。
自前で割込み周期を変えていけばスレッドの時間を変えられる事に
なりますが..
基本的にリアルタイム系の処理になりますと、瞬間的に速い速度より、
どんなに負荷がかかっても、優先度の高いタスクの最低限の速度
(I/Oの入力-出力応答時間)を保証するほうが重要な性能かと思います。

組込み用の小さいCPUのプログラムを書いていた時は、newしないようにメモリ
を割り当てて、ローカル変数もスタック上に置かない(再帰するものは
しょうがありませんが)ようにしていました。
メモリが少ない上、何年もリセットせずに動作させるものが多かったので..


>maebashi> ・OS(VMより下位)はリアルタイムOSだとして、
>maebashi> ・アプリケーション(VMより上位)は気を付けてリアルタイム性があ
>maebashi>   るように書くとして、
>
>maebashi> VMそのもののリアルタイム性はどうなるのでしょう?


リアルタイム性は制御対象やタスクによりけりではないでしょうか。
組込み屋が求める事は、ソフトでのリアルタイム性にさほど期待は
していません。実際に、制御対象に確実に間に合う設計ができるか
どうかが評価できる事が重要と思います。
10msを切る制御周期が人命にかかわる事なら、Javaを使うことはない
と思いますが、それでは、どのくらいのタスクを、何msで確実に処理
できるかの目安さえあれば、(CPUやシステムにも依存しますが..)
これくらいのリアルタイム性があるよ、と言えると思います。


>リアルタイム性を要求される処理というのは、いくつかに限られるでしょうか
>ら、おそらく、「リアルタイムなスレッド」と「それ以外」にわけることにな
>るんだと思うんですが、GCですとか、VMを含めた「それ以外」の部分で、「リ
>アルタイムなスレッドのリアルタイム性の保証」を行う必要があると思います。



タスクを動的に増やしたり、という所がありましたが、
リアルタイムなスレッドでは、不可能だと思います。
リアルタイムなスレッドは固定タスク、そうでないダイナミックな
タスクは、あくまでも優先度は低いタスク(時間的に保証されないタスク)
という実装になると思います。

ナンセンスかもしれませんが、リアルタイムなスレッドに
記述するタスクはGC不要にするというのはどうでしょう?
staticにやってしまうようなプログラムスタイルを強要しても、多くの機器
ではいけると思います。

# 機器や処理にもよるかな。 ^^;

僕は組込みからは、しばらく遠ざかっていまして、今はシーケンサーとパソコンに
分けて作成していますが、一つの機器で高速+確実な処理(I/O)と、
複雑+柔軟な処理(GUI)が一つの機器で制御できればいいなあと思っています。

*****************************
さえぐさかつゆき (MS-OEご勘弁)