W jaki sposób przerwy są obsługiwane przez maszyny z dwoma procesorami?

Mam pomysł jak przerywniki są obsługiwane przez dwurdzeniowy procesor. Zastanawiałem się, jak obsługa przerwań jest zaimplementowana na płycie z więcej niż jednym fizycznym procesorem.

Czy odpowiedzialność za przerwanie zależy od konfiguracji fizycznej płyty? Każdy procesor musi być w stanie obsłużyć pewne typy przerwań, takie jak We/Wy dysku. chyba że istnieje jakiś Obwód do zarządzania i wysyłania przerwań do odpowiedniego procesora? Moim zdaniem schemat musi być procesor neutralny, tak aby każdy procesor i rdzeń mógł uruchomić obsługę przerwań.

Jeśli rdzeń czeka na odczyt dysku, czy ten rdzeń będzie tym, który uruchomi obsługę przerwań, gdy dysk będzie gotowy?

Author: Jonas, 2009-03-01

4 answers

W systemach x86 każdy procesor otrzymuje swój własny lokalny APIC (Advanced Programmable Interrupt Controller), który jest również podłączony do siebie i do APIC we/wy obsługującego routing przerwań urządzeń do lokalnego APIC.

System Operacyjny może zaprogramować APIC, aby określić, które przerwania są kierowane do których procesorów (lub pozwolić APIC podjąć tę decyzję).

Wyobrażam sobie, że wielordzeniowy procesor miałby lokalny APIC dla każdego rdzenia, ale szczerze mówiąc nie jestem tego pewien.

Zobacz te linki po więcej szczegółów:

 7
Author: Michael Burr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 04:25:18

Interesuje Cię powinowactwo procesorów SMP. Tutaj{[2] } jest doskonały artykuł o tym, jak to jest obsługiwane w Linuksie. Zaawansowany programowalny kontroler przerwań (APIC) to sposób zarządzania tym w nowoczesnym systemie. Zasadniczo, domyślnym byłoby, aby wszyscy przejść do procesora 0, chyba że masz system operacyjny, który wykorzystywał ten interfejs do prawidłowego skonfigurowania rzeczy. Ponadto, niekoniecznie chcesz, aby rdzeń, który wydał polecenie, czekał na konkretne przerwanie. Chcesz mniej załadowane rdzenie, aby je otrzymać.

 3
Author: John Ellinwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 05:17:13

Zadałem już to pytanie jakiś czas temu. Może da ci to jakiś wgląd :)

Jak działają przerwania w maszynach wielordzeniowych / multicpu

 1
Author: Giovanni Galbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:41

Powiedziałbym, że zależy to od producenta sprzętu...

Jednak ten link sprawia, że wierzę, że większość jest prawdopodobnie obsługiwana przez Główny procesor i/lub pierwszy rdzeń.

Inny link

 0
Author: uzbones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 04:17:31