Another way of solving the problem of running a process that is too big for available memory is the memory management scheme known as virtual memory. Virtual memory is characterized by having
that is, a process may potentially address more logical memory than there is actual physical memory to support it. This means that, in general, only a portion of a given process will be resident in physical memory at any one time. The part which is not memory resident will be kept in secondary storage, ready to be brought in when needed. Virtual memory is an alternate way of solving the problem addressed by overlaying - but with several major advantages over the former approach.