Планировщик процессов (scheduler) Linux
Почему в многоядерной системе процессы мигрируют с ядра на ядро?
И как это реализовано в планировщике? Какой участок кода отвечает за принятие решения о миграции?
Цитата: matanga
Почему в многоядерной системе процессы мигрируют с ядра на ядро?
А для планировщика разницы нет, ядро это или отдельный процессор. Логически, для него ядро уже представляет собой процессор.
Как вы наверно знаете, планировщик задач (потоков управления) в системе с вытесняющим параллелизмом решает задачу оптимального распределения M задач на N процессоров (исполняющих единиц) с учетом приоритетов первых. Потому и получается, что задача может (и будет!) "гулять" по процессорам; для закрепления задачи за конкретными исполняющими единицами обычно можно задать маску соответствия (affinity mask), по которой планировщик будет помещать задачу, только на строго определеннные процессоры/ядра.
а в каком месте кода самого планировщика реализован этот механизм?
а какой именно планировщик из имеющихся в Linux вас интересует? :)