Cercanía de referencias
# Cercanía de referencias

En sistemas operativos se denomina cercanía de referencias al agrupamiento de las lecturas de memoria por medio de la unidad central de procesamiento. Las mismas, ya sean para instrucciones o para leer datos, se mantienen por lo general dentro de grupos de direcciones relativamente cercanas entre sí.

## Observaciones

Este principio se da porque los programas normalmente cuentan con un cierto número de bucles y subrutinas iterativas. Una vez dentro de una de estas estructuras, se producirán referencias repetidas a un pequeño conjunto de instrucciones. Las agrupaciones de uso con el tiempo son variables, pero considerando un período corto, se mantienen fijas.

Este principio, demostrado en la práctica, es fundamental en la utilización de diferentes tecnologías de la jerarquía de memoria para lograr un desempeño favorable. Además permite mejoras substanciales de velocidad cuando se utilizan mecanismos de caché de memoria, como el TLB.

La cercanía de referencias también implica que para que un programa ejecute no son necesarias todas sus páginas cargadas en la memoria principal. Si en un período corto de tiempo el procesador referencia direcciones cercanas de memoria, un proceso puede ejecutar varias instrucciones con sólo algunas partes de su código en memoria principal. Esto permite tener más procesos en memoria listos para correr, como así también evita tener que cargar y descargar sus páginas en el momento de un intercambio, perdiendo ciclos del procesador.

## Localidad de las referencias

La localidad de las referencias, también conocida como el principio de localidad, es un fenómeno según el cual, basándonos en el pasado reciente de un programa podemos predecir con una precisión razonable qué instrucciones y datos utilizará en un futuro próximo.

Los casos más importantes de localidad son la localidad espacial, la localidad secuencial y la localidad temporal.

* Localidad Temporal: si en un momento una posición de memoria particular es referenciada, entonces es muy probable que la misma ubicación vuelva a ser referenciada en un futuro cercano. Existe proximidad temporal entre las referencias adyacentes a la misma posición de memoria. En este caso es común almacenar una copia de los datos referenciados en caché para lograr un acceso más rápido a ellos.
* Localidad Espacial: si una localización de memoria es referenciada en un momento concreto, es probable que las localizaciones cercanas a ella sean también referenciadas pronto. Existe localidad espacial entre las posiciones de memoria que son referenciadas en momentos cercanos. En este caso es común estimar las posiciones cercanas para que estas tengan un acceso más rápido.
* Localidad Secuencial: Las direcciones de memoria que se están utilizando suelen ser contiguas. Esto ocurre porque las instrucciones se ejecutan secuencialmente.

Para obtener beneficios de la gran frecuencia con la que ocurren casos de localidad espacial o temporal, muchos sistemas de memoria utilizan una jerarquía de niveles de memoria.

