Table of Contents
Initial memory map
The standard PC has the following memory map:
Addresses | Name | Description |
---|---|---|
0x000000-0x09FFFF | Conventional memory | RAM, which can be used by user |
0x0A0000-0x0BFFFF | Video memory | RAM, used by video adapter |
0x0C0000-0x0CFFFF | Adapter's ROM | ROM, used by different adapters |
0x0D0000-0x0DFFFF | Page Frame | RAM used to map Expanded memory |
0x0E0000-0x0FFFFF | BIOS | PC BIOS ROM |
Conventional memory mapped as:
Addresses | Name | Description |
---|---|---|
0x000000-0x0003FF | Interrupt Vectors | This memory used to control Inerrupts |
0x000400-0x0004FF | BIOS Data Area | Used by ROM BIOS |
After BIOS POST
Addresses | Name | Description |
---|---|---|
0x000000-0x0003FF | Interrupt Vectors | This memory used to control Inerrupts |
0x000400-0x0004FF | BIOS Data Area | Used by ROM BIOS |
0x000500-0x007BFF | Free | Free, unused memory |
0x007C00-0x007DFF | MBR | |
0x007E00-0x09FFFF | Free Conventional memory | RAM, which can be used by user |
0x0A0000-0x0BFFFF | Video memory | RAM, used by video adapter |
0x0C0000-0x0CFFFF | Adapter's ROM | ROM, used by different adapters |
0x0D0000-0x0DFFFF | Page Frame | RAM used to map Expanded memory |
0x0E0000-0x0FFFFF | BIOS | PC BIOS ROM |
After MBR
This information correct for our MBR
Addresses | Name | Description |
---|---|---|
0x000000-0x0003FF | Interrupt Vectors | This memory used to control Inerrupts |
0x000400-0x0004FF | BIOS Data Area | Used by ROM BIOS |
0x000500-0x0005FF | Free | Free, unused memory |
0x000600-0x0007FF | MBR | Master Boot Record |
0x000800-0x007BFF | Free | Free, unused memory |
0x007C00-0x007DFF | Boot record | Boot Record loaded from boot sector of active partition |
0x007E00-0x007FFF | MBR Work area | This area was used as MBR work area |
0x008000-0x09FFFF | Free Conventional memory | RAM, which can be used by user |
0x0A0000-0x0BFFFF | Video memory | RAM, used by video adapter |
0x0C0000-0x0CFFFF | Adapter's ROM | ROM, used by different adapters |
0x0D0000-0x0DFFFF | Page Frame | RAM used to map Expanded memory |
0x0E0000-0x0FFFFF | BIOS | PC BIOS ROM |
After boot record
This information correct for our bootsector
Addresses | Name | Description |
---|---|---|
0x000000-0x0003FF | Interrupt Vectors | This memory used to control Inerrupts |
0x000400-0x0004FF | BIOS Data Area | Used by ROM BIOS |
0x000500-0x0005FF | Free | Free, unused memory |
0x000600-0x0007FF | MBR | Master Boot Record |
0x000800-0x007BFF | Free | Free, unused memory |
0x007C00-0x007DFF | Boot record | Boot Record loaded from boot sector of active partition |
0x007E00-0x007FFF | Boot record Work area | This area was used as Boot Record work area |
0x008000-(MuFSDStart-1) | Free | Free, unused memory |
MuFSDStart-MuFSDEnd | MicroFSD | MicroFSD/BlackBox code |
(MuFSDEnd+1)-0x09FFFF | Free Conventional memory | RAM, which can be used by user |
0x0A0000-0x0BFFFF | Video memory | RAM, used by video adapter |
0x0C0000-0x0CFFFF | Adapter ROMs | ROMs, used by different adapters |
0x0D0000-0x0DFFFF | Page Frame | RAM used to map Expanded memory |
0x0E0000-0x0FFFFF | BIOS | PC BIOS ROM |
MuFSDStart=0x008000 or 0x090000. Now we use 0x090000 as LILO does but have a plan to use 0x008000 for more compact memory reuse and less possibility of overlapping.
MuFSDEnd is (0x008000+MicroFSD_file_length-1)
After MicroFSD/BlackBox
Memory map after MicroFSD/BlackBox work known via MemoryMap structure.
After FreeLDR
Memory map after FreeLDR work known via Multiboot Information block.
After L4Ka::Kickstart
Memory map after L4Ka:Kickstart work known to microkernel via Kernel Interface Page. Other tasks has access to memory via sigma0 server. Strating from this point all memory operation controlled by L4 microkernel.
Discussion