Так у вас есть автономно (вы сказали «pre-boot»), как загрузчик, работающий в реальном режиме? И это на PeeCee с обычным BIOS?
В этом случае у вас работает только один процессор. Для того, чтобы закрутить вверх другие блоки процессора операционной системы, как правило, выполнить то, что называется универсальный алгоритм запуска который идет как это:
BSP sends AP an INIT IPI
BSP DELAYs (10mSec)
If (APIC_VERSION is not an 82489DX) {
BSP sends AP a STARTUP IPI
BSP DELAYs (200μSEC)
BSP sends AP a STARTUP IPI
BSP DELAYs (200μSEC)
}
BSP verifies synchronization with executing AP
BSP является загрузка процессора. AP является прикладным процессором. IPI - это межпроцессорное прерывание. Чтобы сделать IPI, вам необходимо включить APIC, расширение контроллера прерываний для архитектуры ПК, которое не включено при загрузке. Вот почему код беспокоится о том, какая версия ICU работает. Все это довольно глубокая ядерная магия. Вы можете попробовать посмотреть на Linux, NetBSD или на другой исходный код BSD для примера, но читать его будет непросто. Если вы действительно выиграете, вы можете найти небольшое ядро или отдельную тестовую программу SMP где-то там.
Для получения дополнительной информации см. Intel Multiprocessor Specification.
Можете ли вы сделать MP в реальном режиме? – Draemon
нет причина не делать. В MP нет ничего особенного. –
Похож на обман http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –