Thus far, we had assumed that an address space was unrealistically small and fits into the physical
Memory. In fact, we had been assuming that every address space of Ervery running process fits
into memory. We'll now relax these big assumptions, and assume so we wish to support many
Concurrently-running Large address space. To does so, we require a additional level in the memory
Hierarchy. Thus far, we have assumed this all page tables in physical memory. However, to-support
Large address space, the OS would need a place-to-stash away portions of address spaces that currently
is not in great demand. In general, the characteristics of such a location is that it should has more
capacity than memory; As a result, it is generally slower (if it were faster, we would just use it as
Memory, no?). In modern systems, this role was usually served by a hard disk dirve. Thus in our Memory
Hierarchy, big and slow hard drive sit at the bottom, with memory just above. And thus, we arrive
At the crux of the problem:how to go beyond physical memory? How can the OS make use of a larger,
Slower device to transparently provide the illusion of a large virtual address space? One question you
Might have:why do we want to support a single large address space for a process? Once again, the
Answer is covenience and ease of use. With a large address space, you don't have to worry about
If there is the enough in memory for your program ' s data structure; Rather, just write the program
Naturally, allocating memory as needed. It's a powerful illusion that the OS provides; and makes your
Life vastly simpler. You are welcome! A contrast is found in older systems, used memory overlays,
Which require programmers to manually move pieces of code or data in and out of memory as they
were needed. Try imagining what is this would like:before calling a function or accessing some data,
You need to first arrange for the code or data to is in memory. yuck!
Operating system:three Easy Pieces---Beyond physical memory:mechanisms (Note)