At first glance, the sheer overhead introduced due to virtual memory and the associated address-translation would seem to warrant not using it. Yes, the overhead is high, but the reality is given as follows:
- Modern hardware-acceleration (via TLBs/CPU caches/prefetching) mitigates this overhead and provides decent enough performance
- The benefits one derives from VM outweigh the performance issues
On a VM-based system, we get the following benefits:
- Process-isolation
- The programmer need not worry about physical memory
- Memory-region protection
It's important to understand these a bit better.