The current focus of the Computing Communities project is on transparently endowing unmodified general-purpose Win32 applications (running on Windows NT platforms) with a representative subset of the CC features.
A CC is realized by first "lifting" an application off of the base operating system. Central to our design is the well-known technique of API interception, increasingly relevant given current-day OS structures that delegate a large portion of the OS functionality to dynamically-linked libraries (DLLs). We use existing API interception techniques as a means of interfacing the application with our middleware layers.
Our current research is focused on the following three areas:
We have prototyped different techniques for exploiting the base API interception technique to achieve complete efficient virtualization of various system resources (output, files, network connections, etc.). Additional details about these prototypes can be found in the CANPC'00, ICDCS'00, and USENIX-WSS'00 papers. Current efforts are focused on developing a general API interception and replay framework which can automatically synthesize VOS components starting from a high-level specification of required virtualization functionality.
Application-aware techniques provide an API for CC-aware applications
that allows computations to become aware of and gracefully adapt
themselves to changes in CC resource characteristics. Our approach
combines a natural, high-level specification of alternate application
execution paths (collectively referred to as a tunable application) with an automatic
run-time strategy for invoking these paths as necessary. Additional details
about the adaptation framework can be found in the IPPS/SPDP'99,
As an example of application-oblivious adaptation techniques, we have been working on a system called CANS: Composable Adaptive Network Services. CANS generalizes the notion of a network path connecting client and server applications into a network-aware data path augmented with stream-specific drivers. These drivers are inserted transparently into the data path, based upon high-level type specifications of client and server behaviors, and the underlying network. The CANS architecture is described in a USITS'01 paper. A more recent technical report describes and evaluates planning and reconfiguration algorithms for selecting and mapping an appropriate combination of drivers under (possibly dynamically changing) different network conditions. Additional details about the CANS project can be obtained here.
We are investigating efficient, scalable methods for expressing and scheduling such dynamic resource sharing agreements in large distributed environments, together with the system support required to enforce these agreements in an application-oblivious fashion. Our SC'2000 paper describes a scheme that exploits the notion of tickets and currencies for expressing such agreements, and proposes a linear-programming scheme for their transitive enforcement. A redirector-based architecture for distributed enforcement of sharing agreements is described in a recent report.