To avoid the main drawbacks, which are define as "memory consuming", and "limitation of processes can be run at a time even though have relevant memory" in MFT(Multiprogramming with Fixed number of Tasks), MVT (Multiprogramming with Variable number of Tasks) mechanism was introduced stage.
in here we are mainly focusing on external fragmentation rather than internal fragmentation.
consider about the above job allocation table following diagram show the steps of MVT
Here compaction can be consider as some kind of a Defragmentation process which happens automatically in main memory.Compaction is high cost event because CPU needs to stop all the other works in order to do the compaction.
some body can mislead MVT is not using the internal fragmentation. it is using internal fragmentation in very special occasions.
For example, think that we have 50 byte fragment after compaction. if we use it as external fragment we cannot use it for any process. On the other hand for keep track about the free segments we need to use entries. in this kind of a situation that can be needed space more than the free space on the external fragment there for we are using internal fragmentation. but ideally we consider MVT only use external fragments.
(ref: video lecture of prof: P.K Bisvas)