Как происходит переключение контекста потоков на многоядерном процессоре?

При переключении контекста на одноядерном процессоре ответственный код выполняется на единственном процессоре, который заботится о переключении потоков.

Но как это сделать, когда у нас несколько процессоров? Есть ли главный ЦП, который осуществляет переключение контекста всех подчиненных ЦП? Каждый процессор отвечает за собственное переключение контекста? Если да, то как синхронизируется переключение, чтобы два процессора не выполняли один и тот же поток? Или есть какой-то другой механизм?

7
задан gablin 12 October 2010 в 13:55
поделиться