« Отговор #3 -: Feb 16, 2014, 16:15 »
Само един процесор изпълнява прекъсването. Разликата е там че при SMP системите се използва local APIC-а, вместо програмируемия таймер на дъното. Най-лесното е да изпълниш cat /proc/interrupts | grep LOC и ще видиш че всяко ядро е обслужило различен брой прекъсвания на таймера. Няма "глобално" прекъсване, което да се изпълнява на всички процесори. Това има и добри и лоши страни, но това е извън темата.
А иначе ако трябва да съм напълно акуратен, синхронизация има (иначе глобално няма как да станат нещата), но това не става при всяко обслужване на timer прекъсването от всяко ядро. Критериите не ги помня, но доколкото имам спомени, когато runqueue-то на някой процесор остане празно, се вика балансиращата функция, която заключва runqueue-тата за всеки процесор и преизчислява нещата. Същата се вика и периодично на някое от ядрата през някакъв интервал от време, но там нещата загрубяват, защото интервала не е постоянен, а зависи от натоварването на системата, от governor-а на процесора и тем подобни неща.