Memory management,In a uni-programming system, main memory is divided into two parts: one part for the operating system (resident monitor, kernel) and one part for the user program currently being executed.
In a multiprogramming system, the “user” part of memory must be further subdivided to accommodate multiple processes. The task of subdivision is carried out dynamically by the operating system and is known as memory management.
Binding of Instructions and Data to Memory
Address binding of instructions and data to memory addresses can happen at three different stages.
- Compile time: The compile time is the time taken to compile the program or source code. During compilation, if the memory location known a priori, then it generates absolute codes.
- Load time: It is the time taken to link all related program file and load into the main memory. It must generate relocatable code if the memory location is not known at compile time.
- Execution time: It is the time taken to execute the program in main memory by the processor. Binding delayed until runtime if the process can be moved during its execution from one memory segment to another. Need hardware support for address maps (e.g., base and limit registers).