Simulaciones Interactivas — Sistemas Operativos

Memoria Física · Memoria Virtual · Copy-on-Write · Reemplazo de Páginas (FIFO/LRU/CLOCK) · NFS · Criptografía RSA · Contraseñas con Salt. Universidad Nacional de Ucayali — Ing. Msc. Euclides Panduro Padilla.

¿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.

CPU
BUS DE
DIRECCIONES →
Controlador
de Memoria
↓ decodifica
Banco
activo
← BUS DE
DATOS
CPU
Ingresa una dirección (0–63), elige leer o escribir, y presiona "Ejecutar acceso a memoria" para ver el recorrido completo, paso a paso.

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.

La RAM física tiene 16 bloques contiguos. Carga procesos y observa qué pasa cuando terminan en un orden distinto al que se cargaron: aparecen "huecos" (fragmentación externa) que a veces son demasiado pequeños para el siguiente proceso, aunque exista espacio TOTAL libre suficiente.

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ísicaMemoria Virtual
¿Qué es?Direcciones reales de los chips de RAMDirecciones "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
AislamientoNinguno por sí solaTotal: un proceso no puede tocar la RAM de otro
Tamaño disponibleLimitado a la RAM instaladaPuede 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

Pulsa el botón para ver cómo la MMU traduce la misma dirección virtual (0x00) de dos procesos distintos hacia dos marcos físicos completamente diferentes — la base del aislamiento entre procesos.

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

0Page Faults
0Hits

RAM Física (4 marcos disponibles)

Haz clic en una página virtual para comenzar. Cuando la RAM se llene, la siguiente carga expulsará el marco más antiguo (política FIFO simplificada).

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

variable_global = 100
Página física #42 (RO)

Proceso HIJO

— sin crear —
 
Estado inicial: solo existe el proceso padre con su página en memoria.

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

Fallo de página   Acierto (hit)   Recién cargada
Configura los parámetros y presiona "Ejecutar simulación".

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 exportmount → operación de archivo.

Servidor NFS — 192.168.56.10

$ /etc/exports /export/datos 192.168.56.11(rw,sync,no_subtree_check) $ ls /export/datos/ (vacío)

Cliente NFS — 192.168.56.11

$ ls /mnt/datos/ mount: /mnt/datos: no existe montaje.

Sigue los pasos en orden: exportar en el servidor, montar en el cliente y luego escribir un archivo de prueba.

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).

⚠ Esta función hash es solo demostrativa (no usar en sistemas reales). En la práctica se usan algoritmos como bcrypt, scrypt o Argon2, diseñados para ser lentos y resistir ataques de fuerza bruta.