Booting an x86 SMP system
The microkernel itself contains very little hardware- or system-specific code. The code that determines the capabilities of the system is isolated in a startup program, which is responsible for initializing the system, determining available memory, etc. Information gathered is placed into a memory table available to the microkernel and to all processes (on a read-only basis).
The
startup-x86
program is designed to work on systems that support the Unified Extensible Firmware Interface.
This startup program is responsible for:
- determining the number of processors
- determining the address of the local and I/O APIC
- initializing each additional processor
After a reset, only one processor will be executing the reset
code. This processor is called the boot processor
(BP). For each additional processor found, the BP running
the startup-x86 code will:
- initialize the processor
- switch it to 32-bit protected mode
- allocate the processor its own page directory
- set the processor spinning with interrupts disabled, waiting to be released by the kernel
Page updated:
