Pixelaula.
Memoria · Lección 1 de 5

Cada proceso en su espacio

Varios procesos comparten la misma RAM sin pisarse. Al terminar sabrás cómo la MMU traduce y protege cada dirección.

⏱ 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 · Cada uno en su espacio

    Qué hace la administración de memoria

    Todo proceso necesita estar en memoria para ejecutarse, y casi todos piden memoria dinámica mientras corren. El sistema operativo administra la memoria real de la computadora y le presenta a cada proceso un espacio de memoria lógico, con la garantía de que ningún otro proceso va a interferir con él, ni él con los demás.

    El objetivo general es lograr un balance entre usabilidad y rendimiento: que quepan los procesos que el usuario quiere, sin que el sistema se vuelva lento.

    02 · No solo la RAM

    La jerarquía de memoria

    "Memoria" no es solo la RAM: es toda una serie de dispositivos que guardan información y que el sistema debe administrar. Se ordenan en tres niveles:

    • Interna o volátil (inboard): registros del procesador, caché y RAM. Está en la tarjeta madre, es la más rápida y la más cara, y se borra al apagar.
    • Externa o persistente (offboard): discos duros y ópticos. Conserva los datos, es más lenta y más barata.
    • Fuera de línea o extraíble (offline): cintas magnéticas, discos magneto-ópticos y discos de una sola escritura. Mucha capacidad a bajo precio, pero lectura y escritura lentas.
    Escena 1

    Toca cada nivel para comparar velocidad, costo y capacidad. Los tiempos son órdenes de magnitud típicos ampliación.

    03 · Tres tareas

    Funciones de la administración de memoria

    • Relocalización: poder colocar la memoria lógica de un proceso en distintas partes de la memoria real, según convenga, sin que el proceso se entere ni el programador tenga que hacer nada.
    • Protección y compartición: que ningún proceso afecte la memoria de otro, y a la vez permitir que compartan áreas de código (código reentrante) o de datos cuando lo piden de forma explícita. Esa debe ser la única manera de tocar la memoria de otro proceso.
    • Asignación: dar memoria al cargar el proceso (para su código y sus datos estáticos), cuando la pide durante la ejecución, y recuperarla cuando la libera o cuando termina.
    04 · Direcciones fijas

    Carga estática

    Los primeros sistemas eran de un solo usuario y no tenían hardware de protección. Se usaba la carga estática: el programador debía saber de antemano en qué dirección se cargaría su programa, porque usaba direcciones absolutas para leer datos y para saltar. Los ejecutables .COM de DOS son un ejemplo tardío: solo funcionaban con la versión de DOS para la que se escribieron, porque cada versión dejaba libre la memoria a partir de una dirección distinta.

    Escena 2

    El mismo programa, que salta a la instrucción 0120, cargado en dos lugares distintos. Compara la carga estática con la relativa a un registro base.

    Cargado en
    05 · La MMU

    Registros base y límite

    La carga dinámica cambió todo: los programas usan direcciones relativas y el hardware las traduce. En la unidad de administración de memoria (MMU) hay un registro base (o de relocalización) y un registro límite. En cada acceso a una dirección lógica, la MMU:

    1. verifica que la dirección sea menor que el límite, es decir, que no se salga del área del proceso;
    2. si está dentro, le suma el registro base para formar la dirección física.

    Esos registros cambian con el proceso que tiene la CPU: en cada cambio de contexto se restauran junto con el resto de su estado. En los primeros procesadores de Intel se usaban varios registros de segmento como base: mov ax, [FF] equivale a mov ax, DS:[FF], y jump [5] a jump CS:[5].

    Escena 3

    El proceso tiene base 2000 y límite 1800. Mueve la dirección lógica y mira qué hace la MMU.

    06 · Predice

    Antes de leer la respuesta

    En la consola
    Las direcciones van en hexadecimal: lee 0450. Usa run A para darle la CPU a un proceso, mapa para ver la memoria y ? para la lista de comandos.
    Laboratorio

    Tu turno: la MMU por dentro

    Una memoria de 64 KB (de 0000 a FFFF). El sistema operativo ocupa de 0000 a 0FFF. El proceso A tiene base 2000 y límite 1800; el proceso B, base 6000 y límite 1000. Dale la CPU a uno, traduce direcciones y relocaliza procesos.

    Repaso

    Comprueba lo que entendiste

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