Pixelaula.
Memoria · Lección 2 de 5

La memoria en páginas iguales

Partir la memoria en trozos iguales permite poner cada uno donde haya lugar. Al terminar sabrás traducir una dirección paginada a mano.

⏱ 30–40 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 · Trozos iguales

    Qué es la paginación

    La paginación es el mecanismo con el que los sistemas actuales cumplen la relocalización, la protección y la compartición. Divide la memoria en partes iguales: las páginas del proceso se colocan en marcos de página de la memoria física. La página es la unidad mínima de asignación: si un proceso pide memoria, recibe tantas páginas como hagan falta.

    Como lo pedido rara vez es un múltiplo exacto del tamaño de página, la última suele quedar a medias. Con páginas de 10 KB, un proceso que pide 45 KB recibe 5 páginas (50 KB) y desperdicia 5 KB que nadie más puede usar. Eso es fragmentación interna: memoria desperdiciada dentro de un bloque entregado.

    02 · Página y desplazamiento

    Cómo se traduce una dirección

    El mecanismo tiene tres piezas:

    • La dirección lógica, dividida en número de página y desplazamiento dentro de la página.
    • La tabla de páginas del proceso: para cada página, el marco donde está (su dirección base), el proceso dueño y los permisos.
    • El registro apuntador a la tabla de páginas, que indica la tabla del proceso en ejecución. Se restaura en cada cambio de contexto, junto con los demás registros.

    Al acceder, la MMU toma el número de página, lo busca en la tabla y, si existe, suma el desplazamiento a la base del marco. Si la página no está en la tabla, el acceso se detiene.

    Escena 1

    Páginas de 0x100 bytes: los dos primeros dígitos hexadecimales son la página y los dos últimos, el desplazamiento. Prueba estas cinco direcciones del proceso X.

    03 · Ni muy grande ni muy chica

    El tamaño de página

    El tamaño de página se configura en la MMU al iniciar el sistema, y hay que elegirlo con cuidado:

    • Con páginas grandes, la fragmentación interna crece y se desperdicia más memoria.
    • Con páginas pequeñas, hay muchas más páginas, las tablas crecen y buscar en ellas cuesta más.

    Mover una página a otro marco no afecta al proceso: el sistema solo actualiza su entrada en la tabla y el proceso sigue viendo las mismas direcciones lógicas.

    Escena 2

    Un proceso hace cuatro pedidos: 45, 13, 7 y 30 KB. Cambia el tamaño de página.

    Página de
    04 · Una página, dos procesos

    Compartir páginas

    Si el proceso Y necesita parte de la memoria de X, X debe compartir una página de forma explícita. El sistema agrega una entrada en la tabla de Y que apunta al mismo marco. Dos detalles:

    • Y la ve con otro número de página: cada tabla se llena según su propio estado.
    • La entrada de Y indica que la página pertenece a X y que Y solo puede leerla.
    05 · Una biblioteca para todos

    Enlace estático y dinámico

    Con enlace estático, cada ejecutable trae dentro todas sus bibliotecas. Si X y Y usan la biblioteca A, A queda cargada dos veces en memoria. Con enlace dinámico, el ejecutable trae solo su código y las bibliotecas van en archivos aparte (.dll o .so) que se cargan una vez y se comparten.

    El programa pide la biblioteca (loadLibrary), obtiene la dirección de la función (getProc) y al final la suelta (unloadLibrary). Soltarla no la borra: el sistema lleva un contador de procesos que la usan y solo la elimina cuando llega a cero. En la tabla de páginas, esas páginas pertenecen al sistema y el proceso solo puede leerlas y ejecutarlas. A cambio, mantener bibliotecas exige compatibilidad hacia atrás: una versión nueva no debe romper a los programas que ya la usan.

    Escena 3

    X usa las bibliotecas A y C; Y usa A y B. Compara la memoria ocupada y descarga programas.

    06 · Predice

    Antes de leer la respuesta

    En la consola
    tabla muestra la tabla de páginas del proceso en CPU. pide 700 pide 700 bytes (en decimal). comparte X 02 Y comparte la página 02 de X con Y.
    Laboratorio

    Tu turno: traduce y comparte

    Páginas de 256 bytes (0x100). El proceso X tiene las páginas 00, 01, 02 y 04; el proceso Y, solo la 00. Traduce direcciones, provoca errores, pide memoria y comparte una página.

    Repaso

    Comprueba lo que entendiste

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