Why is execution-time address binding preferred over compile-time or load-time binding in modern operating systems?
Think about your answer, then reveal below.
Model answer: Execution-time binding allows the OS to move a process to a different physical memory location at any time, because the MMU translates addresses on every access. Compile-time and load-time binding fix physical addresses early, preventing relocation and making multiprogramming and memory isolation much harder.
If addresses are baked in at compile or load time, the OS cannot freely place or relocate processes — every program would need exclusive access to a fixed memory region. Execution-time binding via the MMU decouples logical layout (what the program sees) from physical layout (where RAM is actually used), enabling flexible multiprogramming and process protection.