seegongsik
Sistemas operativos

Cómo funciona la memoria virtual

En la lección 2 vimos que varios procesos funcionan a la vez. Cada uno de esos programas necesita un lugar donde recordar cosas: memoria. Pero la memoria real (la RAM) tiene una cantidad fija, así que si todos ocuparan directamente sitio real, se agotaría enseguida y chocarían entre sí. Por eso el sistema operativo le da a cada uno una «memoria falsa y grande».

01

Todos quieren memoria

Cada programa que funciona a la vez necesita un lugar donde recordar cosas. Pero la memoria real es un espacio pequeño y de tamaño fijo.
Si todos intentaran quedarse directamente con sitio real, pronto faltaría espacio y sus zonas chocarían.
Sería una pelea por la memoria.

Memoria real

Cuantos más programas añades, antes se llena y se desborda la barra de memoria real.

La memoria real sola no da abasto. Pero tampoco se les puede decir a los programas «cede algo de memoria», porque cada uno necesita usar mucha.
Aquí el sistema operativo usa un truco ingenioso.

02

Dar a cada uno su propia memoria grande

El sistema operativo da a cada programa su propia memoria falsa: amplia, que empieza limpiamente en la casilla 0 y que parece usar él solo.
La «casilla 0» de A y la «casilla 0» de B son en realidad sitios distintos. Cada uno ve solo su propia memoria y ni siquiera puede ver la de los demás.
A esta memoria falsa y propia se le llama memoria virtual.

Programa A : Mi memoria
0
1
2
3
4
5
0 de A != 0 de B (sitios reales distintos)

Mira A y B por turnos: cada uno tiene su propia «mi memoria» que empieza en la casilla 0.

Los dos empiezan limpiamente en la casilla 0, lo cual es muy cómodo. Pero una dirección falsa no es un sitio real.
Cuando un programa dice «mi casilla 3», ¿quién la convierte en un sitio real, y cómo?

03

Llevar las direcciones falsas a sitios reales

Cada vez que un programa usa «mi casilla 3», el sistema operativo y el hardware la convierten en secreto en un sitio real.
Un pequeño mapa las conecta, como «mi 3 → real 27». El «mi 0» de A es la casilla real 5, y el «mi 0» de B es la casilla real 40.
Aunque el número falso sea el mismo, el sitio real es distinto, así que no chocan.

Sitios reales
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Pulsa una dirección falsa y verás cómo pasa por el mapa hasta un sitio real. A y B llegan a lugares distintos aunque tengan el mismo número.

Como el mapa convierte lo falso en real, cada uno vive seguro y por separado.
Pero si sumas la memoria falsa de todos, puede ser mucho mayor que la memoria real. ¿Cómo cabe todo eso en una memoria real pequeña?

04

Más grande que la real: lo que no se usa, al disco

Este es el secreto del sistema operativo: las partes que no se están usando ahora se sacan un rato al disco, que es lento, y en su lugar se cargan las partes que hacen falta ahora.
Más tarde, si se vuelve a necesitar algo que se sacó, se trae de vuelta.
Así se puede usar más memoria de la que hay en la memoria real.

Memoria real
P1
P2
P3
P4
Disco
P5
P6

Carga una parte nueva: cuando la memoria real está llena, algo que no se usaba sale al disco y entra lo que hace falta.

Sacar y volver a traer hace posible una memoria más grande que la real. Pero el disco es mucho más lento que la memoria real.
Ir hasta el disco cada vez sería exasperante, así que el sistema operativo se ocupa de una última cosa.

05

Lo que se usa a menudo, cerca

El sistema operativo deja las partes que se usan a menudo en la memoria real, que está cerca, y solo manda al disco, lejano y lento, lo que se usa de vez en cuando.
Es la misma idea que la caché que vimos en la estructura del computador: «lo que se usa a menudo, cerca».
Así, la mayor parte del trabajo termina enseguida en la memoria real, que es rápida, y las visitas al disco son solo ocasionales, de modo que apenas se nota la lentitud.

Memoria real
Disco

Cuantas más veces sacas cosas, más se quedan las de uso frecuente en la memoria real (cerca) y las de uso ocasional en el disco (lejos).

En resumen, la memoria virtual es el arte de llevar direcciones falsas a sitios reales, mandar al disco lo que no se usa y tener cerca lo que se usa a menudo. Gracias a ello, cada programa siente que tiene para él solo una memoria más grande que la real.
Pero que cada uno vea solo «su propio sitio» y no el de los demás se convierte, en realidad, en la pared que separa y protege lo mío de lo tuyo. Esa es la próxima historia.

En una líneaEl sistema operativo da a cada proceso sus propias «direcciones virtuales», para que todos parezcan tener una memoria amplia solo para ellos. Las direcciones virtuales se llevan en secreto a sitios reales, y cuando la memoria real se llena, las partes que no se usan salen al disco lento y vuelven cuando hacen falta. Las partes de uso frecuente se quedan en la memoria real, que está cerca. Gracias a esto, cada programa puede usar más memoria de la que realmente hay, por separado y con rapidez.
← Sistemas operativos
¿Te fue útil? Apoyar seegongsik