Explicación sobre la memoria y paginación

Vamos a ver. Poco a poco.
Me explico. La memoria virtual lo que te permite es que trabajes como si tuvieses más capacidad de memoria central. Es decir 4es una zona del disco que se reserva para tal efecto.
Dado que como los programas en ejecución se encuentran en la memoria central y no todos caben (piensa que los procesos tienen una zona en memoria para su código otra para sus datos y otra para su pila) se produce un trasiego de información (páginas) entre la memoria central y la tabla de páginas (digamos la memoria virtual). Entonces cuando un proceso necesita cargar en memoria algún información lo que hace es pedirla a la tabla de páginas o a una memoria cache que pueda haber de por medio. Por otro lado puede que el proceso tenga ya en memoria el número máximo de páginas que puede tener entonces lo que se hace es sacar de memoria alguna de ellas (generalmente la que más tiempo llevaba sin usarse) y meter en su lugar la nueva página sacada de disco.
No sé si me he explicado bien.
Si necesitas más datos me lo dices y te los paso sin problema alguno.
Por otro lado lo del desbordamiento se debe a que la pila de un proceso que está en memoria no puede exceder un determinado tamaño, es decir no puede meterse dentro del espacio para datos y código. Cuando un programa va a sobrepasar ese memoria se produce un stack overflow, es decir el desbordamiento. Esto puede producirse por errores de programación por ejemplo llamadas recursivas en los programas mal controladas, etc...

1 respuesta

Respuesta
1
Creo que no me explique bien.
Mira:
La memoria central está dividida en marcos que tienen el mismo tamaño que las páginas de la tabla de paginación que hay en disco (memoria virtual). Entonces lo que tenemos es que un proceso que está en memoria ocupara POR marcos para poder meter su espacio para código, datos y pila. No es que sean tres páginas, depende del programa o de que haya un límite de espacio que pueda ocupar el proceso en memoria.
Con la memoria virtual lo que consigues es tener cargadas en una zona de disco en una tabla de páginas las páginas de los procesos que están en memoria de manera que no tengas que tener cargado en memoria el proceso entero y cuando necesites algo que no esta presente en memoria lo iras a buscar a esa tabla de páginas para llevarlo a la memoria principal.
Sobre lo de cuando se borran los procesos, no es que se borren si no que cuando hay una página que no está cargada en memoria (eso se sabe porque en la tabla de páginas hay un flag por cada página que indica si está presente en memoria), lo que se hace es si hay marcos libre en memoria de ese proceso llevarlo a uno libre o si no lo hay es sacar la información de uno de los marcos y ese marco se elige según diversos algoritmos como FIFO, el que lleva más tiempo sin usarse (LRU)...
No se si te aclaro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas