История изменений
Исправление intelfx, (текущая версия) :
Про то, как происходит штатная работа, ddos3 уже написал.
А вот запуск всех ядер, кроме первого, в момент старта ОС происходит именно так, как я описал: ОС с первого ядра «пинает» все остальные посредством IPI и говорит им «проснись и начни выполнять код функции ожидания» (что-то вроде вечного цикла из HLT). Потом этим ядрам начинают приходить таймерные прерывания, в табличке потоков появляются потоки и так далее.
Исходная версия intelfx, :
Ну вот в итоге у ОС есть где-то в памяти табличка потоков. Там для каждого потока есть его регистры и текущий адрес исполнения. На каждом ядре время от времени происходят таймерные прерывания. ОС их ловит, обрабатывает и по какому-то алгоритму выбирает тот поток, который должен выполняться до следующего таймерного прерывания. Это происходит на каждом ядре по отдельности.
А вот запуск всех ядер, кроме первого, в момент старта ОС происходит именно так, как я описал: ОС с первого ядра «пинает» все остальные посредством IPI и говорит им «проснись и начни выполнять код функции ожидания» (что-то вроде вечного цикла из HLT). Потом этим ядрам начинают приходить таймерные прерывания, в табличке потоков появляются потоки и так далее.