In previous posts, we've discussed the Basics of Memory Management, Pool Resources and of course the /3GB Switch. Today we're going to take a look at the Virtual Address Space Layouts on a 32-bit system. We'll cover the 64-bit system specifics in a later post. First, let's cover some basic concepts dealing with the Virtual Address Space in Windows.
There are three main types of data that are mapped into the virtual address space in Windows:
- per-process private code and data
- sessionwide code and data
- systemwide code and data
As we discussed previously, each process has its own private address space that cannot be accessed by other processes unless they have permission to open the process for read or write access. Threads within the process cannot access virtual addresses outside the private address space unless they map to shared memory sections or use cross-process memory functions.