No process should need to be aware of the fact that memory is shared. Processes mustn't be able to corrupt each other. After all, the purpose of sharing is to increase overall efficiency. Because several processes share memory, we can't predict in advance where a process will be loaded in memory. This is similar to a compiler's inability to predict where a subroutine will be after linking.
Relocation adjusts a program to run in a different area of memory.
Linker is an example of static relocation used to combine modules into programs. We now look at relocation techniques that allow several programs to share one main memory. Many of today's personal computers also operate in a similar fashion. The chunks are likely to be 1k-4k bytes. Keep an extra hardware register to identify the current process.