![]() |
Athena1
|
Operating system memory management has traditionally been
responsible for
caching secondary storage without regard to the nature of either the
applications above it or the devices beneath it. Its primary goal has
been to
provide the illusion of an infinite amount of physical memory and hide
the increased latency of accessing secondary storage through mechanisms
such
as paging, caching, write-back and prefetching. Such mechanisms are
largely
independent of each other and oblivious to the actual timing of I/O
operations.
However, emerging design goals, such as energy efficiency, operation under weak connection or disconnection and efficient support for a large variety of secondary storage devices with very different performance, power, availability and reliability characteristics, require a reevaluation of memory management policies. Power efficiency increases the importance of the actual timing of I/O operations, since I/O devices (hard disks, wireless cards) save energy through non-operational low-power modes that exploit relatively long periods of inactivity. Coordination of I/O requests across devices and applications and cooperation between memory management mechanisms is necessary in order to create bursty access patterns that can improve dramatically energy efficiency. Similarly, operational low-power modes as in recent proposals for multi-speed disks suggest the need for smooth access patterns that can tolerate lower bandwidth for significant periods of time. Memory management for the next generation of I/O devices may have to switch between smooth low-bandwidth operation and bursty high-bandwidth operation depending on the offered workload. Reliability and availability of data stored remotely or on portable I/O devices requires replication of data. The traditional caching and paging mechanisms that transfer data between memory and I/O devices should be extended with the ability to transfer data among those devices as well. Data replication at the memory management level provides also the opportunity to design policies that load data from the I/O device that satisfies best user demands for performance and energy efficiency. Finally, optimal performance requires the design of memory management policies that are aware of the varying performance characteristics of the underlying I/O devices.