Comparación En La Administración De Memoria RAM Entre Windows, Linux Y Mac OS
Kabuto_Kun16 de Febrero de 2014
4.860 Palabras (20 Páginas)682 Visitas
Comparación en la Administración de Memoria RAM
entre Windows, Linux y Mac OS
Gestión de Memoria en Linux
Memoria Virtual
Direccionamiento de la memoria virtual: Linux utiliza una tabla de página de 3 niveles, cada tabla en particular tiene el tamaño de una página:
● Directorio de páginas: Los procesos activos tienen un directorio de páginas único que tiene el tamaño de página. El directorio de páginas debe residir en la memoria principal para todo proceso activo.
● Directorio intermedio de páginas: Este directorio se expande a múltiples páginas. Cada entrada en la tabla de páginas apunta a una página que contiene una tabla de páginas.
● Tabla de páginas: Cada entrada en la tabla hace referencia a una página virtual del proceso.
Para aumentar la eficiencia al cargar y descargar estas páginas desde o hacia la memoria, utiliza un mecanismo llamado Sistema de Colegas, en donde las páginas son agrupadas en marcos de tamaño fijo y para reemplazar páginas se utiliza el algoritmo del reloj en donde las páginas tienen una especie de variable de edad.
El algoritmo de reloj consiste en asociar un bit de usado y otro de modificado con cada una de las paginas, el usado se reemplaza por una variable de 8 bits, cada vez que se accede a una página esta variable se incrementa, después Linux recorre periódicamente la lista completa de páginas y decrementa la variable de edad de cada página a medida que va rotando por todas ellas en memoria principal. Una página que tiene un 0 es una página vieja ya que no se ha hecho referencia a ella desde hace ya algún tiempo y es el mejor candidato para el reemplazo.
Algoritmo de Reemplazo de Páginas
Linux se basa en el algoritmo de Reloj, como ya expliqué este algoritmo consiste en asociar un bit de usado y otro de modificado con cada una de las páginas de memoria principal. En Linux el usado se reemplaza por una variable de 8 bits. Cada vez que se accede a la página la variable se incrementa. Después Linux recorre periódicamente la lista completa de páginas y decrementa la variable de edad de cada página a medida que va rotando por todas ellas en memoria principal.
Una página que tiene un 0 es una "página vieja" es decir no se ha hecho referencia a ella desde hace ya algún tiempo y es el mejor candidato para el reemplazo. Cuando el valor de edad es más alto, la frecuencia con la que se ha accedido a la página recientemente es mayor y por lo tanto tiene un a posibilidad menor de elegirse para el reemplazo. Este algoritmo es una variante de la política LRU.
Reserva de Memoria del Núcleo
La gestión de memoria del núcleo se realiza en base a los marcos de página de la memoria principal. Su función básica es asignar y liberar marcos para los distintos usos.
Los fundamentos de la reserva de memoria en Linux son los mecanismos de reservas de páginas ya usados para le gestión de memoria virtual de usuario. Como se utiliza el algoritmo buddy, se puede reservar y liberar unidades de una o más páginas. Debido a que el tamaño mínimo de memoria que se puede reservar es de una página, la reserva de páginas no sería muy adecuada ya que el núcleo requiere pequeños fragmentos que se utilizarán por poco tiempo y que son de distintos tamaños. Es por eso que Linux utiliza un esquema conocido como "asignación de láminas". En una máquina Pentium/x64, el tamaño de página es de 4 Kbytes y los fragmentos dentro de una página se pueden asignar en tamaños de 32, 64, 128, 252, 508, 2040 y 4080 bytes.
Gestión de Memoria en Windows
El gestor de memoria está diseñado para trabajar con páginas que van desde los 4 Kbytes hasta 64Kbytes. Las plataformas Intel, PowerPC, y MIPS tienen 4096 bytes por página y las plataformas DEC Alpha tienen 8192 bytes por página.
Mapa de Direcciones Virtuales en Windows
Los procesos de usuario en Windows pueden ver un espacio de direcciones independientemente de 32 bits, permitiendo 4Gbytes de memoria por proceso. Por defecto una parte de esta memoria se reserva para el SO de manera que cada usuario dispone de 2Gbytes de espacio de direcciones posibles y todos los procesos lo comparten.
Se puede modificar esto restringiendo al SO a solo 1Gbyte y 3Gbytes para el usuario, esto viene explicado en la documentación de Windows.
Espacios de direcciones en Windows:
● 0x00000000 a 0x0000FFFF: reservada para ayudar a los programadores a capturar asignaciones de punteros Nulos.
● 0x00010000 a 0x7FFEFFFF: espacio de direcciones disponible para el usuario. Este espacio de encuentra dividido en páginas que se pueden cargar a la memoria principal.
● 0x7FFF0000 a 0x7FFFFFFF: una página de guarda, no accesible para el usuario. Lo que hace es verificar referencias a punteros fuera del rango.
● 0x80000000 a 0xFFFFFFFF: espacio de direcciones del sistema. Esta área es de 2Gbytes se utiliza por parte del ejecutivo de Windows, el micronúcleo y los manejadores de dispositivos.
Paginación (o swap)
Cuando se crea un proceso, puede, en principio utilizar todo el espacio de usuario de 2Gbytes (menos 128 Kbytes). Este espacio se encuentra dividido en páginas de tamaño fijo, cualquiera de las cuales se puede cargar en la memoria principal. Estados de las páginas:
● Disponible: Páginas que no están actualmente usadas por este proceso.
● Reservada: Conjunto de páginas contiguas que el gestor de memoria virtual separa para un proceso pero que no se cuentan para la cuota
● Asignada: Las páginas para las cuales el gestor de la memoria virtual ha reservado espacio en el fichero de paginación.
La distinción entre memoria reservada y asignada es muy útil debido a que minimiza la cantidad de espacio de disco que debe guardarse para un proceso en particular, manteniendo espacio libre en disco para otros procesos; y permite que un hilo o un proceso declare una petición de una cantidad de memoria que puede proporcionarse rápidamente si se necesita.
En Windows cuando se activa un proceso por primera vez se le asigna un cierto número de marcos de página de la memoria principal como conjunto de trabajo. Cuando un proceso hace referencia ha un proceso que no esta en memoria principal, una de las páginas de dicho proceso se expulsa, y se trae la nueva página.
Cuando hay espacio disponible en la memoria, el gestor de memoria virtual permite que los conjuntos residentes de los procesos activos crezcan. Entonces se trae una nueva página a la memoria sin expulsar ninguna.
Cuando la memoria empieza a escasear, el gestor de memoria virtual mueve las páginas que se han utilizado hace más tiempo de cada uno de los procesos hacia swap, liberando así memoria principal.
Existen algunas similitudes en cuanto a la gestión de memoria en Windows y Linux pero cuando es necesario liberar memoria Windows lo hace una vez por segundo a diferencia en Linux que lo hace solo cuando es necesario, esto hace de Linux más eficiente.
Gestión de Memoria en Mac OS X
En Mac OS X, cuando tu cierras una aplicación, está no se cierra realmente, sino que se suspende y queda residente en memoria. Es lo que ocurre cuando le das al aspa de cerrar, o cuando presionas Command-W. Si realmente quieres retirarla de la memoria, o cerrarla ala Windows, tienes que presionar Command-Q o hacerlo a mano desde el Dock. Aquí hablamos de cerrarla realmente, que es cuando se debería liberar su memoria. No obstante, hay programas que realmente se cierran ellos solos.
Por lo tanto, en OS X tenemos dos formas de cerrar una aplicación. En la primera realmente no se está cerrando, sino que se está ocultando y no es aplicable lo que estamos hablando aquí. Sería el equivalente de minimizar en Windows.
En OS X, la memoria se va asignando pero no liberando. Es decir, tu abres un programa, lo usas y luego lo cierras del todo. La memoria asignada no se libera, sino que queda asignada por si se vuelve a abrir la aplicación y se aprovecha la huella de memoria ya existente.
Por lo tanto, conforme vas abriendo y cerrando aplicaciones la memoria se va llenando poco a poco hasta que apenas queda libre. Hasta aquí la cosa está bien, porque de este modo mantenemos una caché que podría resultar en un aumento de rendimiento.
Y a veces es así. La segunda vez que abres ciertos programas, estos se cargan mucho más deprisa porque recuperan su imagen de la memoria física.
Según la teoría, una vez que se ha ocupado toda la memoria y se necesita más, es esa caché la que se va liberando según un algoritmo dedicado a esto.
Eso es la teoría. La práctica es otra: se tira de swap y el rendimiento de tu MAC empieza a caer en picado al empezar a rascar los discos duros.
Opinión Personal:
Sistema operativo más eficiente en manejo de memoria RAM
Dejando de lado completamente a Mac OS X por su completa ineficacia, con la elección entre Windows y Linux, a mi parecer el más eficiente es Linux, ya que siempre tiene bajo control el uso de toda la memoria disponible y así la planifica para su rápido uso a petición de las aplicaciones, en cambio de Windows en que la memoria disponible simplemente está sin uso o ninguna planificación, por lo que es menos eficaz en asignar esta a las aplicaciones (esto empeora si se utilizan versiones antiguas
...