Friday, August 29, 2014

64 bit - Memory limits in 16, 32 and 64 bit systems


The theoretical memory limits in 16, 32 and 64 bit machines are as follows:



  • 16 bit = 65,536 bytes (64 Kilobytes)


  • 32 bit = 4,294,967,296 bytes (4 Gigabytes)


  • 64 bit = 18,446,744,073,709,551,616 (16 Exabytes)



I remember from DOS / Windows 3.11 days, that 16 bit memory could be separated into segments, so that a 16 bit machine could access a greater amount of memory than 64 Kilobytes.


I have a machine with 16GB of memory, and am dual booting a 32bit operating system and a 64bit operating system. I can access all 16GB from 64bit, but only 3.21GB in 32bit.


So, my question is, if 16bit operating systems allowed greater that 64KB memory access due to memory segmenting, why do 32bit machines not follow the same pricipal?


Answer



They do, the system is called Physical Address Extension (PAE). Here is a list of windows OS'es and their max memory, any 32 bit system that allows for more than 4GB of RAM is using PAE to access the memory (For example Windows 2003 R2 Datacenter 32 bit allows for 128GB of ram).




In fact Windows 8 requires a PAE capable CPU in it's minimum requirements.




To address your "unasked" question on why your 32 bit OS can't access the ram if it exists: Licensing. They choose not to allow RAM to be above 4GB for their 32 bit OSes unless you pay for a data-center edition (that is why they sell a data-center edition, if you need that much ram, you likely can afford to spend more money on a OS).


No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...