[duda] memoria virtual y paginacion

Iniciado por MRx86, 27 Noviembre 2016, 06:46 AM

0 Miembros y 1 Visitante están viendo este tema.

MRx86

Hola, pongo este post aqui por que los conceptos los saque de la MSDN, ya he leido estos conceptos varias veces pero no se porque cada vez que leo un concepto en ingles me da por pensar que no lo he entendido como es... asi que queria preguntar a ver si mi concepto esta bien, si no es molestia obviamente.

El siguiente es mi concepto sobre memoria virual:

Es un mecanismo que consiste en optimizar la memoria principal guardando los datos de los procesos que esten es estado de suspenso (por ejemplo, esperando una entrada desde el teclado) en el almacenamiento interno, ademas, la memoria virtual permite la seguridad e integridad de los datos de los diferentes procesos ya que un proceso no puede escribir directamente la memoria fisica de otro.

Y este es el que tengo sobre paginacion:

Es un mecanismo que permite ordenar los procesos en segmentos llamados "paginas".

Si, eso y ya. Si alguien tiene un concepto mas completo que el que tengo sobre la paginacion, agradeceria responderme con el mismo. Y si alguien conoce otra propiedad o caracteristuca sobre la memoria virtual, tambien agradeceria hacerlo.

Muchas gracias de antemano...
"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein

Orubatosu

Bueno a ver... son cosas relacionadas, pero no iguales y guardan relación con como gestiona la memoria un SO.

Para ello debemos de pensar que hasta no hace mucho (e incluso hoy en día) existe un problema, o mejor dicho varios.

Uno es que los sistemas operativos solo pueden direccionar una cantidad limitada de memoria.

¿Que es direccionar?, pues hablando en plata, la capacidad de "señalar" posiciones de memoria. Por poner un ejemplo clásico supongamos que tienes un montón de cajones, dentro de cada cajón te cabe un cantidad de información (por ejemplo una letra). Para almacenar la palabra "perro" necesitas 5 cajones. Supongamos que tienes mil cajones, y tu SO "sabe" que la palabra "perro" está en los cajones que van del 100 al 104.

Tienes obviamente un indice que te dice donde están las cosas (en términos muy generales y rudimentarios claro), pero una limitación de los sistemas es que la cantidad de cajones que pueden manejar no es ilimitada.

En los sistemas operativos de 32 bits, la cantidad de "cajones" es de 232

Esto es: 4.294.967.296 "cajoncitos". Eso pueden parecer muchos, pero muchos cajones, pero si en cada uno solo cabe una letra veremos que son poco mas de cuatro millones de "cajoncitos"

Parecen muchos, pero piensa que una película en BD puede llevar y exceder fácilmente los 40 millones... es decir: 10 veces mas de los que puedes manejar

En los sistemas operativos de 64 bits la cantidad es enormemente superior. Por ejemplo un simple Windows 10 64 bits está entre 128 Gb t 512 Gb dependiendo de la versión

Pero claro, que tu W10X64 soporte 128 Gb no quiere decir que los tengas, por regla general las placas base de consumo general no admiten mas de 32 Gb (aunque eso varía con el tiempo)

Bien, supongamos que tienes tu W10 X64, y tienes 8 Gb de memoria física instalada

Tu sistema operativo puede acceder a esa memoria (y a la de la gráfica y otras, pero eso dejemoslo de lado) sin problemas pero... ¿y si tienes muchos programas en marcha y necesitas mas memoria?

Pues entonces el sistema usará lo que se conoce como "memoria virtual", que no es mas que usar el disco duro de tu ordenador para almacenar temporalmente datos, que leerá cuando los necesite. Obviamente por lo general nunca es preciso manejar toda la memoria en todo momento. En cada momento trabajas con secciones mas pequeñas. El sistema se encarga de guardar en el disco los datos que no son necesarios ahora mismo, y cargar llegado el caso los que si necesite. Digamos que hace malabares con los cajones para guardalos temporalmente en otro sitio y usar solo los que necesitas en cada momento.

Por otro lado, existe algo llamado "gestión de memoria". Aunque la memoria sea un "todo continuo" en realidad el sistema separa los programas e incluso procesos en "bloques" separados "sellados" para impedir que el mal funcionamiento de un programa escriba en una zona correspondiente a otro programa (esto ocurría hace tiempo)

La paginación lo que hace es saber "donde" está la memoria que necesitas, la memoria virtual lo que hace es "guardar" las partes que no necesitas en espacio externo y recurrir a ellas cuando lo necesita.
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

MRx86

buena explicacion, muchas gracias por responder.

Saludos
"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein