CITS2002 Systems Programming  
next CITS2002 CITS2002 schedule  

The Principle of Referential Locality

Numerous studies of the memory accesses of processes have observed that memory references cluster in certain parts of the program: over long periods, the centres of the clusters move, but over shorter periods, they are fairly static.

For most types of programs, it is clear that:

  • Except for infrequent branches and function/procedure invocation, program execution is sequential. The next instruction to be fetched usually follows the last one executed.
  • Programs generally operate at the same "depth" of function-invocation. References to instructions cluster within (and between) a small collection of functions.
  • Most iterative control flow (looping) is over short instruction sequences. Instructions from the same memory locations are fetched several times in succession.
  • Access to memory locations holding data is, too, constrained to a few frequently required data structures, or sequential steps through memory (e.g. when traversing arrays).

With reference to paging schemes, this locality of reference suggests that, within a process, the next memory reference will very likely be from the same page as the last memory reference.

This will impact heavily on our next enhancement to memory management: the use of virtual memory.


CITS2002 Systems Programming, Lecture 14, p1, 8th September 2020.