Most OSes use virtual memory. Mapping of virtual address space to a physical address space. This is useful because, with a virtual address space, you can have a contingious block of memory. Its a lot easier to find offsets in a disk file in the memory because of virtual address spaces.

Virtual addressing is critical for datatypes like arrays, because arrays heavily require offset addresses to even parse through them.

A few more boons are as follows:

  • Memory isolation(for security)

  • More memory than physically able(paging)

  • Applications do not have to manage shared memory space

This technique is commonly paired with Relative Virtual Addressing

Example Mapping

It is essentially a 1-1 mapping, but addressess will not be linearly mapped and not the same size exactly.