一般來說,硬件中斷需要立即處理,至少要確認它並做一些第一級處理。據我瞭解,這不是計劃的活動。請糾正我。哪個處理器會在多核系統中執行硬件中斷
所以問題是如何選擇一個實際上可以執行這個硬件中斷處理程序的處理器?
一個可用於Linux和/或BSD系統
一般來說,硬件中斷需要立即處理,至少要確認它並做一些第一級處理。據我瞭解,這不是計劃的活動。請糾正我。哪個處理器會在多核系統中執行硬件中斷
所以問題是如何選擇一個實際上可以執行這個硬件中斷處理程序的處理器?
一個可用於Linux和/或BSD系統
這確實取決於操作系統實現回答這個問題。
有的將所有中斷分配給單個處理器,有的則將中斷處理分配給部分或全部處理器。
在NUMA系統上,操作系統應該試圖將中斷處理分配給「附近」處理器。
你必須閱讀你感興趣的操作系統(和版本)的來源,找出它的用途。
感謝您的回答+1。希望確定你的答案是關於硬件中斷,而不是下半部分的處理,這實際上是一個計劃的活動。 –
我沒有區分中斷處理程序的「下半部分」和硬件中斷。但是一些硬件系統可能會將硬件中斷連接到處理器的一個子集,甚至是單個處理器,這使得操作系統更加有趣。 (請記住,在IBM-PC/AT系統架構中,世界上比X86更多)。 –
它部分取決於操作系統實現,更強烈地取決於PIC,PIR等的硬件實現。 – 0andriy
一般來說,這取決於多核處理器和操作系統提供的功能。在使用多核處理器時,您可能需要按照您的要求配置中斷的相關性。
在linux
的情況下,/proc
文件系統提供了顯示/配置中斷關聯的規定。
1)各自的IRQ文件smp_affinity
保持了能夠被用於配置IRQ要由相應的芯在多核系統中提供服務的位掩碼:
的/ proc/IRQ/
'irq_number'
/smp_affinity
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
有助於通過避免位掩碼的方法配置的範圍CPU爲特定的IRQ的配置芯:
的/ 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
一箇中斷負載均衡守護進程可以在中斷的分配幫助多個處理器內核,以優化性能。該守護進程可能在某些系統中默認啓用,因此如果您想手動配置中斷的關聯性,則應該禁用此守護程序,否則這可能會在每次重置後覆蓋配置的關聯性。
AFAIK主線Linux僅支持SMP對稱多處理器硬件,這意味着任何處理器都可以處理中斷。我已經看到UNIX移植到非對稱硬件,即有專門用於I/O和中斷的處理器。順便說一句處理器不會*「執行中斷」*。它可以*服務*中斷,即執行中斷服務程序ISR。 – sawdust
等待,UP也支持。 – 0andriy