Lo primero aclarar que, cuando hablamos de memoria, o memoria principal, o memoria física estamos hablando de la memoria RAM del PC.
Asimismo, cuando hablamos de memoria secundaria, nos referimos al disco duro.
Hemos visto en la gestión de procesos que el recurso compartido es el procesador. Sin embargo, para que un proceso se pueda ejecutar no sólo requiere tiempo de procesamiento sino también estar cargado en memoria principal. Ningún proceso se puede ejecutar antes de que se le asigne el espacio de memoria que requiere. Así, la memoria se convierte en otro recurso clave que tendrá que gestionar el sistema operativo y la parte encargada de ello se denomina gestor de memoria.
Actualmente la mayoría de los sistemas operativos son sistemas multitarea, en los que va a haber varios procesos simultáneamente en ejecución. Por tanto, deberá haber mecanismos de gestión para distribuir la memoria principal entre todos estos procesos que quieren ejecutarse.

La forma de hacerlo ha cambiado desde los primeros Sistemas Operativos a los actuales, pues igual que en la gestión de procesos, han mejorado los algoritmos. Los primeros algoritmos, tienen una gestión fácil (primeros PC más lentos, necesitan operaciones sencillas) pero desperdician mucha memoria. Los algoritmos actuales, tienen una gestión más complicada (PC más potentes, que pueden realizar operaciones más complejas) a cambio de ser más eficientes (desperdician poca memoria).
Primer Sistema: Gestión de la memoria con particiones fijas
Consiste en dividir la memoria física disponible en varias particiones de tamaño fijo y asignar cada una de las partes a un proceso.
Ejemplo: Supongamos un equipo antiguo con MS-DOS y una memoria RAM de 4 Mb, los primeros 512 Kb estaban reservados para los programas de MS-Dos. Los 3,5 MB restantes, es donde se cargaban los programas de usuario (procesador de texto, hoja de cálculo,...), se dividen en 3 particiones de distinto tamaño, por ejemplo, 512 KB, 1 MB y 2 MB. Cada tarea o proceso se asigna a una partición. En cada partición, solo puede haber 1 proceso.
En este sistema, se desaprovecha espacio dentro de cada partición. Se produce fragmentación interna (se desperdicia espacio en la memoria, que no puede utilizar otro proceso. Ese espacio desaprovechado está dentro de cada partición).

Segundo sistema: Gestión de la memoria con particiones variables
No había particiones, a cada proceso se le asigna el tamaño que hace falta. Cuando termina el proceso se libera ese trozo, y se junta con el espacio libre que haya al lado.
Cada proceso nuevo, se carga donde haya espacio, y lo que no se utilice queda libre para otro proceso.

En este sistema, no se pierde espacio dentro de las particiones, pero si pueden desperdiciarse huecos libres que van quedando, pero que no se pueden aprovechar porque son pequeños. Se produce fragmentación externa (se desperdicia espacio en la memoria, pero de forma general, no dentro de una partición)
En la figura, podría estar esperando un proceso 5, porque es más grande que los huecos libres, aunque sí que podría coger si estuvieran esos huecos juntos.
Por estos motivos, aunque particiones variables mejora el sistema con respecto a las particiones fijas, sigue sin ser un esquema idóneo; por lo que en los sistemas operativos actuales se utiliza la paginación que vemos a continuación.
Tercer sistema: Paginación
La memoria se divide en páginas de igual tamaño. Los procesos utilizan las páginas necesarias, no siendo obligatorio que sean contiguas (continuas).
Ejemplo, el tamaño de las páginas suele ser 4KB, si el proceso necesita 31 KB, utilizará 8 páginas libres, independientemente si están juntas o no.
El esquema, es más difícil de gestionar, se necesitan computadoras más potentes; pero, se aprovecha muy bien la memoria. La fragmentación es casi cero. Casi no hay fragmentación (no se desperdicia casi espacio en la memoria)
Por este motivo, la paginación es la técnica que se utiliza en la actualidad.
Problema de la paginación: Poco a poco, las páginas libres quedan muy desorganizadas. El Sistema Operativo puede perder tiempo en asignar muchas páginas no contiguas (no continuas) a los procesos.
Para resolver este problema, el Sistema Operativo cada poco tiempo, realiza una compactación. El proceso consiste en organizar todas las páginas, de forma que tanto las páginas libres como las de los procesos estén juntas.