In this thesis we develop \emph{preload}, a daemon that prefetches binaries
and shared libraries from the hard disk to main memory on desktop computer
systems, to achieve faster application start-up times.  Preload is adaptive: it
monitors applications that the user runs, and by analyzing this data, predicts
what applications she might run in the near future, and fetches those binaries
and their dependencies into memory.

We build a Markov-based probabilistic model capturing the correlation between
every two applications on the system.  The model is then used to infer the
probability that each application may be started in the near future.  These
probabilities are used to choose files to prefetch into the main memory.
Special care is taken to not degrade system performance and only prefetch when
enough resources are available.

Preload is implemented as a user-space application running on Linux 2.6
systems.
