Swapping:  Bring in each process in its entirety, and run it for a whole, then put it back to disk. How to decide a job in memory or disk?
How to decide which one to swap in? Allocate blocks to processes:  (Goal: Reduce fragmentation) After swapping, holes in memory will turn to be small. (Fragmentation)  If push all down, there will have space for another process but it takes CPU time.

Memory Compaction:
        Move all program to low memory resulting in one large empty block in high memory.  (It is too much overhead involved.)