Estupida duda informatica. Memoria Virtual

sOyneGro

Vamos a ver tengo una duda existencial informatica.

La memoria principal (RAM) carga los programas al completo y envia de forma progresiva la informacion a la CPU para que la procese.

Si la memoria principal no es lo suficientemente grande para cargar con el programa se emplea memoria virtual y ¿ahi entra en juego la secundaria (disco duro)?

Aqui estoy confundido, ¿durante la ejecucion de un programa (proceso) este donde se almacena? Unicamente en la memoria principal o en la memoria principal y disco duro :S. O solo se almacena en la memoria principal y en caso de que no tenga capacidad suficiente para almacenar todo el programa tambien participa el disco duro.

Se que es estupido pero tengo curiosidad xD.

squ4r3

yo creo que en un principio se almacena en la memoria principal (RAM). de no ser suficiente, pasaría a usar una porción del disco duro

sOyneGro

Osea que basicamente la memoria principal almacena los programas en ejecucion SALVO el caso en que esta no sea lo suficientemente grande.

¿Por cierto, la memoria cache es una memoria fisica aparte o es algo asi como la memoria virtual y donde se encuentra?

KAKES

pos q yo sepa la RAM es la memoria de arranque xddddd

pRAXIS

Las CPUs recuperan los datos de los registros internos de la CPU, sino se encuentran allí los busca en la memoria cache L1, L2, L3... y después en la memoria RAM del sistema, por último lo busca en la memoria virtual (disco duro). Lógicamente sigue este orden porque va buscando de más rápido a más lento.

Ak3larr3

No es del todo asi, existe una cosa llamada paginacion, las paginas que no se usan se almacenan en memoria secundaria, no hace falta que este llena la memoria principal.

La memoria cache es una memoria rapida (fisica) que esta en el procesador.

sOyneGro

Lo de las paginas, ¿son los bloques etiquetados de datos, segun eso de las localidades de referencias o algo asi? xd

Lo que me refiero es que por ejemplo un programa que require de poco memoria para ser ejecutado se almacena en la RAM de "golpe" y desde ahi se hace el intercambio de datos con la CPU sin intervenir el disco duro.

Y sin embargo, si el programa a ejecutar es mayor que el tamaño de la RAM entonces intervienen de forma "dinamica" RAM y disco duro ¿no?

¿Es algo asi?

Miminh0

#4 pues si piensas eso vas jodido xD

Hobbes

#7 Como dicen por ahí arriba, se pagina, es decir el programa, la memoria y demás se dividen en paginas, las cuales se van cargando en memoria según hace falta.

Si ejecutas un programa mas grande que la memoria principal este se empieza a almacenar en la ram, el resto en la virtual, cuando empieza a ejecutarse empiezan a pasar paginas a la cache y de ahi a los registros de cpu según vaya procesando, cuando acaba con una pagina coge la siguiente según donde este, primero mira en caché luego en la principal y al final en swap.

Un saludo.

sOyneGro

#9 "Roger That!!!" Muchas gracias :P

Ahora me ha surgido otra duda, ¿la RAM es la memoria principal? O son aparte.

Loa

#5 lo ha dicho casi todo...

luego el funcionamiento es algo mas complejo... pero principalmente eso

ethernal-

#5 te lo ha explicado de lujo.

Bonito concepto de "duda estupida".. xD

Hobbes

La memoria principal se entiende como la memoria fisica que realmente tienes, es decir, la memoria principal para la cpu es la ram mas las cachés.

#15 Deja de creer, estas en lo cierto.

oZk4h

es lo que dice #5, es la llamada jerarquía de la memoria. Si te fijas bien estan organizadas desde mas coste (y más rapidez) a menos coste y menos rapidez.

aNuBiS

Aunque la "memoria virtual" este almacenada en el disco duro NO es permanente, vamos, hace la misma funcion que la memoria RAM pero mas lenta.

(creo xD)

cabron

"Si la memoria principal no es lo suficientemente grande para cargar con el programa se emplea memoria virtual y ¿ahi entra en juego la secundaria (disco duro)?
"

Te equivocas, es un error muy común confundir la memoria virtual, con el archivo de paginación.

La memoría virtual, significa que cuando se ejecuta un programa, cree que toda la memoria es solo para él. En Windows de 32 bits, si no recuerdo mal, el programa cree que tiene 2gb de memoria solo para él, en otros SO no se de cuanto es la memoria virtual aunque la memoria esté realmente compartida por otros programas, y ni de coña el sistema tenga 2 gigas por cada programa.

Cuando un programa usa la memoria, el sistema operativo se encarga de forma transparante, de que el programa acceda a la memoria real.

Por ese se llama memoria virtual, por que el programa, realmente no tiene ni idea de en que parte física de la memoria está la información, el se cree que tiene 2 gb solo para él, y trabaja con ello.

Otra cosa es el archivo de paginación. Cuando el sistema operativo no tiene memoria suficiente para todos los programas que se están ejecutando, coge partes de la memoria que no se están usando en ese momento, y las mueve al disco duro. Si en algún momento esa información que ha quitado de la RAM y ha movido al disco duro, vuelve a ser necesaria, hace el proceso inverso, coge otrra parte de la RAM que no se eté usando, y la mueve al archivo de página para hacer hueco, y coge la parte del archivo de página que se va a usar, y la mueve a la memoria.

#5:

La CPU nunca accede al archivo de páginación, para la CPU el disco duro es disco duro, no es memoria, solo considera memoria su cache y la RAM.

Es el sistema operativo el que se encarga de mover páginas del archivo de paginación a la RAM para que estén disponibles para la CPU.

Gnos1s

Y en la zona demoninada "SWAP" (zona de intercambio) es donde se produce el tema de dejar páginas y coger otras.

Si no te aclaras, te recomiendo el libro Sistemas Operativos de Tanenbaum, Tema 4, Administración de memoria. Tiene un apartado denominado "memoria virtual" que es bastante claro, y la forma de explicarlo es muy cercana al lector.

1 comentario moderado
sOyneGro

Ahhh creo que con la ayuda de todos ya lo he comprendido, muchas gracias y siento la molestia :)

ChemicalX

Pero sobre todo recuerda esta frase joven padawan.Mi profesor de Estructura de Computadores del año pasado la repetia todos los dias: "La memoria virtual no existe"

Gnos1s

Virtualmente hablando sí xD.

Usuarios habituales