всем здравствуйте.
сразу говорю яндекс и гугл юзал.
интересует вопрос программирования для процессоров с несколькими ядрами.
из того что нашел в яндексе выяснил что с одной стороны программа должна быть написана для работы с несколькими ядрами (то есть часть вычислений в программе должна выполняться параллельно), с другой стороны ОС сама может распределять нагрузку на ядра(одна программа работает на одном ядре, вторая на другом ядре и они друг другу не мешают).
вопросы:
1) что значит написать программу для работы на нескольких ядрах? например на Перле функция fork() это из этой области или тут что то другое?
2) если программа написана для работы на многоядерном процессоре и ОС регулирует эту работу назначая каждой программе определённое ядро, как эти две вещи работают вместе?
3) как обстоят дела с многоядерными процессорами в FreeBSD и Linux?
помогите разобраться, если где то уже есть ответы на эти вопросы буду признателен за ссылку, заранее спасибо.