Virtual Memory
Virtual memory solves several critical problems:
Simplifying RAM memory management by separating the address of memory from its physical location
Providing protection for users by giving them their own address spaces
Simplifying compilation and usage of libraries by allowing all programs to begin addressing memory from zero