0

At work, I have the option to have the 64-bit version of Windows 7 with 16GB installed. The best benefit I can think of is that Windows 7 64-bit can utilize memory beyond 4GB. One of my colleagues said even if I install Windows 7 64-bit, the 32-bit apps will not be able to address all the memory. That confused me and wasn't sure it that means that only 64-bit apps can run in the memory space between 4GB to 16GB. If I run 10 32-bit apps using 1GB each, I should be able to do this without paging right?

4
  • Your colleague is correct a 32-bit applocation cannot use more then 4GB of memory. You can use 16GB of memory any way you want.
    – Ramhound
    Apr 3, 2015 at 23:33
  • How exactly? It's an answer to your question. A 64-bit application could use 1GB or 16GB
    – Ramhound
    Apr 4, 2015 at 0:21
  • Okay, that is more clear. Combining your two comments makes more sense to me.
    – Sun
    Apr 4, 2015 at 0:23
  • Why the down votes? This is a good question.
    – psusi
    Apr 4, 2015 at 1:09

1 Answer 1

0

Every program runs in its' own virtual memory space. These are allocated in 1MB chunks as the program requests memory from the OS. The programs see this memory as one large, contiguous block of memory (the so-called "flat memory model."). This was different than the older 16-bit model "segmented memory" model, where two registers would combine into a single 20- or 32-bit memory address, depending on the memory controller's current operating mode.

Each 32-bit program will be limited to 2GB of total usable memory; the memory area starting at 0x20000000 is used for DLLs in 32-bit applications. It is true that a single individual 32-bit app will not be able to access all 16GB of memory, because it's not all addressable. However, each program starts near the bottom of its virtual memory block (close to 0x00000000), and those are offset by the virtual memory manager to the actual physical location in RAM, so in that sense, the 32-bit program can reside anywhere in physical memory. Conceptually, this means that you could fill all 16GB of RAM with nothing but 32-bit programs.

Both 32- and 64-bit apps can run side by side, and be located anywhere in RAM. Note that paging happens before memory is exhausted, so it is still unlikely you could run 16 1GB RAM apps without paging happening. The system tries to keep some physical memory free, and also uses that as a cache for disk reads and writes.

Note that even 32-bit OSs can access more than 4GB of memory, although each individual app is still limited to 4GB. This is because of a relatively old technology known as PAE (Physical Address Extension). 32-bit Windows doesn't let you access memory above 2GB/4GB as a matter of licensing, but 32-bit versions of Linux would happily run on a 16GB system with full access to the memory installed. Some 32-bit versions of Windows Server could also access more than 4GB of memory: "Windows Server 2008 Datacenter" could use up to 64GB of RAM on a 32-bit processor.

11
  • You state a 32-bit application can only access 2GB except that isn't the case. What does Linux have to do with the authors question?
    – Ramhound
    Apr 4, 2015 at 0:12
  • @Ramhound what is true then?
    – Sun
    Apr 4, 2015 at 0:14
  • A 32 bit app, in Windows, only has 2GB available to it, because the other 2GB it could access is reserved for the OS. Linux was only mentioned to make a point about memory limitations on 32 bit OSes.
    – phyrfox
    Apr 4, 2015 at 0:19
  • 1
    Well on a 64-bit operating a 32-bit process can use up to 4GB not 2GB
    – Ramhound
    Apr 4, 2015 at 0:19
  • Question has nothing to do about 32-bit operating systems
    – Ramhound
    Apr 4, 2015 at 0:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .