すべてはタイトルにあります。優れたドキュメントへのリンクは大歓迎です。
4 に答える
ローカルタイマー割り込みは、APICに実装されたタイマーであり、任意のCPUで処理できる割り込みを発生させるのではなく、特定のCPUのみに割り込みます。これについては、Bovet&Cesatiの「UnderstandingtheLinuxKernel」で説明されています。スニペット:
最近の80x86マイクロプロセッサに存在するローカルAPIC(第4章の「割り込みと例外」のセクションを参照)は、さらに別の時間測定デバイスであるCPUローカルタイマーを提供します。
CPUローカルタイマーは、今説明したプログラマブルインターバルタイマーに似たデバイスで、ワンショットまたは定期的な割り込みを発行できます。ただし、いくつかの違いがあります。
- APICのタイマーカウンターは32ビット長ですが、PITのタイマーカウンターは16ビット長です。したがって、ローカルタイマーは、非常に低い周波数で割り込みを発行するようにプログラムできます(カウンターは、割り込みが発行される前に経過する必要のあるティック数を格納します)。
- ローカルAPICタイマーはそのプロセッサにのみ割り込みを送信しますが、PITはグローバル割り込みを発生させます。これはシステム内の任意のCPUによって処理される可能性があります。
- APICのタイマーは、バスクロック信号(または古いマシンではAPICバス信号)に基づいています。1、2、4、8、16、32、64、または128のバスクロック信号ごとにタイマーカウンタを減らすようにプログラムできます。逆に、独自のクロック信号を利用するPITは、より柔軟な方法でプログラムすることができます。
Michael Burr よりも技術的でない回答:
どのCPUでも関係なく、いくつかのことを一瞬ごとに行う必要があります。
他のことは、各 CPU で一瞬ごとに行う必要があります。たとえば、別のプロセスに切り替える必要があるかどうかを確認します。
2 番目のタイプのローカル タイマー割り込みが存在します。実行されるたびに、それらをチェックして必要な処理を行います。
SMP システムでは、アピック タイマーがスケジューラ/スレッドの再スケジュールに使用されます。
UP システムでは、ピット タイマーがスケジューラ/スレッドの再スケジュールに使用されます。
通常、PIT は SMP システムでは使用されなくなりました。
IPI 関連の機能を処理するためにローカル タイマーが使用されているように感じます。この推測は間違っている可能性があります。コードが何のために構成され、ハンドラーに何が含まれているかを確認する必要はありません。しかし、システム タイマーと jiffy が GP タイマーの 1 つにリンクされているように感じます。そのため、たとえば SMP ARM では、このタイマーからの割り込みは、GIC アフィニティ登録を通じて 1 つのコアに関連付けられます。ローカル タイマーについて詳しく説明します。