A virtual address space can be contiguous, in which case
every address maps to a location of an underlying physical
memory, or noncontiguous, in which case the address space
contains one or more holes. If a processor attempts to read or
write any address that does not correspond to physical memory,
an error results.