Answer: B
Correct answer: addresses are bound at execution time
Compaction moves running processes to consolidate the free space, which means a process must be able to change its physical location while it is loaded. That is possible only where addresses are bound at execution time, through a relocation register or a page table that the operating system can simply update. Where binding happens at compile time or load time, a process’s addresses are fixed once and for all, and moving it would leave every reference pointing at the wrong place. The purpose of compaction is to cure external fragmentation, gathering scattered holes into one usable block. Its cost is heavy: every process must be copied, and the system can do nothing else meanwhile, so it is used sparingly. Under paging, compaction is unnecessary rather than required - the second option inverts the relation. Paging removes external fragmentation by definition, since any free frame serves for any page and physical contiguity is never needed. The technique survives in garbage-collected runtimes, which compact the heap for the same reason.