Hay dos factores en juego.
Trucos DRAM no tan estúpidos
Cuando tiene un sistema que se está quedando sin almacenamiento DRAM, el sistema tiene que encontrar más memoria o las aplicaciones fallan.
- ¿Cómo funciona RFID y cuál es la relación entre el lector RFID y las etiquetas?
- ¿Es posible que Theranos sea un fraude total, un castillo de naipes completo?
- ¿Qué pasaría si todos los empleados de Google y Facebook murieran?
- ¿Cómo era salir a cenar antes de la era de las reseñas en línea?
- ¿Por qué los fabricantes de discos duros pueden comercializar discos diciendo 1kb = 1000 bytes?
En una PC, usa lo que se ha llamado memoria virtual. Su PC está usando eso ahora, pero si tiene suficiente DRAM, nunca lo nota realmente. VM permite que un programa de computadora básicamente asuma que la memoria existe y se ocupa de la realidad de esa pregunta más adelante. También se usa para ocultar programas entre sí: en la mayoría de los sistemas operativos, cada programa piensa que es el único, en las mismas direcciones de memoria virtual, que cambian de un programa a otro.
VM resuelve la crisis de memoria al asignar la memoria de datos al almacenamiento en disco duro, que por supuesto puede ser 1000 veces más lento que DRAM. Entonces, un programa necesita algo de DRAM, y no queda suficiente … ¿qué hacer? Su aplicación no hace nada: cree que ya tiene esa memoria, pero fue asignada “especulativamente”, digamos. La CPU trató de golpear un trozo de memoria, y no existe. La unidad de administración de memoria en su CPU causa un “fallo de página”, que atrapa al subsistema VM del sistema operativo. Ese sistema mira las páginas de DRAM, encuentra algo que no se ha usado recientemente y lo tira, luego vuelve a asignar esa memoria para que sea la porción que falta que su aplicación necesitaba. La rutina de captura existe, la CPU está recuperando ese trozo de memoria faltante y tiene éxito. Todo es bueno.
Sin embargo, toda esa rutina de trampa, el descarte de páginas viejas y la asignación de otras nuevas, se está ejecutando principalmente a velocidades de disco duro. Si esto sucede raramente, no se da cuenta … puede haber fragmentos de memoria que se asignan pero nunca se ejecutan, código de inicio que se ejecuta solo una vez, etc. Pero si cada tarea comienza a golpear trampas VM, la velocidad general de los sistemas se aleja de Velocidad DRAM y hacia velocidades de HDD. El sistema puede ralentizarse muy, muy notablemente.
Master App Control
En sistemas operativos móviles como Android e iOS, es diferente. Estos sistemas no usan paginación de memoria virtual de esta manera, porque no hay disco, solo una porción relativamente pequeña de memoria flash, al menos originalmente en un chip eMMC que no es particularmente rápido. Cambiar a flash sería una locura lenta y desgastaría esa memoria flash.
A medida que el sistema operativo de su teléfono comienza a quedarse sin memoria, puede ejecutar un “recolector de basura” si tiene una naturaleza altamente dinámica. Puede haber secciones de memoria que “se pierden” por una aplicación y no se liberan cuando se hace con, o mediante una programación diferida. El recolector de basura rastrea el uso de la memoria y desasignará la memoria no utilizada cuando no sea necesario. Esto se hace principalmente de forma incremental en estos días, pero si se hace de una vez, puede provocar una gran pausa en todo el sistema operativo.
Los sistemas operativos móviles tienen la capacidad de cerrar aplicaciones, completamente o solo en pedazos. El sistema operativo puede enviar mensajes a otras aplicaciones para cerrarse, liberando así recursos. Este proceso, por supuesto, lleva tiempo, ya que cada aplicación puede decidir “congelar” sus datos en un formato que permita que la aplicación se “descongele” de nuevo a donde la dejó la próxima vez que se cargue. Todo esto lleva tiempo y energía, por lo que, a diferencia de los sistemas operativos de escritorio, los sistemas operativos móviles mantienen las aplicaciones en la memoria hasta que necesitan ser cerradas por sus recursos. Una de las razones por las que muchas aplicaciones móviles no tienen una opción de “cerrar” o “cerrar”, el sistema operativo puede hacerlo de manera muy limpia.
Almacenamiento de discos y flash
Los sistemas también pueden ralentizarse a medida que se queda sin almacenamiento permanente. Esto generalmente no será tan profundo, pero es lo suficientemente común.
A medida que cualquier volumen de almacenamiento, HDD, SSD, eMMC, etc. comienza a llenarse, el sistema operativo puede tener problemas de rendimiento. El más grande es la fragmentación de volumen. Idealmente, si asigna, por ejemplo, un archivo de 10 MB, ese archivo será una porción contigua de flash o espacio en disco. Pero en un sistema de archivos abarrotado, puede que simplemente no queden 10 MB contiguos en el dispositivo de almacenamiento, incluso si en realidad queda bastante espacio de almacenamiento. La asignación y eliminación repetidas de bloques (generalmente entre 512 bytes y 16K cada una) deja un pequeño bolsillo de bloques libres en todo un disco.
Entonces, cuando llega el momento de asignar almacenamiento, el sistema operativo del disco tarda más en entregar esa solicitud de almacenamiento. Las computadoras son realmente eficientes para hacer cosas grandes, no tan eficientes para hacer cosas pequeñas. Hay una sobrecarga fija para leer una serie contigua de bloques para cualquier unidad de almacenamiento, independientemente del tiempo para leer ese almacenamiento. Entonces, si lee esos 10 MB completos de una sola vez, muy eficiente, no se nota el tiempo de configuración. Pero si esos 10 MB se almacenan en un disco de 2.560 bloques no contiguos en el peor de los casos, ese tiempo de configuración se vuelve significativo.
Por supuesto, es peor con el disco duro, porque además tiene un tiempo de búsqueda para colocar los cabezales de la unidad físicamente sobre los sectores necesarios. En realidad, puede escuchar esto en un disco muy fragmentado, por lo que esta condición se ha denominado “paliza”. Lo mismo puede suceder en un SSD u otro almacenamiento flash, simplemente no lo oye y no hay tiempo de “búsqueda”, pero aún tiene un tiempo de configuración finito por fragmento para leer o escribir esos datos.
Aprovechando todos los recursos
También hay optimizaciones, en RAM o almacenamiento, que un sistema operativo puede usar cuando los recursos son abundantes. Uno grande es el almacenamiento en caché dinámico. Si se trata de datos que se mueven hacia / desde el disco y la RAM, o hacia / desde Internet y el disco, a menudo es una gran victoria para el caché las copias locales de los datos, para leer con anticipación y obtener los datos que puedan ser necesarios, La memoria RAM o el almacenamiento no utilizados no ayudan a su PC, por lo que los sistemas operativos modernos emplean estas cosas: lectura especulativa y almacenamiento en caché.
Una vez que los recursos se agoten, el sistema operativo comenzará automáticamente a eliminar estas optimizaciones. Eso hará que las cosas funcionen más lentamente, y en dispositivos móviles, probablemente también lleve a una vida útil de la batería más corta, ya que los cachés siempre están en la memoria más cerca de la CPU y, por lo tanto, menos energía para acceder a los datos almacenados en caché que los datos originales .