Vous avez donc un programme autonome (vous avez dit "pré-démarrage"), comme un chargeur de démarrage, fonctionnant en mode réel? Et c'est sur un PeeCee avec le BIOS habituel?
Dans ce cas, un seul processeur est en cours d'exécution. Pour les autres unités CPU spin un système d'exploitation exécutons habituellement ce qu'on appelle l'algorithme de démarrage universel qui va comme ceci:
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
Le BSP est le processeur d'amorçage. Un point d'accès est un processeur d'application. Un IPI est une interruption inter-processeur. Pour effectuer un IPI, vous devez activer l'APIC, une extension de contrôleur d'interruption de l'architecture du PC qui n'est pas activée au démarrage. C'est pourquoi le code s'inquiète du type de version ICU qu'il exécute. Tout ceci est une magie de noyau assez profonde. Vous pourriez essayer de regarder Linux, NetBSD, ou un autre code source * BSD pour un exemple, mais il ne sera pas facile à lire. Si vous gagnez vraiment, vous pourriez trouver un petit noyau ou un programme de test SMP autonome quelque part.
Pour plus d'informations, voir le Intel Multiprocessor Specification.
Pouvez-vous même faire MP en mode réel? – Draemon
aucune raison de ne pas. Il n'y a rien de spécifique au mode de MP. –
On dirait une dupe de http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –