A simple question: can x86 applications use the additional RAM provided by the x64 operating system?

I hope someone with a little knowledge can clarify this. There is a lot of discussion about the reasons for launching a 64-bit OS (for example, Windows 7 x64), but many people seem to think that their old x86 applications will be able to use any RAM over 3.5 GB.

As I understand it, x86 applications cannot address memory that is high ... unless they have been specially programmed (which very few will have).

Can someone who knows understand this for me, once and for all? Can 32-bit applications use a system with 8 GB of RAM?

eg. If the user decided (for any reason) to run several x86 applications at once, filling RAM as much as possible, will the additional address memory be used in Windows 7 x64 ?

Thanks!

+4
source share
5 answers

On a 64-bit system, 32-bit applications can use a full 4 GB virtual address space, minus about 64 KB. The standard 32-bit Windows system will only allow a 32-bit process to use 2 GB of virtual address space. Specially setting up the OS, you can click this limit up to 3 GB, but it is still not as good as what you would get in a 64-bit version of windows.

If you have 8 GB of RAM, then 8 GB can be divided between several 32-bit processes, and if necessary, the entire 8 GB will be used. However, no 32-bit process will be allocated more than 4 GB of memory.

+4
source

Although I donโ€™t have any sources for citing, as far as I know, a 32-bit application will not be able to address more than 4 GB of memory itself, unless it uses some tricks (which is very unlikely), but if you have 32-bit applications, working simultaneously, all of them can have 4 GB each, and therefore two 32-bit applications should be able to use all 8 GB of memory. Although I'm not 100% sure.

+3
source

Yes. X86 applications cannot use more than 2 GB of memory right away without special tricks, but they can use any available memory.

+2
source

Adding to other (correct) answers:

  • Instead of the term โ€œapplicationโ€, the word โ€œprocessโ€ should be used. Applications often consist of several processes, while the limitations described here apply to individual processes.
  • Thus, applications benefit from x64, which are either associated with the LARGEADESSESSWARE flag (they can use 4 GB instead of 2 GB), or they share the load between several processes.
  • 32-bit processes can work with more than 4 GB of RAM, even on 32-bit systems using AWE. But a 32-bit process can only use 2 GB at a time (4 GB with 64-bit LARGEADDRESSAWARE, respectively). AWE is mainly used by databases, where for performance it is important that the entire database fits into RAM. It works by providing a 2 GB window to most of the memory.

Here are some articles for further reading:

Windows x64 - all the same, but very different, part 1: virtual memory

Windows x64 - all the same, but very different, part 2: kernel memory, / 3GB, PTE, (Non-) Paged Pool

x64? My terminal servers just work with 32 bits and 8/12/16 GB of RAM!

+2
source

eg. If the user decides (for whatever reason) to run several x86 applications at a time, filling up the RAM in the same way as possible, will the additional address memory available in Windows 7 x64 be used?

The answer is yes. This is one of the advantages of a virtual address space that gives us the ability of each process (to process), as if it was running in a linear address space that starts at 0 and goes from there.

As for each of the 32-bit applications, it has its own address space from 0 to 2 gigabytes (without special tricks). The operating system handles the virtual physical address translation.

+1
source

Source: https://habr.com/ru/post/1339825/


All Articles