2010-12-29 13 views
5

(NB:これは、Java/.NETスレッドを中断することに関するものではありません、これはカーネルモードの割り込みについてです。)割り込みスレッドとは何ですか?

こんにちは、

ウィキペディアはこれがInterrupt handler記事の割り込みスレッドについて言いたいことがあります。

割り込みスレッド

いくつかのオペレーティング・システム - Solarisの、 NetBSDのはMac OS X、ひるみとFreeBSD、例えば、- 異なるスキーム を割り込みスレッドと呼びます。 デバイスドライバによって提供される割り込みハンドラは、 割り込みを有効にして優先度が高い スレッドのみであり、さらに重要なことに、mutexでブロックします。 これは大きく は、カーネルでのロックを単純化します。 また、割込みスレッドは、優先度の高い割込み スレッドによって先取りされた である可能性があります。

FreeBSD(他の中のもの)が明らかに使用する割り込みスレッドのこの技術は何ですか?そして、どこでもっと読むことができますか?

ありがとうございます。 :)

答えて

1

さらに詳しい情報は、FreeBSDのithread(9)にあります。

+0

こんにちは。これは私が尋ねているようですが、それがどのように動作するか、遅延割り込み実行時の他の方法とどのように違うのかをもう少し詳しく説明できますか? –

+0

私は詳細を知らない、申し訳ありません。しかし、http://www.freebsd.org/doc/en/books/arch-handbook/smp-design.htmlにはさらに詳しい情報があるようです。 – BCran

2

ハードウェアは、オペレーティングシステムに中断のあるイベントを通知します。エラーが発生したときや、周辺機器が新しいデータを利用できるとき(ユーザがキーを押したとき、ネットワーク上に到着したパケット、タイマーが切れた時など)、それらを呼び出すことができます。これらの中断は、システムによって迅速に処理される必要があります(応答するように見えるように)。

これらはカーネルによって処理されます。一般に、そのような割り込みの1つが到着すると、現在実行中のコードが停止され、カーネルの機能が呼び出されます。レスポンシブなシステムを作るためには、中断はすばやく実行されなければならないので、リソースを待っているカーネルをブロックしたり、そのようなことをしてはいけません。古典的な解決策は、中断が発生したかどうかをチェックし、実際のハンドラを呼び出すために、中断と復帰の回数をメモし、次にカーネルのメインループにダム割り込み機能を持たせることです。

これらの割り込みをマスクすることができます(非マスカブル割り込み(NMI)を除く)ため、カーネルはカーネルモードでいくつかのスレッドを生成し、割り込みのマスクを解除してそれらを処理させるだけです。これらのスレッドはメインのカーネルスレッドから独立しているため、スレッドがブロックされている間に到着する可能性のある割り込みを処理するのに十分なスレッドがあればブロックできます。

+0

こんにちは。答えをありがとう。私は割り込みに基づいた遅延実行の必要性を理解しています。私が特に関心を持っているのは、割り込みスレッドと呼ばれるこの手法です。 –

関連する問題