DDQOTD (Dumb Distro Question of the Day) Does Fedora 10 install as a 64 bit OS when it senses 64 bit hardware?
Ben Scott
dragonhawk at gmail.com
Thu Apr 23 19:54:44 EDT 2009
On Thu, Apr 23, 2009 at 6:22 PM, Alex Hewitt <hewitt_tech at comcast.net> wrote:
> "Linux hostname.localdomain 2.6.27.5.117.fc10.i686.PAE #1 SMP Tue Nov 18
> 12:08:10 EST 2008 i686 athlon i386 GNU/Linux"
The "i386" indicates the running kernel is for the i386
architecture. In other words, 32-bit. A kernel for x86-64 will
identify the architecture as "amd64" or "x86-64" or something like
that. (In an interesting historical twist, AMD invented "Long Mode"
and Intel copied AMD.)
> When I issue the free command I see all 8 gb of RAM. Does that mean that
> the distro installed itself as a 64 bit version?
Nope. As Ted says, PAE means the processor can see more than 4 GiB
of RAM, even when in 32-bit protected mode. Most processors made
since 1997 or so support PAE. Many (but not all) motherboards do as
well.
With PAE supported and enabled:
* The physical address bus has 36 lines. These are the actual pins
coming out of the processor.
* The physical address word is 36 bits wide.
* The page table structures change to support the larger physical address word.
* A third level of page table indirection is added to support the
larger page tables.
* The processor can address up to 64 GiB of RAM or other hardware.
* The virtual address word (point size) is still 32-bit.
* Each process is still limited to a 4 GiB virtual address space.
* Each process is still limited to a 3 GiB user virtual address space
(kernel reserves 1 GiB).
The common scenario where PAE is of benefit is a multiple-process
workload, where no single process needs more than 3 GiB of memory, but
the aggregate memory use of all processes is greater than 4 GiB. The
kernel and MMU can map different RAM pages into each process's virtual
address space.
It is possible for an OS to support bank switching, to enable a
single process to make use of more than 4 GiB of RAM. At the
process's request, the kernel can change the memory mapping for the
process. For example, say the process writes 1 GiB of data into
memory, and then tells the kernel to switch that with a new 1 GiB
block. The kernel unmaps that 1 GiB of RAM, but leaves it allocated.
The drawback is the application has to do its own memory management.
I don't know if Linux implements this. Microsoft does for Windows,
but they kind of had to, because they were so late to the 64-bit
party.
-- Ben
More information about the gnhlug-discuss
mailing list