Start up flow of PC:
1. BIOS
a. At the very beginning, BIOS will load 512-byte boot sector into [0x7c00,0x7dff);
b. Then set CS:IP = 0000:7C00
2. Boot loader
a. Switch from real mode (16 bit) to protected mode (32 bit), mainly by setting gdtr.
b. Load kernel image from hard disk.
((void (*)(void))(ELFHDR->e_entry())(); // Check the kernel image, it's 0x0010000c
3. Kernel
a. In kern/entry.S, it will turn on MMU first, set cr3 & cr0 with entry_pgdir
b. Set esp and ebp.
c. i386_init()
|--> cons_init()
| |--> cga_init()
| |--> kbd_init()
| |--> serial_init()
|--> mem_init()
|--> env_init()
|--> trap_init()
|--> mp_init()
|--> lapic_init()
|--> pic_init()
|--> boot_aps()
|--> env_create()