Re: The Linear Address Space
From: Herman Dullink (hd5_at_hetnet.nl)
Date: Sat, 1 May 2004 18:37:17 +0000 (UTC)
> > There is a Physical Address Space of 4GBytes (2^32 bytes) which
> > identifies all of the binary numbers that can be used as addresses for
> > assembly language programming.
> That's virtual address space. Physical is the amount your DRAM sticks add
The Address _space_ is not the same as memory.
On x86 platforms, three types of address spaces are defined.
The physical address space is the address space on the physical interfaces
The linear address space is the address space before page mapping
The logical (or virtual) address space is the address space for the
Logical/virtual addresses are translated by the segmentation unit to linear
When a linear (flat) memory model is used, the translation is 1:1.
When paging is enabled, the linear addresses are mapped to phyisical
otherwise, the translation is 1:1 (again).
Because of translations, all (types of) address spaces can be different in
Same for different implementations of the same type of address space.
E.g. on my i486 system, my total logical address space is 64TB (= #segments
#size of logical segment)
My linear address space is 4GB.
The physical address of the CPU and local bus is 4GB, so is the address
of the PCI bus.
The ISA bus however (compatible with the 80286), uses only 24 address lines
and thus has a 16MB address space.
A also have a i386sx, which has a 24-bit address bus. Even though it has a
linear address space, it only has a 16MB physical address space.
Looking at AMD's x86-64, even though it has a 64-bit address registers, AMD
has limit the linear/virtual address space to 2^48, and the phyisical
space to 2^40 for now.