El sistema operativo Solaris utiliza un sistema de memoria virtual paginado de demanda. Mientras se ejecuta el sistema, se traen las páginas a la memoria según sea necesario. Cuando la memoria está ocupada por encima de un umbral determinado y la demanda de memoria continúa, comienza la paginación. Ésta pasa por varios niveles controlados por algunos parámetros.
El algoritmo general de paginación es el siguiente:
Se observa un déficit de memoria. El subproceso de exploración de páginas se ejecuta y comienza a pasar por la memoria. Se utiliza un algoritmo de dos pasos:
Una página se marca como no utilizada.
Si pasado un intervalo de tiempo sigue sin utilizarse, la página se ve como sujeta a reclamación.
Si la página se ha modificado, se realiza una solicitud al thread pageout para que programe la página para E/S. También, el escáner de página continúa buscando en la memoria. La extracción de páginas de la memoria hace que la página se escriba en el almacenamiento de respaldo de la página y que se coloque en la lista libre. Cuando el explorador de páginas explora la memoria, no se realiza distinción sobre el origen de la página. La página podría provenir de un archivo de datos, podría representar una página de un texto, una pila o de datos ejecutables.
A medida que la presión de la memoria sobre el sistema aumenta, el algoritmo se vuelve más enérgico en las páginas que considera candidatas a ser reclamadas y en la frecuencia con la que se ejecuta el algoritmo. (Para obtener más información, consulte fastscan y slowscan). Debido a que la memoria disponible está dentro del rango lotsfree y minfree,el sistema aumenta en forma lineal la cantidad de memoria explorada en cada llamada del thread de extracción de páginas de la memoria desde el valor especificado por slowscan hasta el valor especificado por fastscan. El sistema utiliza el parámetro desfree para controlar una cantidad de decisiones sobre el uso de recursos y el comportamiento.
El sistema inicialmente se restringe a sí mismo para no utilizar más del 4 por ciento de una CPU para operaciones de pageout. A medida que la presión de la memoria aumenta, la cantidad de tiempo de CPU consumido para soportar operaciones de pageout aumenta de manera lineal hasta que se consume un máximo de 80% de un CPU. El algoritmo se busca cierta cantidad de memoria entre slowscan y fastscan, luego se detiene cuando ocurre una de las siguientes situaciones:
Se encontraron suficientes páginas como para satisfacer la falta de memoria.
Se revisó la cantidad planificada de páginas.
Demasiado tiempo transcurrido.
Si todavía falta memoria al finalizar la exploración de la extracción de páginas de la memoria, se programa otra exploración para 1/4 segundos en el futuro.
El mecanismo de configuración del subsistema de paginación ha cambiado. En lugar de depender de un conjunto de valores predefinidos para fastscan, slowscan y handspreadpages, el sistema determina la configuración apropiada para estos parámetros en el momento del inicio. La configuración de cualquiera de estos parámetros en el archivo /etc/system puede hacer que el sistema utilice menos valores óptimos.
![]() | Precaución - Elimine todos los parámetros ajustables del sistema VM del archivo /etc/system. Ejecute con los valores predeterminados y determine si es necesario ajustar alguno de estos parámetros. No defina cachefree ni priority_paging. |
Se admite la reconfiguración dinámica (DR) para la CPU y la memoria. Un sistema en una operación de DR que implica la agregación o la supresión de memoria vuelve a calcular valores para los parámetros pertinentes, a menos que el parámetro se haya definido explícitamente en /etc/system. En ese caso, se utiliza el valor especificado en /etc/system, a menos que se viole una restricción en el valor de la variable. En este caso, el valor se restablece.