stan wrote:
Alan Cox wrote:
> On Mon, 27 Oct 2008 11:54:47 -0400
> Matthew Flaschen <matthew.flaschen(a)gatech.edu> wrote:
>
>> Alan Cox wrote:
>>
>>> The moment you have more than about 900MB of RAM there are big
>>> advantages
>>> to running a 64bit kernel as it can keep all of physical and virtual
>>> space mapped at the same time, which is a big performance win.
>>>
>>> Alan
Wouldn't you need twice as much memory to have the same memory for
applications if you are using double the word size?
This is incorrect in general. GNU/Linux 32-bit uses ILP32, meaning
integers, longs, and pointers all have 32 bits. GNU/Linux 64 uses LP64,
which means longs and pointers have 64 bits. Integers remain 32 bits,
and ASCII chars are still 8 bits (this is true of ILP64, another model,
as well). Please read
http://www.unix.org/whitepapers/64bit.html.
Or does the OS somehow take that into account and split the 64 bit
words
into their components to get most efficient use out of them?
There is no need to "split" anything. The base unit is still the byte.
All 64-bit systems have 64 bit pointers, but there are no hard rules
for the other types.
To clarify, I have 2 GBytes of memory in a 32 bit OS. If I use a 64
bit
OS, isn't that memory now effectively halved?
No.
The same as if I use 16 bits to store a character instead of 8 bits.
It is my understanding
that UTF-8 only uses the second 8 bits if it needs it.
There is no "second" 8 bits. UTF-8 can use up to 4 bytes, but ASCII
will use only 1 for any (sane) 64-bit implementation of UTF-8.
Matt Flaschen