0

一般に、ハードウェア割り込みは、少なくともそれを認識して処理の第1レベルを行うために、直ちに処理する必要があります。私が理解するように、これはスケジュールされた活動ではありません。私を修正してください。muticoreシステムでどのプロセッサがハードウェア割り込みを実行するか

実際にこのハードウェア割り込みハンドラを実行するプロセッサを選択する方法は問題ですか?

一つは、Linuxおよび/またはそれが真のオペレーティングシステムの実装に依存BSDシステム

+0

AFAIK mainline LinuxはSMP、シンメトリックマルチプロセッサハードウェアのみをサポートします。これは、どのプロセッサも割り込みを処理できることを意味します。私はUNIXが非対称ハードウェアに移植されているのを見てきました。つまり、I/Oと割り込み専用のプロセッサがあります。 BTWはプロセッサが割り込みを実行しない*。割り込みをサービス*することができます。つまり、割り込みサービスルーチンISRを実行することができます。 – sawdust

+0

待ち、UPもサポートされています。 – 0andriy

答えて

1

のためにこれを答えることができます。

一部のプロセッサではすべての割り込みが割り当てられますが、一部のプロセッサでは割り込み処理が分散されるプロセッサもあります。

NUMAシステムでは、オペレーティングシステムは、は、近くのプロセッサに割り込み処理を割り当てようとする必要があります。

使用するオペレーティングシステム(およびバージョン)のソースを読んで、その内容を把握する必要があります。

+0

あなたの答え+1ありがとう。あなたの答えが実際にスケジュールされた活動である下半分の処理ではなく、ハードウェア割り込みに関するものであることを確認したい。 –

+0

私は割り込みハンドラの "下半分"とハードウェア割り込みを区別していませんでした。 しかし、一部のハードウェアシステムでは、ハードウェア割り込みをプロセッサのサブセット、または単一のプロセッサに配線することがあり、オペレーティングシステムがさらに面白くなります。 (IBM-PC/ATシステムアーキテクチャーのX86よりも世界があることを覚えておいてください) –

+1

部分的にはOSの実装に依存しますが、PIC、PIRなどのハードウェア実装によりますます異なります。 – 0andriy

1

一般に、これはマルチコアプロセッサとOSが提供する機能に依存します。マルチコアプロセッサを使用している間は、必要に応じて割り込みの親和性を設定する必要があります。

linuxの場合、/procファイルシステムには、割り込みのアフィニティを表示/設定する手段があります。

/PROC/IRQ/'irq_number'/smp_affinity

1)各IRQのファイルsmp_affinityは、マルチコアシステムの各コアによってサービスされるIRQを構成するために使用することができるビットマスクを保持します

echo 2 > /proc/irq/12/smp_affinity -> Configures the affinity of IRQ 12 to CPU 1 
echo 4 > /proc/irq/14/smp_affinity -> Configures the affinity of IRQ 14 to CPU 2 

2)smp_affinity_listがコアを構成するビットマスクの方法を回避することによって、特定のIRQのためのCPUの範囲を設定するのに役立つファイル:

は/ proc/IRQ/'irq_number'/smp_affinity_list

cat /proc/irq/12/smp_affinity_list -> Configures the affinity of IRQ 12 to CPU cores 0 to 3 

3)また、Linuxは、パフォーマンスを最適化するために、プロセッサコア間で割り込みの分布に助けることができるirqbalanceと呼ばれる割り込み負荷分散デーモンを提供しています。このデーモンは、特定のシステムではデフォルトで有効になっている可能性があります。したがって、手動でリセットする必要がある場合は無効にしてください。

関連する問題