visits
244
votes
316
votes++Vote positively this post :)
+1411
votes--Vote negatively this post :(
-1095
RAM memory: Why if I have 4GB or more the OS detect less?

The memory is accesed phisically trough the address bus and the data bus. A bus is nothing more than a serie of cupper wires in the mother board to send and receive information. The address bus serves to indicate the memory cell that we are going to read or write, and the data bus to carry the information of the selected cell to the procesor. The number of lines of the address bus determines the number of cells to that we can access. For instance, if we had 32 lines, each one represent a bit and, therefore, we can access to the directions that there are from the 0 in decimal to the 2^32-1, is that to say we have 2^32=4.294.967.296 memory addresses. As the minimum information unit addressable is the byte, then we can have a maximun of 4.294.967.296 bytes, is that to say 4 Gigabytes, while if we have 64 lines, we can address 2^64 = 18.446.744.073.709.551.616 bytes that are 16 Exabytes.
Then if we have a computer with 4 GB or more and a address bus of 64 bits, why the operating system of 32 bits can't access to all the memory? The operating system between its task, have to manage something vital to the program execution called virtual memory, that implies access to the RAM memory to copy pages of memory stored in the hard disk and vice versa. To achieve those memory access, the operating system of 32 bits uses instructions of machine code of 32 bits that only can use 32 of the 64 lines that have the address bus of the machine. Therefore only can address 4 Gigabytes. Then, why if we have the necessary number of cupper lines to read 4 GB of RAM, in a operating system of 32 bits, doesn't use the whole 4 GB? The problem is that there are addresses that are reserved to access to the video memory of the graphic card (is says that the video memory is mapped in RAM memory), others, are reserved to the in and out of data of the remainder of cards and devices, also that the operating system reserves also something of address space to its own use. For that, we need an operating system of 64 bits if we want to use, in case that we have 4 GB or more, all the available RAM in our computer.
By other side, there isn't any operating system really capable to address 16 Exabytes. The limit usually are very below than that, but sufficiently high to that, actually, it isn't economically and physically viable reach it.