When using a multiprogramming system the main memory is usually shared by a few different processes. Relocation is a complex step because in this type of system it is not possible to know which programs will be inside the main memory in advance. There is also the possibility that a programmer may want to swap active processes in and out of main memory so that it is more likely to have a larger number of ready processes to execute. Relocation comes in when a program is swapped out to disc, it is difficult to swap it back in to the exact same memory region as before so in these cases it may need to be “relocated”. One of the main problems with all of this is the fact that it is hard to detect ahead of time where a program will be placed.
In a multiprogramming system with effective memory management it is very vital that protection is present. Each process should be protected from unwanted interference by other processes. The greatest issue with protection is because of the fact that the locations of the programs in the main memory are always unpredictable. Having a great relocation system in place can in retrospect make it more difficult for the protection process to do the job.
SHARING Anytime a system has a good relocation system will also have a great sharing function. Sharing allows the processor or several