Options
2000
Conference Paper
Title
Operating Systems: are we finally ready to move forward after 30 years of stagnation?
Abstract
If there are areas of Computer science that were left behind by the market, operating systems is certainly one of them. The products currently available in the area, namely Microsoft WINDOWS and UNIX, owe their designs to projects such as THE [1] and MULTICS [4], which are at least 30 years old. In the meanwhile, several new "hacks" have been proposed, but very few Systems brought about revolutionary designs. The partitioning of the problem domain in abstractions like process and file is so old that some people regard it as a "canonical" one. The scene is even worse if one takes in consideration that only 2% of the microprocessors produced in the year 2000 targeted the interactive market [6], for which those operating systems have been designed. The Software industry spent 30 years saying that there are not many things to be improved in the operating system area [5], but left 98% of market without a choice! Innumerable software engineering techniques have been proposed for the development of applicative software, many of them are now mature and widely used in production. Nevertheless, not many operating system developers have tried to deploy them, or to adapt them, to the development of their products. We believe that several of these techniques can be successfully deployed in the area of operating systems with minor adjusts, as long as we reformulate our view of the corresponding domain. Of course we are dealing with a very special field. A field where words such as asynchronism and determinism have very special meanings. A field pressed to squeeze the last bit of performance and to blow overhead away without relaxing an correctness. Anyway, by now we should be ready to make it up with software engineering and move forward with operating system design. We developed a novel operating system design method that addresses many of the questions raised above. Deeply influenced by object-oriented design, but also by family-based design, collaboration-based design, aspect-oriented programming and generative programming, our method enables the development of operating systems as an assemblage of reusable and adaptable components. Our method produces systems that can be tailored to fulfill the requirements of any particular application, without disregarding any of the quality metrics compulsory to the field. Indeed, applications play such a major role that we decided to name the method application-oriented System design. In summary, our method conducts the partitioning of the. problem domain in scenario-independent, application-ready abstractions that will shape the components of the resulting system. Because these ab This combination of objects, collaborations, and aspects may Sound low-performing. However, our method proposes abstractions to be arranged in a statically metaprogrammed component framework, so that compositions are carried out during compilation, resulting in virtually no run-time overhead. Such frameworks define the relationships between abstractions in terms of scenario-adapters, hence capturing a reusable system architecture. If the target application does not need this or that abstraction, the corre continuing the development for the Cluster domain, we will soon deploy application-oriented system design to the embedded systems domain.
Language
English
FIRST