physical address

The physical address space can be populated by: 
• Normal memory 
• Memory-mapped I/O devices 
• Empty (i.e., unpopulated holes) 
I/O devices are commonly “memory mapped”, which means they sit on the same bus as normal memory. The device is assigned a specific physical address (or set of addresses). Software can send data to an I/O device by “writing” to a memory location populated by the device and can retrieve data from the device by “reading” from such an address. From the point of view of the executing software, the device looks a bit like any other memory location, but reading and writing to memory-mapped I/O locations is done, not to store data, but for the purpose of sending data to, receiving data from, and otherwise controlling an I/O device. 
To handled various scenarios, the physical address space will be partitioned into regions. The regions will be contiguous, one-after-the-other, non-overlapping and will cover the entire physical address space. Every byte in the physical address space will be in exactly one physical memory region.