The Spring kernel has been designed and implemented to support/provide predictability, on-line dynamic guarantees, atomic guarantees, end-to-end scheduling and resource reservations. In effect it supports a "call/task admission" paradigm. It utilizes a micro-kernel design for multiprocessor architectures and provides an interface to remote processes, support for distributed shared memory, and predictable low level communication. A key aspect of the kernel is its reflective nature. The reflective aspects supports flexibility and robustness. The kernel exists as a component of Spring's integrated environment that includes compilers, system description languages, etc. This environment extracts significant semantic information and this information is used at runtime to support flexibility and predictability. A real-time threads facility uses kernel level threads which we believe is necessary in a real-time system.
Embedded systems are proliferating at an amazing rate with no end in sight. In 1998 only 2% of all processors where used for general purpose workstations and 98\% for embedded systems. The percentage of processors used for workstations is rapidly approaching 0% for the year 2000. Success of embedded systems depends on low cost, a high degree of tailorability, quickness to market, cost-effective variations in the product, and sometimes flexible operation of the product. The reliability of these products and the degree of configurability will become paramount concerns. Currently, there is no efficient way to build software for these systems. The use of component based software for constructing and tailoring these systems has promise. However, most components are too heavyweight and don't explicitly address real-time, memory, power and cost constraints. What is required is a new type of component that is lightweight and relates to the physical and real-time properties of embedded systems.
Our research is aiming at enhancing the process of building reliable software for the embedded systems revolution that is underway. We intend to apply our components, and configuration and analysis tools to several products such as set top boxes and multimedia mobile phones as proofs of concept. Our goal is to develop techniques that are general enough to construct any of the following types of systems: a static and fixed embedded system at low cost (e.g., software for a wrist watch), networked and long lived embedded systems that can be made more evolvable by hot swapping both hardware and software (e.g., air traffic control), and a reflective runtime environment to support a high degree of adaptability (e.g., air traffic control or even a set top box that sometimes acts to download movies, at other times as a PC, or to run games). In particular, we are currently trying to construct and analyze real-time operating systems for different embedded systems.