A page is the unit of data processed by paging.
In a virtual memory process, with an MMU, memory addresses go through a translation step prior to each memory access.
This means that memory address 123 might be directed to physical address 82043 at one time, and physical address 20468 another time. As it turns out, the overhead of individually tracking the virtual to physical translations for billions of bytes of memory would be too great.
Instead, the MMU divides RAM into page (known also as memory page or virtual page) which are contiguous sections of memory of a set size that are handled by the MMU as single entities.
Each pages (chunk) can have different states such as:
- “in memory”,
- or “on disk”.
In Linux, those chunks are typically 4Kb.
Shared page are shared between process. How many processes share is not known. See Virtual Memory - Shared Memory (SHM)
A memory page can be both in memory and on disk, and if you sum up everything in memory and everything on disk you will count the page twice.
Shared pages are even more complicated, as only the fact that they are shared is known. How many processes share is not known. If you sum up all the processes memory that is “in RAM” you will count the shared pages multiple times.
see page in
see Page Out
Documentation / Reference
- Chapter 3, “Protected-Mode Memory Management,” in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A.