32bit Linux vs 64 bit Linux

Friends ,

Would u plz tell me what is the difference between 32-bit Linux o/s and the 64 bit Linux o/s .
Is there any RAM limitation in this two types of o/s .

Waiting for kind reply ... ...

Any 32 bit OS will only see / use 3.5GB of RAM.

Remember that in the absence of the 64 bit support, the OS memory manager is limited to a 4GB physical address space. Most of that address space is filled with RAM, but not all of it. Memory-mapped devices (such as your video card) will use some of that physical address space, as will the BIOS ROMs. After all the non-memory devices have had their say, there will be less than 4GB of address space available for RAM below the 4GB physical address boundary.

the motherboard assigned the ROMs and the hardware devices to the physical address space between 3.5GB and 4GB (occupying about 0.5GB of address space). When you start plugging in your memory chips, then, they are assigned physical addresses starting at the bottom, and then skip over the address space that has already been assigned to the hardware and ROM, then resume.

On this imaginary system, then, the 0.5GB of address space used for hardware and ROMs causes that much memory to get shoved upwards, and it ends up above the 4GB boundary. Without 64 bit support, the processor is capable only of addressing memory below the 4GB boundary, which means that the memory above that boundary is inaccessible. It's consuming electricity but isn't doing anything.

The solution is to go to 64-bit OS so that the processor can access the physical address space above the 4GB boundary.

So why don't we just map the ROMs and the hardware devices to space above 4GB??
then the CPU can't access the IO devices so you have system with 4GB of RAM and no video card......

any questions??

Thx robsonde for ur reply ..

I want to know another thing ..

How can I check my operating system bit , i.e., Which o/s I use , 32-bit or 64-bit ?

I am using now RHEL 5 . I get some command from google where I can get the bit . plz see the below command :

[root@localhost ~]# getconf -a | grep FILESIZEBITS
FILESIZEBITS 64

Here I get the result of 64 bit .

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

And here I got it is 32 bit (because from linux document I know that i686,i386 all are for 32 bit o/s)

Using the above commands , I get confused . My o/s is 32 bit or 64 bit ?
Would you plz help me , How can I find the o/s bit size ?

looks to me that you have a 32 bit OS.

if you had a 64bit OS I would expect to see x86-64 in the output of uname.

The command 'arch' will help too. On Intel/AMD architecture, you'll get i386 for 32bit and x86_64 for 64bit processors.

uname -m will also tell you the architecture.

Thx
blowtorch
Supporter

When I give the command 'arch' then I got the following output :

[root@localhost ~]# uname -m
i686
[root@localhost ~]#

What is the meaning of this . You tell me about i386 but dont tell about i686 .

Plz inform .. ..

i686 is an enhanced version of i386. It needs a "new" processor.

i386 based code works on newer processor architectures.