Customizing System Software Using OO Frameworks

  • Authors:
  • Nayeem Islam

  • Affiliations:
  • -

  • Venue:
  • Computer
  • Year:
  • 1997

Quantified Score

Hi-index 4.10

Visualization

Abstract

Today's applications have exploded in their diversity, but most operating systems are still general-purpose and inefficient. One of the benefits of using an OO approach is the ability to modify very small details of an operating system, which makes it easy to tailor the system to the application. There has been an explosion of applications over the last few years. The behavior of modern applications, such as multimedia packages, parallel applications, and groupware, is diverse. Yet the operating systems they run on are usually optimized for an "average" application. Designing a general-purpose operating system that provides the best performance for every application is difficult. My experience indicates that optimizing an operating system for the general case can result in mediocre performance for specialized applications, especially parallel applications. Therefore, I envision a customizable operating system built from components that will allow an optimal match between application behavior and hardware architecture. I propose an object-oriented operating system in which design frameworks support alternative implementations of key systems software services. The most challenging part of designing a framework is to make it reconfigurable. For example, a configuration rule might improve an application's performance by replacing some of the operating system's data structures with subclasses of those structures. I propose a reconfigurable framework that implements different policies, depending on the framework subclass used. There are other approaches to customization. Compilers can be used when there is considerable information about an application domain. Design patterns are a mechanism for specifying designs that are at a higher level than frameworks. Frameworks fall somewhere between a compiler-based approach and design patterns. In my approach, each framework separates implementation details from the subset design, which is expressed as a set of abstract classes and their interrelationships. To customize its support, the operating system uses hints supplied by the application and a monitoring system to select the subclasses that are best suited to the application. Here I illustrate the method with a parallel application.