In questo caso il meccanismo di memoria virtuale è in parte software: i programmi che girano su sistemi con memoria segmentata sono strutturati in segmenti funzionalmente omogenei: la MMU tiene traccia di quali e quanti segmenti sono presenti in memoria e dove. Il vantaggio principale di questo sistema è che sfrutta al massimo il principio di località, riducendo al minimo il ricorso allo spazio di swap: una volta che un programma ha in memoria centrale i segmenti di cui necessita, solo raramente ne chiederà di nuovi.
Il grosso svantaggio di questo sistema, invece, è il grande spreco di memoria dovuto alla frammentazione esterna: con l'andare del tempo e il susseguirsi dei processi in esecuzione, la memoria viene allocata e deallocata in blocchi di varie dimensioni che lasciano un sempre maggior numero di "buchi" vuoti, troppo piccoli per poter essere utilmente allocati: questo rende necessario eseguire una dispendiosa compattazione periodica della memoria fisica allocata e/o l'uso di algoritmi di allocazione molto sofisticati.