Linux kernel boot protocol memory layout
Posted: Wed Oct 06, 2021 4:06 pm
This might be a silly question, but why is the memory layout documented in this document from the linux documentation different from the article about the memory map from the osdev wiki in the address 0x00000500?
According to the linux kernel documentation the memory is something like this:
But in the osdev wiki, it is something like this:
The "Real Mode IVT" and "BDA" are things that are meant for BIOS use only, so it makes sense. I don't undestand however why linux says memory from 0x000500 to 0x000600 is also "BIOS use only" but that piece of memory is part of the "Conventional memory" according to the osdev wiki.
According to the linux kernel documentation the memory is something like this:
Code: Select all
010000 +------------------------+
| Boot loader | <- Boot sector entry point 0000:7C00
001000 +------------------------+
| Reserved for MBR/BIOS |
000800 +------------------------+
| Typically used by MBR |
000600 +------------------------+
| BIOS use only |
000000 +------------------------+
Code: Select all
007E00 +------------------------+
| Your OS BootSector |
007C00 +------------------------+
| Conventional memory |
000500 +------------------------+
| BDA (BIOS data area) |
000400 +------------------------+
| Real Mode IVT |
000000 +------------------------+