Ctk: Conngurable Object Ab Stractions for Multiprocessors 1 Attaining High Performance by Dynamic Connguration 1.1 Background 1.2 Contributions 2 Related Research 2.1 Operating Systems and High Performance Computing 2.2 Real-time and Object-based Systems 3 the Connguration Toolkit (ctk) 3.1 Motivati

promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE. Abstract The Connguration Toolkit (CTK) is a library for constructing conngurable object-based abstractions that are part of multiprocessor programs or operating systems. The library is unique in its exploration of runtime connguration for attaining performance improvements: (1) its programming model facilitates the expression and implementation of program connguration, and (2) its eecient runtime support enables performance improvements by connguration of program components during their execution. Program connguration is attained without compromising the encapsulation or the reuse of software abstractions. CTK programs are conngured using attributes associated with object classes, object instances , state variables, operations, and object invocations. At runtime, such attributes are interpreted by policy classes, which may be varied separately from the abstractions with which they are associated. Using policies and attributes, an object's runtime behavior may be varied by (1) changing its performance or reliability while preserving the implementation of its functional behavior or (2) changing the implementation of its internal computational strategy. CTK's multiprocessor implementation is layered on a Cthreads-compatible programming library, which results in its portability to a wide variety of uni-and multi-processor machines, including a Kendall Square KSR-2 Supercomputer, SGI machines, various SUN workstations, and as a native kernel on the GP1000 BBN Butterry multiprocessor. The platforms evaluated in this paper are the KSR and SGI machines. To attain high performance, scalability, and extensibility, two important properties of application programs and operating system components are (1) the separation of basic component functionality from aspects governing performance and (2) the connguration of those aspects to maintain high performance despite variations in a component's use and execution environment. For example, for complex multi-media and real-time applications, Quality of Service (QoS) requirements and the resource allocation functions used to enforce these requirements are routinely separated from the applications' basic functionalities. Furthermore, runtime adjustments to requirements, service levels, and to associated resource allocations are frequently necessary. For distributed media applications, such functionality is exempliied by enhancements of communication mechanisms with quality of service parameters and with policy-level (policing and bandwidth reservation) functionalityy18, 19]. For real-time and embedded applications, researchers have developed languages for stating service contracts and methods for adapting programs at runtime to meet such contract obligationss42, 43]. In addition, there are formulations …