Managers
Overview
Managers are responsible for maintaining a consistent and recoverable stable
copy of the data represented by the container. It is only within a manager that
the distinction between persistent and ephemeral data is apparent. Managers are
free to provide resilient persistent storage using the mechanism most
appropriate to the kind of data being managed.
Managers alone are not able to maintain a system-wide consistent state.
Grasshopper therefore provides intrinsic mechanisms (described here) by which
the system can always recover a globally consistent state. In line with the
goals of orthogonal persistence, this is achieved without imposing the
requirement that user code (other than manager code) participate in the
mechanism. Users only perceive resilient persistent address spaces.
Furthermore, Grasshopper provides this mechanism in such a way that individual
managers may use their own optimised stability protocols and still coexist
within the Grasshopper framework.
Managers are ordinary programs which reside and execute within their own
containers; their state is therefore resilient. Managers are responsible for:
- provision of the pages of data stored in the container,
- responding to access faults, and
- receiving data removed from physical memory by the kernel.
- implementation of a stability algorithm for the container i.e. they
maintain the integrity and resilience of data, and
- maintenance of coherence in the case of distributed access to the
container.
A manager is invoked whenever the kernel detects a memory access fault to data
stored in the container it manages. Making data accessible in a container
takes place in two steps:
- the manager associated with a particular address range must be identified,
and,
- the appropriate manager is requested to supply the data.
The kernel is responsible for identifying which manager should be requested to
supply data. This is achieved by traversing the container mapping hierarchy.
Once the correct manager has been identified, the kernel requests this manager
to supply the data. The manager must deliver the requested data to the kernel,
which then arranges the hardware translation tables in such a way that the data
is visible at an appropriate address in the container.
In Grasshopper, the manager is the only mechanism by which data migrates from
stable to volatile storage. This is in contrast to conventional operating
systems in which the usual abstraction of stable storage is the file system.
Grasshopper has no file system in the conventional sense. Managers are
responsible for maintaining a resilient copy of the data in a container on
stable media. It is only within a manager that the distinction between
persistent and ephemeral data is apparent. Managers can provide resilient
persistent storage using whatever mechanism is appropriate to the type of data
contained in the managed container.
See Also
Proxy
Local Container Descriptors
Page sets
Disks