[A scenic desert tree] [Mojave]


Home
People
Research
Projects
Publications
Download
Laboratory
Support
CVSweb
Mailing Lists
Links
Funded by...

 

Mojave Project Overview

The Mojave research project is focused on the design of distributed systems that range in size from local area networks to large-scale systems that may be composed of thousands of cooperating processors. We use advanced programming languages and compiler techniques to develop design methods that ensure safety, reliability, and robustness in the presence of uncertainty and failure. Our specific goals include the following:

  • Distribution of resources, including computation time, should be as transparent as possible.
  • The distributed system should handle faults gracefully, including network and hardware failures.
  • Performance should be maintained even in the presence of faults.
  • Systems should scale efficiently to large numbers of members
  • Distributed services, including fault-tolerant distributed filesystems, distributed schedulers, and fault recovery algorithms. The compiler is an integral part in recovering from faults. The most promising direction is language and compiler support for speculative execution. When a failure occurs during a distributed speculation, the computation is "rolled-back", and restarted with a new state. With an adequate level of abstraction, the details of fault-recovery do not need to be addressed by the programmer.

We believe that programming languages, compilers, and operating systems must work together to address these problems. An operating system can address the problem of resource distribution for hardware resources, but sharing of the CPU resource requires cooperation from the compiler. We have several ongoing research activities in this direction.

  • Trustworthy, robust and extensible compilers implemented using formal and semi-formal methods.
  • Compilers for supporting process migration and distributed speculations. When a failure occurs in a distributed system, it is necessary to rebalance the network by migrating processes to new sites and restarting the computation from a well-known safe state.
One focus of our research is robustness and reliability. To address reliability adequately, we must understand the foundations of computation--what does a program do, what does it mean? Are there languages where program development is obvious? This is the domain of formal methods, and we are developing Logical Programming Environments, where we can specify new languages amenable to extensive optimization and verification.

Past research efforts include
  • Multi-language compilers. Large software systems are designed over an extended period of time, and different parts often have different design requirements. In general, "domain-specific" programming languages are used, together with "legacy" code written in languages like C. We develop integrated design environments where all of these languages can be combined and reasoned about. We currently support the C, Java, and ML programming languages in an automated design environment where programs can be synthesized from specifications. The compiler enforces safety: a process may access only those objects it has defined, and objects offered by other processes for sharing.
  • Multi-vehicle wireless testbed. In collaboration with Richard Murray's group in the Control and Dynamical Systems, we are building a robotic testbed composed of several autonomous vehicles communicating over a wireless network. The vehicles must must cooperate in real-time, even in the presence of network failures.


Webmaster | Contact Us | Generated on Sat Jan 27 19:01:32 PST 2007

Copyright (c) 2002-2006 Caltech Mojave Research Group.
Computer Science Department, California Institute of Technology