問題タブ [interrupt-handling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2262 参照

x86 - IDT、カーネル、またはプロセッサを初期化するのは誰ですか?

これはウィキペディアからです...

割り込み記述子テーブル(IDT)は、x86アーキテクチャが割り込みベクタテーブルを実装するために使用するデータ構造です。IDTは、割り込みと例外に対する正しい応答を決定するためにプロセッサによって使用されます... 8086プロセッサでは、IDTはアドレス0x0000から0x03ffまでのメモリ内の固定位置にあります...

これはhttp://www.linuxjournal.com/article/4048?page=0,1からです

start_kernel(/usr/src/linux/init/main.cにあります)が呼び出されると、trap_init(/usr/src/linux/kernel/traps.cにあります)が呼び出されます。trap_initは、マクロset_trap_gate(/usr/include/asm/system.hにあります)を介してIDTをセットアップし、「OffsetDescriptionis」テーブルに示されているように割り込み記述子テーブルを初期化します。

これらの2つの説明は対照的であるように見えるため、私はかなり混乱しています...最初の説明は、IDTがプロセッサに関連しており、カーネルから独立していることを示しています(実際にはカーネル内にありません)。2つ目は、LinuxカーネルがIDTを初期化し、ISRのコードを実装し、ISRのすべてのコードがカーネル内にあることを示しています。

また、デバイスがCPUへの割り込みを生成する場合、割り込みルーチンの実行を担当するのはカーネルなのかプロセッサなのか。親切に説明してください...よろしくお願いします

0 投票する
3 に答える
458 参照

c - 割り込みテーブルの作成方法

シミュレートされた OS の割り込みテーブルを作成する必要があるオペレーティング システム クラスの宿題があります。以前の割り当てから、適切なドライバーをすべてセットアップしました。

私の理解では、トラップのinterrupt_table[x]場合は= 0 、クロック割り込みの場合は= 1などの行に沿って、割り込みタイプの配列が必要です。には、割り込みの各タイプの適切なハンドラーへのポインターが含まれている必要があります。次に、適切なドライバーを呼び出しますか?私はこれを正しく理解していますか?これらのハンドラーを作成するための正しい方向に誰かが私を向けることができますか?xxinterrupt_table

助けてくれてありがとう。

0 投票する
2 に答える
2139 参照

perl - perl はシェルを呼び出します -- 割り込み ^C は、perl ではなく、シェルを停止します

Perl スクリプトを使用して、system() で呼び出される反復操作をバッチ処理したいと考えています。何か問題が発生してこのスクリプトを中断したい場合は、^C がシェルによってキャプチャされ、すべてのジョブが停止し、Perl スクリプトは次のジョブに進みます。

割り込みが Perl スクリプトを停止するようにジョブを呼び出す方法はありますか?

0 投票する
2 に答える
282 参照

memory - IA-32 アーキテクチャが、割り込みハンドラを呼び出す前に EFLAGS レジスタをスタックにプッシュするのはなぜですか?

EFLAGS レジスタがスイッチのように機能するからですか? アクティブな場合、割り込みは有効になりますが、それ以外の場合はそうではありませんか?

たとえば、Java プログラムでは、次のようになります。

0 投票する
1 に答える
1079 参照

interrupt-handling - と ISR の下半分

インタビューでこんな質問をされました。割り込みサービス ルーチンの下半分にスリープを含めることが許可されていないのはなぜですか。私の答えは、ISR の実行中に割り込みがマスクされるため、下半分にスリープがあるといくつかの割り込みを見逃すというものでした。私は考えることができませんでした。これは正しい答えですか? 誰かがこれについて他の理由を考えることができますか?

0 投票する
0 に答える
475 参照

python - LinuxでPythonのパラレルポート割り込みにアクセスする

Linuxでパラレルポート割り込み(ピン10)にアクセスできるようにするPythonモジュールのようなものはありますか?

PS実用的な例を提供してくれない限り、「PyParallel」で応答しないでください。

0 投票する
4 に答える
4089 参照

assembly - ベクトル化された割り込み

ベクトル化された割り込みとベクトル化されていない割り込みの違いは何ですか?

すべての割り込みはベクトル化された割り込みである必要があると思いました...結局のところ、すべての割り込みがベクトル番号を持っているわけではなく、したがって特定のISRを持つベクトル[割り込みサービスルーチン]

(ISRアドレスは、ページテーブルの4 *割り込みを生成したデバイスのベクトル#です。32ビットアドレスアーキテクチャを想定しています)。

ありがとう!

0 投票する
6 に答える
4494 参照

c++ - 割り込みハンドラでの浮動小数点演算 (PowerPC、VxWorks)

私が取り組んでいるソフトウェアで見た問題について、私が理解しようとしていることに正確に答えるリソースを見つけられなかったので、ここで天才に尋ねます!

まず、PowerPC プロセッサで VxWorks を実行しています。

別の問題をデバッグしようとして、割り込み処理ルーチンに簡単で汚れたデバッグ コードを投げてみました。関心のある値 (つまり、最後の割り込みが発生してからの経過時間) を格納するために、倍精度浮動小数点演算が必要でした。これは、実行中のスレッドのハンドラーの外側で後で使用しました。これには問題は見られませんでしたが (確かに、時間がかかりますが、時間的には余裕がありました。割り込みはそれほど速くはありません)、VxWorks は確かに気に入らなかったようです。そのコードに到達すると、一貫してクラッシュします。これは、システムを再起動する悪いクラッシュの 1 つです。問題の原因として double 操作を突き止めるのに少し時間がかかりました。割り込みで呼び出されたルーチンから一定の double を返すことでさえ、悲惨な失敗をしました。

PowerPC (またはその他の一般的なアーキテクチャ) では、割り込みハンドラで浮動小数点演算を実行し、割り込みハンドラによって呼び出される関数で浮動小数点 (または他のタイプ) の値を返す際に一般的に問題がありますか? これによりプログラムがクラッシュする理由がわかりません。

(回避策は、最後の割り込み以降の「ティック」から最後の割り込み以降の「時間」への変換を、コードがハンドラーの外に出るまで遅らせることでした。これは、長い整数操作をうまく処理しているように見えるためです。)

0 投票する
2 に答える
895 参照

memory - メモリの読み取りに問題があります

デバッガーでコードを実行すると、一連の手順の後、コードが失われ、コマンドが順不同で実行されます。スタックがオーバーフローしているかどうかはわかりません。

これは私が通常得るエラーです:

MSP430: 長さ 0x1d2 のページ 0 の 0xffe2e でメモリ ブロックを読み取る際の問題: 無効なパラメータ

それが何であるかについて何か提案はありますか?一部の割り込みを処理しないことで発生する可能性のある問題について簡単に読みました。

また、スタックがオーバーフローしているかどうかを確認できるように、RAM を特定の値で埋めようとしています。RAM 全体を埋める方法についての提案、たとえば 0x1234 の値はありますか?

ありがとう!