Pixelaula.
Memoria · Lección 3 de 5

Bloques a la medida, huecos sueltos

Dar a cada parte del programa justo lo que pide evita el desperdicio interno, pero deja huecos. Al terminar sabrás por qué y cómo se arreglan.

⏱ 25–35 min▶ Video de 90 s🧪 Laboratorio con 4 misiones
00 · En 90 segundos

Primero, la idea completa

Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.

    01 · Bloques con sentido

    Qué es la segmentación

    La paginación cumple la relocalización, la protección y la compartición, pero tiene fragmentación interna. Además, quien programa no piensa la memoria en páginas, sino en bloques con significado: el código, los datos, la pila…

    La segmentación funciona igual que la paginación, con una diferencia importante: el tamaño. Cada segmento es un bloque de tamaño variable, justo del tamaño pedido. Así desaparece la fragmentación interna.

    02 · Segmento y desplazamiento

    Cómo se traduce

    • La dirección lógica tiene número de segmento y desplazamiento.
    • La tabla de segmentos guarda, para cada segmento, su base y su tamaño.
    • El registro apuntador a la tabla de segmentos indica la tabla del proceso en ejecución.

    Al acceder, la MMU busca el segmento en la tabla, verifica que el desplazamiento no supere el tamaño del segmento y, si todo está bien, suma el desplazamiento a la base.

    Escena 1

    El primer dígito hexadecimal es el segmento y los tres siguientes, el desplazamiento. Prueba estas cinco direcciones.

    03 · Huecos que no sirven

    Fragmentación externa

    La segmentación elimina la fragmentación interna, pero trae la fragmentación externa: con el ir y venir de pedidos y liberaciones, quedan pequeños huecos libres repartidos entre los bloques ocupados. Aunque la suma de los huecos sea grande, el sistema no puede atender un pedido de ese tamaño, ni siquiera uno menor, porque no hay un hueco seguido que alcance.

    La solución es la compactación: mover todos los bloques ocupados hacia un extremo y dejar un solo hueco libre en el otro. Funciona, pero mientras se hace, los procesos del usuario y del sistema deben detenerse, y eso afecta directamente el rendimiento.

    Escena 2

    Tres procesos de 14, 18 y 18 MB, y tres huecos de 6, 6 y 4 MB: 16 MB libres en total. Llega un pedido de 7 MB.

    04 · Lo mejor de los dos

    Sistemas híbridos y paginación multinivel

    Los segmentos de tamaño variable complican además el manejo de la memoria virtual. Por eso surgieron los sistemas híbridos: un primer nivel de segmentos y un segundo nivel de páginas. Quien programa pide segmentos y, sin notarlo, cada segmento se divide en páginas. La dirección lógica tiene tres partes: segmento, página y desplazamiento. La tabla de segmentos ya no guarda la base del segmento, sino la dirección de su tabla de páginas. Puede haber fragmentación interna, pero solo en la última página de cada segmento.

    La misma idea se extiende a la paginación multinivel: una jerarquía de tablas de páginas y, al final, el desplazamiento. Es más eficiente cuando un proceso usa solo una parte de su rango de direcciones, porque las tablas de los niveles inferiores se crean solo cuando hacen falta.

    Escena 3

    Sigue una dirección lógica por cada esquema.

    05 · Predice

    Antes de leer la respuesta

    En la consola
    En la segmentación, pide recibe el tamaño en hexadecimal: pide 3000 pide un segmento de 0x3000 bytes. compacta junta todos los bloques al inicio.
    Laboratorio

    Tu turno: segmentos y huecos

    El proceso X tiene cinco segmentos y el proceso Y otros cinco, repartidos por la memoria de 64 KB. Traduce direcciones de X, provoca un error de tamaño y trata de conseguir un segmento grande para X.

    Repaso

    Comprueba lo que entendiste

    Cada respuesta incorrecta explica por qué parece correcta y en qué falla.