タグ付けされた質問 「interrupt」

1
ソフトウェアおよびハードウェア割り込みとは何ですか、またそれらはどのように処理されますか?
ハードウェアおよびソフトウェア割り込みの概念を理解しているかどうかはわかりません。 私が正しく理解していれば、ハードウェア割り込みの目的は、CPUに注意を向けることであり、CPUマルチタスクの実装の一部です。 次に、ハードウェア割り込みを発行するのは何ですか?ハードウェアドライバープロセスですか? はいの場合、ハードウェアドライバープロセスはどこで実行されていますか?CPU上で実行されている場合、ハードウェア割り込みによってCPUの注意を引く必要はありませんか?他の場所で実行されていますか? ハードウェア割り込みはCPUに直接割り込みますか、それとも最初にカーネルプロセスと通信し、カーネルプロセスがCPUと通信しますか? 一方、ソフトウェア割り込みの目的は、現在CPUで実行されているプロセスがリソースを要求することだと思います。 リソースは何ですか?それらはすべて、実行中のプロセスの形式ですか?たとえば、CPUドライバープロセスとメモリドライバープロセスはCPUとメモリリソースを表しますか?I / OデバイスのドライバープロセスはI / Oリソースを表しますか?プロセスがリソースとも通信したい他の実行中のプロセスはありますか? はいの場合、ソフトウェア割り込みはカーネルプロセスを介して間接的にプロセス(リソースを表す)に接続しますか?ハードウェア割り込みとは異なり、ソフトウェア割り込みはCPUに直接割り込みませんが、代わりにカーネルプロセスに割り込み/接触しますか?


4
Ccで終了できないのはなぜですか?
ed最小限のテキストエディタであるプログラムは、Ctrl- を使用して割り込みを送信しても終了できませんC。代わりにエラーメッセージ「?」を出力します。コンソールに。ed割り込みを受信したときに終了しないのはなぜですか?ここで、単に終了するよりも不可解なエラーメッセージが役立つ理由はありません。この動作により、多くの新規ユーザーが次のような相互作用につながります。 $ ed hello ? help ? exit ? quit ? ^C ? ^C ? ? ? ^D $ su # rm -f /bin/ed このような悲劇的な浪費は、ed単に中断することに同意すれば簡単に回避できます。 同様の動作を示す別の頑固なプログラムはless、無視する理由があまりないようC-cです。これらのプログラムは単にヒントをとらないのですか?
20 less  interrupt  ed 

3
システムコール、メッセージパッシング、割り込みの関係は何ですか?
プロセス管理に関するウィキペディアの記事を読んでいます。私の焦点はLinuxにあります。システムコール、メッセージパッシング、割り込みの概念と目的の関係と違いを理解することはできません。これらはすべて、リソースとサービスをカーネルに要求するプロセスのためのものですか? この記事からの引用とその他の引用: OSが割り当て解除または割り当てを実行するために、プログラムの実行中にOSがプロセッサの制御を取り戻すには、2つの方法があります。 プロセスはシステムコール(ソフトウェア割り込みとも呼ばれます)を発行します。たとえば、ハードディスク上のファイルへのアクセスを要求するI / O要求が発生します。 ハードウェア割り込みが発生します。たとえば、キーボードでキーが押された、またはタイマーが切れた(プリエンプティブマルチタスクで使用)。 ユーザーモードで実行しているプログラムがカーネルのサービスを要求できる方法は2つあります。 * System call * Message passing 割り込みは、注意の必要性を示す非同期信号、または実行の変更の必要性を示すソフトウェアの同期イベントです。 ハードウェア割り込みにより、プロセッサは実行状態を保存し、割り込みハンドラーの実行を開始します。ソフトウェア割り込みは通常、命令セット内の命令として実装され、ハードウェア割り込みと同様の割り込みハンドラーへのコンテキスト切り替えを引き起こします。

3
Linuxカーネルは共有IRQをどのように処理しますか?
これまでに読んだことによると、「カーネルが割り込みを受け取ると、登録されているすべてのハンドラーが呼び出されます」。 各IRQの登録済みハンドラーはを介して表示できることを/proc/interrupts理解しています。また、登録済みハンドラーrequest_irqは、おおよそ次の形式のコールバックの受け渡しを呼び出したドライバーからのものであることも理解しています。 irqreturn_t (*handler)(int, void *) 私が知っていることに基づいて、特定のIRQに関連付けられたこれらの割り込みハンドラーコールバックのそれぞれを呼び出す必要があり、割り込みを実際に処理するかどうかを決定するのはハンドラー次第です。ハンドラーが特定の割り込みを処理しない場合、カーネルマクロを返す必要がありますIRQ_NONE。 私が理解できない問題は、各ドライバーが割り込みを処理する必要があるかどうかをどのように判断するかです。割り込みを想定している場合、内部的に追跡できると思います。もしそうなら、同じIRQの背後にある複数のドライバーが割り込みを予期している状況にどのように対処できるかわかりません。 これらの詳細を理解しようとする理由はkexec、PCIeブリッ​​ジとダウンストリームPCIのリセットピンとさまざまなレジスタで遊んでいる間にシステム操作の途中でカーネルを再実行するメカニズムをいじっているからです。端末。そうすることで、再起動後にカーネルパニックが発生するか、他のドライバーが操作を行っていなくても割り込みを受け取っていると不平を言っています。 ハンドラーが割り込みを処理する必要があると判断した方法は謎です。 編集:関連する場合、問題のCPUアーキテクチャはx86です。
14 linux  kernel  pci  interrupt  irq 

3
コンパイルを続行するにはどうすればよいですか?
makeソースツリー全体を再コンパイルしなくても、いつでもプロセスを中断できることはわかっています。私が知っているようにmake、ターゲットがまだコンパイルされていない場合、または最後のコンパイル後にソースコードが変更されている場合にのみ、ターゲットをコンパイルします。 しかし、私が中断した場合make、1つ以上の(並行性レベルに応じて)ハーフレディバイナリが確実に存在します。次に実行するときに、それらはmakeどうなりますか?または、部分的にコンパイルされたバイナリを回避するためにCtrl+ を押すと、現在のターゲットが終了しCますか?

1
過剰なksoftirqdリソース使用の原因をデバッグする方法は?
man ksoftirqdは以下を示します: ksoftirqdがCPU時間のごく一部を占めている場合は、マシンのソフト割り込み負荷が高いことを示しています。 私は、ksoftirqdプロセスが短期間に過剰なCPUおよびディスクリソースを使用する、一般的に高いシステム使用率でDebian Wheezyシステムを使用しています。その間、システムはカタツムリのペースで動作します。 このksoftirqdリソース使用率の急上昇の根本的な原因を理解するには、どうすればよいですか?
9 interrupt  load 

4
Ctrl + cはプロセスを強制終了しません
私は答えを探しましたが、これまでのところ、私の質問に答えるものは何もありません。現在Ubuntuサーバーにログインしていますが、プロセスを実行すると、そのサーバーで割り込みを実行できません。これが私のstty -aです。 user@Ubuntu1:~$ stty -a speed 38400 baud; rows 93; columns 200; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.