Applications allocate memory in terms of the number of bytes that they need, but this level of granularity is too ?ne-grained for the operating system to manage the system memory in this way. Instead, the OS manages the memory in groups of bytes called pages. Pages are typically of 4kb or 8kb. Suppose we decide to use 4kb pages; in a 32-bit machine, it is possible to address at most 232 different addresses; if we divide that maximum amount of memory by the size of the page, we see that there can be at most 232 / 212 = 220 4kb pages.