Linuxでシェルスクリプトでリアルタイム制御したい
組み込み型システムで GNU/Linux を使う場合リアルタイム制御をするには
低遅延カーネルやスケジューラーをリアルタイム(RT)クラスにしないといけないです。
しかしスケジューラを変更するとマルチタスクやストリーム指向プログラミングと
相性が悪いので並列処理が実施されなくなるという危険性があります。
そんな事をせずにシェルスクリプトでリアルタイム制御する方法はありませんか? むりやな。
まずLinuxにおけるrtを勉強しなされ >>5
そんなことないですよ。
RTカーネルを使うのが常識でしたが
それをカバーする簡単なコマンドとパイプを使えば
リアルタイム制御ができるんです。 うーん?もしかしてリアルタイム処理とか
UNIX哲学を知らない人かな? この2つですね。普通のLinuxでシェルスクリプトを使って
最大13ミリ程度の低遅延のリアルタイム制御を実現しています。
POSIXに準拠するために特殊なハードウェアが限定される
リアルタイム拡張を使わない。徹底してますよね。
シェルスクリプトを用いたUNIX哲学に基づくリアルタイム制御
https://www.sea.jp/ss2021/download/11-SS2021.pdf
UNIX機におけるIoT機器制御のためのタイミング管理
https://www.sea.jp/ss2021/download/12-SS2021.pdf >>11
有り難う
読んでみます
リアルタイムの定義は精度ではないとは思いますが
最大13ミリ秒の精度のものを
一般的にはリアルタイムとは呼ばないと思います でもリアルタイムカーネルという特殊なものを使わなくても
UNIX哲学のやり方でリアルタイム制御ができるのはすごいと思いませんか?
特殊なハードウェアが不要なので移植性に優れていて淘汰されないんですよ
POSIXに準拠してるコマンドだけを使ってるから
シェルスクリプトはPythonなんか使うよりも移植性が高いんです 倒立振子のシステムを構築できてるから
リアルタイム制御の定義に当てはまると思います。
UNIX哲学のを取り入れたPOSIX原理主義だけが
リアルタイムカーネルを使わずにリアルタイム処理を実現できるのです。 >>15
論文を読みましたか?
リアルタイムカーネルを使わずに、シェルスクリプトをリアルタイム制御に使えます。
UNIX哲学に基づいていて移植性・持続性を最大限に高めるためにシェルスクリプトが使えるようになります。
ハードウェアに依存しないものは、多少性能が劣っても将来淘汰されにくいとされています。
20年や30年経っても保守をあまりやらなくても動作するソフトウェアの開発手法です。 >>16
何に使えるんでしょうか?
用途は何ですか? >>18
一般的なリアルタイムOSの用途は何でしょうか?
シェルスクリプトで置き換えられますか? 論文を見てください。シェルスクリプトでも低遅延で動かすことができて
倒立振子のシステムを構築できるので、リアルタイム制御ができています。
UNIX環境ではタスクスケジューラの影響でプロセスの実行タイミングが
正確に予測できないから、リアリタイム制御に支障をきたしてしまうわけです。
だからこれまではリアルタイム制御を必要とする組み込み型システムでは
プロセスのプライオリティを変更したり、スケジューラのリアルタイムポリシーを
SCHED_FIFOに設定するなどしてプロセスの優先度を高めるという手法とか
Linuxカーネルを低遅延カーネルに置き換えるなどの工夫が行われてきたでしょ?
そういったことが要らなくなるんですよ。 >>11
>最大13ミリ程度の低遅延のリアルタイム制御を実現しています。
13ミリ秒なんて低遅延なんて呼ばないと思います
>>20
>Linuxカーネルを低遅延カーネルに置き換えるなどの工夫が行われてきたでしょ?
この辺のシステムで問題にしているのは13ミリ秒なんてオーダーですか?
>そういったことが要らなくなるんですよ。
本当に要らなくなりますか? リアルタイムの定義は人それぞれでしょうね。
それだけじゃ足りないという人もいれば十分という人もいるでしょう。
しかしリアルタイムカーネルが不要になることは
倒立振子のシステムを構築していることで証明されています >>22
>リアルタイムの定義は人それぞれでしょうね。
リアルタイムシステムの定義ははっきりしていて
予め決められた時間以内での動作が保証されている
システムのことです
13ミリ秒以内に確実に動作が保証されているなら
それもリアルタイムシステムと言えるでしょう
しかし一般的なリアルタイムOSの使いどころを考えると
たとえ13ミリ秒以内の動作が保証されていても
13ミリ秒では精度が粗すぎるのではないでしょうか?
>>20
>そういったことが要らなくなるんですよ。
要らなくならないと全く思えません 訂正
>>20
>そういったことが要らなくなるんですよ。
要らなくならると全く思えません >>23
> 予め決められた時間以内での動作が保証されている
> システムのことです
それはあなたの定義ですね。
論文にはそんなことは書かれていません。
そもそもディスからの読み込みとかスワップがあるので
技術的に予め決められた時間以内での動作が保証するのは不可能です >>25
あなたの上げてくれた論文で参照されている文献を
いくつか読まれた方が良いですよ >>27
そういうのは専用のハードウェアが必要になるから
移植性・持続性が実現できません >>29
リアルタイムの一般的な定義が書いてあるよ
>>23は俺の定義ではない
それとリアルタイムOSで求められる時間精度がどれくらいかも分かる
13ミリ秒ってw だから人それぞれって言ってるでしょ
倒立振子のシステムみたいに13ミリ秒で十分な場合もあれば
1ミリ秒ぐらい必要な場合もあるでしょうね >>31
>>23
一般的なリアルタイムOSがターゲットしている精度とは
1000倍くらいかけ離れていてお話にならないってのが
率直な感想です そういうのは特殊な機能を持ったハードウェアと
カーネルの入れ替えが必要で、そういうは移植性や持続性に劣るわけです
だから論文で使ってるようなラズパイでは無理なんです
この論文のすごいところはUNIX哲学に基づいたリアルタイム制御のシステムで
移植性や持続性を最大限に高めるためにシェルスクリプトを使って
リアルタイム制御が可能であることの有効性を実証した所 >>33
RT LinuxとかART-LinuxとかRTAIとか
普通のPCAT互換機で動きますがな ハードウェアがサポートしている場合の話ね。ここ読めばわかるよ。
https://www.sea.jp/ss2021/download/12-SS2021.pdf
RTLinuxを導入しようとした場合、ハードウェアがサポートしてるか確認して
Linuxカーネルのソースコード一式とRTLinuxのパッチを用意して
ビルドを成功させないといけない。この時点でほとんどの人は脱落する
さらにリアルタイム性を確保するために、一般のシステムコールが使えない
こんなものよりもオプション扱いのPOSIX 1003.1bを含まない
POSIX.1-2017を使って、シェルスクリプトで同じことができる方が
移植性も持続性も高いわけだ >>35
だからw精度のオーダーが全然違うやろ?
1000倍の精度で闘ってる物の代替にはならんのだってばw >>35
そのサポートが必要と言ってるハードってなんだ?
その辺の電気屋でパソコン買ってきたら動くぞ ユニケージ開発手法の所なのね
あそこってシェルスクリプトで実現する事が最優先事項で、後はおざなりな印象なんだよね またユニケージはデタラメで間違いだらけの論文書いてるのか?
やさしいWeb3レベルじゃん カーネルをrtでコンパイルするだけかな
誰でもできるよ >>41
POSIXに準拠してないし、そんなものに依存したら
持続性がなくなるだろ。POSIX原理主義なら20年動くんやで Pythonなんかで作ったウェブサービスは数年で動かなくなるが
シェルスクリプトで作ったショッピングカートCGIは
ノーメンテで10年間動いている 1000倍の精度で戦っている物の代替にはならんのだってばw シェルスクリプトは速い
1秒間に1000回もコマンドを叩ける >>44
シェルスクリプトはOSの機能なんだからあたりまえだろw シェルスクリプトがOSの機能?
寝言は寝てから言え すごいなぁ
速いプロセッサで「たまたま」時間内に処理が終わっただけを
「リアルタイム処理」と言えちゃうのは
「リアルタイム処理」は許容応答遅延を決めて
それより小さくなるように「割込みマスク」なりを最低限用いる思想なんだが
倒立振り子とミサイルじゃ応答許容度が全然違うからね