seegongsik
Sistemas operativos

Qué es la protección de memoria

En la lección 9, sobre la memoria virtual, vimos que cada programa tiene su propia memoria y ni siquiera puede ver la de los demás. Pero en realidad, los datos de todos están mezclados en una sola memoria real. Entonces, ¿qué impide que unos toquen las cosas de otros? Sorprendentemente, no hay ninguna pared que lo bloquee.

01

Muchos viviendo mezclados en una memoria

Desde la vista falsa, cada uno parece tener su propio espacio, pero dentro de la memoria real todos están mezclados. Los trozos de A y los de B están uno al lado del otro.
Si A pudiera tocar el sitio de B, justo al lado, un solo error de A podría estropear a B, e incluso podría espiar sus secretos.

Memoria real
A
B
A
B
B
A
A
B
A
B
B
A

En la memoria real, los trozos de A (dorado) y de B (azul) están mezclados.

Mezclados así en un mismo espacio, parece arriesgado. Pero en realidad, A nunca puede tocar a B.
¿Hay algún tabique sólido entre los dos? No. El secreto está en el mapa que vimos en la lección 9.

02

No es una pared, es que no hay camino

Recuerda el mapa de la lección 9. El mapa de A solo apunta a los sitios reales de A, y en él no hay ningún camino que lleve al sitio de B.
Así que A ni siquiera tiene forma de nombrar «la dirección de B».
No es que una pared los separe: simplemente no hay camino por el que ir.

A mapa
A1
✓
B1
sin camino
A2
✓
B2
sin camino
A3
✓

Elige A: el mapa de A solo lleva a los sitios de A, y no hay ninguna flecha hacia B.

Sin camino en el mapa, no hay manera de llegar. Pero ¿qué pasa si un programa, por error o a propósito, llama a una dirección que está fuera de su mapa?
Entonces entra en acción otro mecanismo de seguridad.

03

Si intentas cruzar la línea, te atrapan

Cuando un programa llama a una dirección que no está en su mapa, no hay sitio real al que traducirla, así que la traducción falla.
En ese instante, el hardware lo detecta y avisa al sistema operativo, que dice «has tocado un sitio que no es tuyo» y detiene solo a ese programa.
El acceso indebido nunca llega a su destino.

Prueba por turnos la dirección de A y la de B: la tuya pasa (verde) y la ajena queda atrapada y detenida (rojo).

La tuya pasó bien, y la ajena quedó atrapada en el acto. Los intentos de cruzar el límite nunca funcionan.
Gracias a ello llega un resultado muy tranquilizador: aunque un programa se estropee, el daño no se extiende a los demás.

04

Si uno se rompe, los demás siguen bien

Como cada programa está encerrado en su propia sección, el que se estropea solo puede desordenar su propio sitio. No puede tocar la memoria de otros programas ni el sistema operativo.
El sistema operativo recoge en silencio solo ese programa roto, y los demás siguen funcionando como si nada.

P1
en marcha
P2
en marcha
P3
en marcha

Estropea un programa: solo ese se detiene y los demás siguen funcionando.

Sin protección, el programa roto habría arrastrado a todos los demás. Gracias a que estaban separados, el accidente se quedó en una sola sección.
La estabilidad y la seguridad nacen juntas de aquí, y en su base no hay una «pared», sino «mapas separados».

05

Separar es proteger

En resumen, la protección de memoria no es una pared construida aparte. Como cada proceso recibe su propio mapa, no hay camino de uno a otro, y lo que intente cruzar la línea queda atrapado y solo se detiene ese programa.
Por eso pueden vivir mezclados sin chocar, y si uno se rompe, el daño no se extiende. Tenerlos separados ya es, en sí mismo, la protección.

Apaga y enciende la protección para ver la diferencia: encendida, el accidente queda en una sección; apagada, se extiende a todo.

Hasta aquí, el sistema operativo ha gobernado la CPU y la memoria desde dentro: haciendo que los programas se turnen (tiempo compartido, planificación) y manteniéndolos separados (memoria virtual, protección).
Pero la computadora también tiene que hablar con el exterior: el teclado, la pantalla, el disco e incluso dispositivos nuevos que nunca ha visto.
¿Cómo reconoce el sistema operativo todos esos dispositivos? Esa es la próxima historia.

En una líneaLa protección de memoria no es una pared que corta el paso, sino el resultado de que cada proceso tenga un mapa distinto. Tu mapa solo apunta a tus sitios, así que, para empezar, no hay camino a los sitios de los demás. Si un programa intenta cruzar la línea, la dirección no está en su mapa, así que el hardware lo atrapa y el sistema operativo detiene solo a ese programa. Por eso, aunque uno se rompa, los demás siguen bien. Separar es proteger.
← Sistemas operativos
¿Te fue útil? Apoyar seegongsik