The MMU basically allows the OS to define how to map the memory addresses in the registers to memory locations on the memory bus. All the other features described above are gained by using this simple feature.
Specifically, the memory space is divided into 'pages' of some size (sometimes configurable by the OS). A common page size is 4-16KB. When memory is accessed, the MMU takes the memory address, strips off the bits corresponding to the page size, and the remainder is the virtual page number. The MMU then looks in the page table assigned by the OS to see where this virtual page number maps to in terms of physical page numbers. This value is sent, along with the offset that was stripped off earlier, down the memory address lines of the CPU. The page table entry also has info such as whether reading or writing or both is allowed on that page.
In order to protect one process's memory from another's, OSes will use separate page tables for each process, with none of them sharing any pages.