Francis Vaughan Thesis Abstract
Persistent object systems greatly simplify programming tasks, since they hide the
traditional distinction between short-term and long-term storage from
the applications programmer. As a result, the programmer can operate at
a level of abstraction in which short-term and long-term data are treated
uniformly. In the past most persistent systems have been constructed above
conventional operating systems and have not supported any form of distributed
programming paradigm. In this thesis we explore the implementation of
orthogonally persistent systems that make direct use of the attributes
of paged virtual memory found in the majority of conventional computing
platforms. These attributes are exploited to support object movement for
persistent storage to addressable memory, to aid in garbage collection,
to provide the illusion of larger storage spaces than the underlying architecture
allows, and to provide distribution of the persistent system. The thesis
further explores the different models of distribution, notably a one world
model in which a single persistent space exists, and a federated one in
which many co-operating spaces exist. It explores communication mechanisms
between federated spaces and the problems of maintaining consistency between
separate persistent spaces in a manner which ensures both a reliable and
resilient computational environment. In particular characterising the
interdependencies using vector clocks and the manner in which vector time
can be used to provide a complete mechanism for ensuring reliable and
resilient computation. The thesis concludes with a description of a new
operating system design in which support for the mechanisms described
earlier are intrinsic in the design. This operating system is able to
provide orthogonal persistence in a distributed environment with no effort
on the part of users of the operating system.