Sin memoria


Sin memoria ( OOM ) es un estado a menudo no deseado de la operación de la computadora en el que no se puede asignar memoria adicional para que la usen los programas o el sistema operativo. Dicho sistema no podrá cargar ningún programa adicional y, dado que muchos programas pueden cargar datos adicionales en la memoria durante la ejecución, estos dejarán de funcionar correctamente. Esto suele ocurrir porque se ha asignado toda la memoria disponible, incluido el espacio de intercambio de disco .

Históricamente, la condición de falta de memoria era más común de lo que es ahora, ya que las primeras computadoras y sistemas operativos estaban limitados a pequeñas cantidades de memoria física de acceso aleatorio (RAM) debido a la incapacidad de los primeros procesadores para manejar grandes cantidades de memoria, como así como consideraciones de costos. Desde el advenimiento de la memoria virtualabrió la puerta para el uso del espacio de intercambio, la condición es menos frecuente. Casi todos los programas modernos esperan poder asignar y desasignar memoria libremente en tiempo de ejecución, y tienden a fallar de manera incontrolada (bloquearse) cuando no se cumple esa expectativa; los más antiguos a menudo asignaban memoria solo una vez, verificaban si tenían suficiente para hacer todo su trabajo y luego esperaban que no llegara más. Por lo tanto, fallarían inmediatamente con un mensaje de error de "memoria insuficiente" o funcionarían como se esperaba. [ cita requerida ]

Los primeros sistemas operativos como MS-DOS carecían de soporte para multitarea . A los programas se les asignó memoria física que podían usar según lo necesitaran. La memoria física era a menudo un recurso escaso, y cuando se agotaba por aplicaciones como las que tenían la función Terminar y Permanecer residente , no se podían iniciar más aplicaciones hasta que se cerraban las aplicaciones en ejecución.

Los sistemas operativos modernos proporcionan memoria virtual, en la que los procesos reciben un rango de memoria, pero donde la memoria no corresponde directamente a la RAM física real. La memoria virtual puede estar respaldada por RAM física, un archivo de disco a través de mmap (en derivados de Unix ) o MapViewOfFile (en Windows), o espacio de intercambio, y el sistema operativo puede mover páginas de memoria virtual según sea necesario. Debido a que la memoria virtual no necesita estar respaldada por memoria física, es raro que se agote y, por lo general, existen otros límites impuestos por el sistema operativo en el consumo de recursos. [ cita requerida ]

Como predice la ley de Moore , la cantidad de memoria física en todas las computadoras ha crecido casi exponencialmente, aunque esto se ve compensado en cierta medida por el aumento de tamaño de los programas y archivos. En algunos casos, una computadora con soporte de memoria virtual donde la mayoría de los datos cargados residen en el disco duro puede quedarse sin memoria física pero no con memoria virtual, lo que provoca una paginación excesiva . Esta condición, conocida como thrashing , por lo general inutiliza la computadora hasta que se cierran algunos programas o se reinicia la máquina. Debido a estas razones, las aplicaciones con computadoras modernas rara vez encuentran un mensaje de falta de memoria. [ cita requerida ]

Sin embargo, todavía es posible encontrar una condición OOM con una computadora moderna. El caso típico de OOM en las computadoras modernas ocurre cuando el sistema operativo no puede crear más memoria virtual porque todos sus dispositivos de respaldo potenciales se han llenado o el usuario final los ha deshabilitado. La condición puede surgir debido a la copia en escritura después de fork().


Pantalla de falta de memoria en el sistema que ejecuta Linux Mint 9 (kernel 2.6.32)