in modo da avere un programma stand-alone (hai detto "pre-boot"), come un bootloader, in esecuzione in modalità reale? E questo è su un PeeCee con il solito BIOS?
In tal caso è in esecuzione una sola CPU. Al fine di spin-up le altre unità CPU di un sistema operativo in genere eseguire quello che viene chiamato l'algoritmo di avvio universale che va in questo modo:
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
Il BSP è il processore di avvio. Un AP è un processore dell'applicazione. Un IPI è un interrupt tra processori. Per eseguire un IPI, è necessario abilitare l'APIC, un'estensione del controller di interruzione sull'architettura del PC che non è abilitata all'avvio. Ecco perché il codice è preoccupato per quale tipo di versione ICU è in esecuzione. Tutto questo è magia del kernel abbastanza profonda. Potresti provare a guardare Linux, NetBSD o altro codice sorgente * BSD per un esempio, ma non sarà facile da leggere. Se vinci davvero, potresti trovare un piccolo kernel o un programma di test SMP stand-alone da qualche parte.
Per ulteriori informazioni, vedere Intel Multiprocessor Specification.
Puoi persino fare MP in modalità reale? – Draemon
nessun motivo per non farlo. Non c'è nulla di specifico per la modalità MP. –
Sembra un duplicato di http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –