it is actually reasonable assumption to make one justification for this assumption is that it is often necessary to assume that all memory accesses take the same amount of timesince specific device-dependent information about memory sizes is often hard to come by in factinformation about memory size may be impossible to get for examplea java program that is designed to run on many different computer platforms cannot be defined in terms of specific computer architecture configuration we can certainly use architecture-specific informationif we have it (and we will show how to exploit such information later in this but once we have optimized our software for certain architecture configurationour software will no longer be device-independent fortunatelysuch optimizations are not always necessaryprimarily because of the second justification for the equal-time memory-access assumption caching and blocking another justification for the memory-access equality assumption is that operating system designers have developed general mechanisms that allow for most memory accesses to be fast these mechanisms are based on two important locality-ofreference properties that most software possessestemporal localityif program accesses certain memory locationthen it is likely to access this location again in the near future for exampleit is quite common to use the value of counter variable in several different expressionsincluding one to increment the counter' value in facta common adage among computer architects is that " program spends ninety percent of its time in ten percent of its code spatial localityif program accesses certain memory locationthen it is likely to access other locations that are near this one for examplea program using an array is likely to access the locations of this array in sequential or nearsequential manner computer scientists and engineers have performed extensive software profiling experiments to justify the claim that most software possesses both of these kinds of locality-of-reference for examplea for-loop used to scan through an array will exhibit both kinds of locality temporal and spatial localities havein turngiven rise to two fundamental design choices for two-level computer memory systems (which are present in the interface between cache memory and internal memoryand also in the interface between internal memory and external memorythe first design choice is called virtual memory this concept consists of providing an address space as large as the capacity of the secondary-level memoryand of transferring data located in the secondary levelinto the primary levelwhen they