En informática , la coloración de caché (también conocida como coloración de página ) es el proceso de intentar asignar páginas libres que sean contiguas desde el punto de vista de la caché de la CPU, con el fin de maximizar el número total de páginas almacenadas en caché por el procesador. La coloración de caché se emplea normalmente en el código de asignación de memoria dinámica de bajo nivel en el sistema operativo , al asignar memoria virtual a memoria física . Un subsistema de memoria virtual que carece de coloración de caché es menos determinista con respecto al rendimiento de la caché, ya que las diferencias en la asignación de páginas de un programa ejecutado al siguiente pueden generar grandes diferencias en el rendimiento del programa.
Una caché de CPU indexada físicamente está diseñada de tal manera que las direcciones en bloques de memoria física adyacentes toman posiciones diferentes ("líneas de caché") en la caché, pero este no es el caso cuando se trata de memoria virtual; cuando se asignan bloques de memoria virtualmente adyacentes pero no físicamente adyacentes, ambos podrían potencialmente tomar la misma posición en la caché. La coloración es una técnica implementada en el software de administración de memoria, que resuelve este problema seleccionando páginas que no compiten con páginas vecinas.
Las páginas de memoria física están "coloreadas" de modo que las páginas con diferentes "colores" tienen diferentes posiciones en la memoria caché de la CPU. Al asignar páginas secuenciales en la memoria virtual para los procesos, el núcleo recopila páginas con diferentes "colores" y las asigna a la memoria virtual. De esta manera, las páginas secuenciales en la memoria virtual no compiten por la misma línea de caché.
Este código añade una cantidad significativa de complejidad al subsistema de asignación de memoria virtual, pero el resultado bien vale el esfuerzo. [1] La coloración de páginas hace que la memoria virtual sea tan determinista como la memoria física con respecto al rendimiento de la memoria caché. La coloración de páginas se emplea en sistemas operativos como Solaris , [2] FreeBSD , [1] NetBSD , [3] y Windows NT . [4]