¿Cómo está organizada la Memoria Física (RAM)?
Antes de hablar de memoria virtual, hay que entender qué es realmente la memoria física: el hardware real (los chips de RAM) donde se guardan datos e instrucciones mientras el computador está encendido. Todo lo "virtual" que viene después es una capa de traducción que el sistema operativo construye ENCIMA de esta estructura física real.
1. La RAM es un arreglo lineal de celdas
Físicamente, la memoria RAM es una larga fila de celdas de almacenamiento, cada una identificada por un número único: su dirección física. La celda más pequeña direccionable es normalmente 1 byte (8 bits), y el hardware suele agrupar varios bytes en una palabra (word) de 32 o 64 bits, según la arquitectura del procesador.
- Bus de direcciones: cable(s) que transportan qué dirección física se quiere leer/escribir. Un bus de 32 bits direcciona hasta 4 GB (2³²); uno de 64 bits, muchísimo más.
- Bus de datos: transporta el contenido (el valor) que se lee o escribe en esa dirección.
- Módulos/bancos (DIMMs): la RAM física no es un solo chip, sino varios módulos conectados a la placa madre; el controlador de memoria los presenta al procesador como un único espacio de direcciones continuo.
2. Jerarquía de memoria (velocidad vs. tamaño)
Cuanto más rápido es un tipo de memoria, más caro y más pequeño suele ser. La RAM física es solo un escalón de esta pirámide:
Los registros del CPU están dentro del procesador (ns); la RAM está en la placa madre (decenas de ns); el disco está muchísimo más lejos en tiempo de acceso (ms) — de ahí que un fallo de página "mayor" sea tan costoso, como verás en la siguiente pestaña.
3. Simulación detallada: el viaje completo de un acceso a memoria
Esta simulación reproduce TODOS los componentes involucrados cuando la CPU lee o escribe un byte: el bus de direcciones, el controlador de memoria que decodifica la dirección en Banco → Fila → Columna (el mismo esquema RAS/CAS que usa la DRAM real), la celda física exacta dentro del banco activado, y el bus de datos que devuelve o entrega el valor.
DIRECCIONES →
de Memoria
activo
DATOS
4. Simulación: Memoria Física SIN memoria virtual (asignación directa y fragmentación)
Antes de que existiera la memoria virtual, el sistema operativo cargaba cada proceso directamente en un bloque contiguo de direcciones físicas reales. Simula qué ocurre cuando varios procesos se cargan y terminan en distinto orden.
De la Memoria Física a la Memoria Virtual
En la pestaña anterior viste que la RAM física es un arreglo de bloques con asignación directa y contigua — y que eso genera fragmentación. La memoria virtual resuelve ese problema agregando una capa de traducción: cada proceso ya no ve direcciones físicas reales, sino un espacio de direcciones virtuales propio, que el sistema operativo traduce (vía la MMU) a marcos físicos que NO necesitan estar contiguos ni ser los mismos que "ve" el proceso.
Diferencia clave: Física vs. Virtual
| Memoria Física | Memoria Virtual | |
|---|---|---|
| ¿Qué es? | Direcciones reales de los chips de RAM | Direcciones "inventadas" propias de cada proceso |
| ¿Quién la ve? | El hardware (MMU, controlador de memoria) | El programa/proceso en ejecución |
| ¿Debe ser contigua? | Sí, en asignación directa (ver pestaña 1) | El proceso la percibe contigua, aunque físicamente esté dispersa |
| Aislamiento | Ninguno por sí sola | Total: un proceso no puede tocar la RAM de otro |
| Tamaño disponible | Limitado a la RAM instalada | Puede exceder la RAM física (con swap) |
Ambos procesos de la demo de abajo "creen" que empiezan en la dirección virtual 0 — la MMU es quien decide, en tiempo real, a qué marco físico distinto apunta cada uno.
Simulación: dos procesos, la MISMA dirección virtual, distinta dirección física
Traducción de Direcciones y Page Faults
Haz clic en una página para "acceder" a ella. Si el marco físico está vacío, se genera un page fault y el sistema la carga; si ya está mapeada, es un acceso directo (hit).
Espacio Virtual del Proceso
RAM Física (4 marcos disponibles)
Copy-on-Write: fork() sin copiar memoria
Al hacer fork(), el padre y el hijo comparten las mismas páginas físicas marcadas como solo lectura. Solo cuando uno de los dos escribe se dispara la copia real de esa página.
Proceso PADRE
Página física #42 (RO)
Proceso HIJO
Simulador de Reemplazo de Páginas: FIFO · LRU · CLOCK
Ingresa una secuencia de referencias, el número de marcos disponibles y el algoritmo. El simulador ejecuta paso a paso y cuenta los fallos de página — igual que referencias.c del laboratorio.
Configuración
Ejecución paso a paso
Arquitectura NFS: Servidor y Cliente
NFS permite que un cliente acceda a archivos de un servidor remoto como si estuvieran en su disco local. Simula el flujo de export → mount → operación de archivo.
Servidor NFS — 192.168.56.10
Cliente NFS — 192.168.56.11
Cifrado Asimétrico RSA (números pequeños con fines didácticos)
Elige dos números primos pequeños p y q, genera las claves pública/privada y cifra un mensaje numérico. Nunca uses estos tamaños en producción — RSA real usa primos de 1024+ bits.
1. Generar claves
2. Cifrar / Descifrar
Contraseñas: Hash + Salt
Las contraseñas nunca se guardan en texto plano. Se les agrega una "sal" aleatoria antes de aplicar una función hash, y solo el hash resultante se almacena. Esta demo usa un hash simplificado con fines educativos (no criptográfico).