Therefore, to support multiple page sizes, there is now a need for managing physical memory. For example, the VM system will need to structure its “free” and “clean” page lists into several lists of the supported page sizes (e.g., SK, 64K, and 512K bytes). A physical memory allocator (e.g., one based on the buddy system) is needed to maintain these lists. When a particular mapping to a large page is requested (e.g., as a hint from the user or from the higher level of the VM), a clean page of the required size must be located. If a page of the appropriate size is not found, the system may opt for using
maller mappings, or may attempt somehow to coalesce smaller pages into a big page