
No.2ベストアンサー
- 回答日時:
正確には「割り込みハンドラのうち、割り込みを許可しない部分の処理をなるべく早く終えたほうがよい」ということです。
割り込みが許可されない状態では、他の割り込み要求が発生してもそれに対応する割り込み処理が実行されない(待たされる)ことになるので、割り込み要求から割り込み処理までの遅延時間の要求が厳しい場合に要求を満たせなくなる可能性が増すからです。ですので逆に言えば、割り込みを許可しない部分の処理時間を積み上げていって、それが「割り込み要求から割り込み処理までの遅延時間の要求」の最も厳しいものもクリアできる程度なのであれば、割り込みハンドラで速やかに処理を終えなくても構わないということです。
No.4
- 回答日時:
iTron はよくわからないのですが、ARM の場合の話を書いてみます。
# ARM を使った組込み屋さんなもので。。。
# OS は独自の簡易 OS を使用しています。
# 機能としてはタスクディスパッチくらいしか持っていませんが。。。
iTron の場合には見当違いの内容があったら、適当に読み飛ばしてください。
# 大筋ではずしてはいないと思いますが。。。
タスクが動いている場合と割込み処理の場合とでは、CPU のモードが異なります。
そして、割込み処理中は、タスクが動けなくなります。
ハードウエアから割込みが入ると、それまでタスクにあった CPU の実行権が、割込み処理にうばわれる形になります。
その結果、タスクの処理は割込み処理が終わるまで待たされることになります。
というわけで、割込み処理の時間が長くなると、タスクに処理が回らなくなる時間が長くなってしまいます。
ですので、割込み処理の時間は短いほうが良いのです。
理想を言えば jacta さんの回答にもあるように、割込みが入ったらタスクに処理を移して、本処理はタスクコンテキストで行うようにした方が良いのは確かですね。
ただ、組込み系のデバイスドライバの場合、設計の都合上タスクを持たない場合もあると思います。
そのような場合には、ある程度処理時間を短くするようにコーディングを工夫する必要はあります。
# 一部をアセンブラにしたりすることもありますね。
この回答へのお礼
お礼日時:2005/11/04 19:26
多数のご回答ありがとうございました。
割り込み処理ではタスクを切替えるのみで、主だった処理はタスクで行う設計を考えておりましたが、タスクの処理が終了するまで割り込み禁止状態にしようと考えておりました。xcrOSgS2wYさんのご意見を参考に設計しなおしたいと思います。
本来ならお一人づつお礼を申し上げるべきですが、失礼ながらこの欄にて皆様へのお礼と代えさせていただきます。
ありがとうございました。
No.3
- 回答日時:
割り込み禁止時間が長くなることで応答性能が悪くなることは既に回答がでていますので、それ以外の観点からお答えします。
割り込みハンドラで複雑な処理をやろうとすると、それだけスタックの消費が大きくなります。割り込みスタック領域が別に用意されているアーキテクチャならよいのですが、そうでなければスタックの総使用量が見積もりにくくなります。
そもそも、非タスクコンテキストでは何かと制約も大きいので、可能な限り適切なタスクを起こしてタスクコンテキストで処理を行うようにした方が、扱いも簡単ですし、間違いも発生しにくいと思います。
No.1
- 回答日時:
システム全体の性能というよりはリアルタイム性とかレスポンスが落ちると言った方が良いでしょうね。
OSが割り込みを多重処理できなければ割り込み処理中は他の割り込みを一切受け付けないし、多重処理できても優先度の低い割り込みは受け付けないので、割り込みハンドラで長い処理を実行するとそれだけ割り込み応答性能は落ちることになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
C言語 関数、変数の宣言について
-
c言語
-
プログラミングc++を全く分か...
-
C言語について(初心者)
-
C# で 数式文字列処理を処理す...
-
visual studio 2022でのC#プロ...
-
DNCL(共テ用プログラミング言語...
-
プログラマーです。このDB設計...
-
ペーパーマリオみたいにドット...
-
C言語の関数のextern宣言
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
あってる
-
DNCL(共テ用プログラミング言語...
-
C言語のことです。写真(見にく...
-
Cのプログラムからアクセスでき...
-
プログラミング言語でアプリや...
-
c++の勉強方法を教えてくださ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
このレジの並び方は間違ってま...
-
CPU負荷率の安全な上限と計...
-
スーパーのレジで並んでいたら...
-
電車で待機列の割り込みについ...
-
【組込み】割り込み中のstatic...
-
VB6でSendKeyを利用したTab移動...
-
マイコン C言語 割り込み処理...
-
pic 複数の割り込み関数 切り分...
-
USJでの割り込み
-
PICマイコンでエンコーダパルス...
-
H8マイコンで割り込みが任意の...
-
CPUの処理量を減らすコーデ...
-
定周期での割り込み
-
割り込みハンドラの処理の簡素化
-
マイコンのメインルーチン内でw...
-
PIC12F683から移植
-
VB.NET スレッドからのイベント...
-
PICで内部タイマーを使わずカウ...
-
VBAのDoEventsが上手く動きません
-
順番待ちで並んでいる時、割り...
おすすめ情報