next up previous
Next: Table of Contents Up: System Software and Previous: System Software and

Preface

SYSTEM SOFTWARE and SOFTWARE SYSTEMS: Concepts and Methodology is a work intended to offer a systematic treatment of the theory and practice of designing and implementing system software. This is achieved by structuring the hardware and software resources of a computer system as mathematical systems. The mathematical construction of formal systems is first examined and then is used to develop an appropriate concept of an ad hoc system that can model the hardware and the software resources managed by the system software. This approach of treating system software is motivated by the desire we and other gif have to further search for the intellectual substance of the computer science as suggested in the ``Denning Report'' gif

In this book, we use the methodology for handling algebraic systems to develop a systematic approach to constructing ad hoc systems. In doing so, the collection of computing objects defining the software of a computing installation is decomposed into a hierarchy of layers. Each layer of this hierarchy is constructed on top of the previous layers. The bare hardware is the predefined layer. The approach for constructing the hierarchy of layers and the methodology for specifying objects within layers are developed as computing systems constructed by the systematic approach for ad hoc system construction. The link between the software and hardware components that provides the hierarchical construction of the system software is the specification of each computing resource as a data type in terms of:

The initial layer in this hierarchy is essential. It is defined by the data representation of the hardware system. Therefore, the three classes of hardware components, that is, memories, processors, and I/O devices, are defined as data types.

The computational behavior of the subsystem components of the system software are defined by carefully choosing the notion of a process. A process is a formal specification of the computing activity performed by a processor while executing a computation task. The processor and its activity, ``the process,'' define the layer of the system software hierarchy implemented on the hardware level under the name ``process data type.'' The whole system software is further constructed on top of the process data type by means of the mathematical methodology previously presented. When compared with other texts on system software, this book offers more than just another enumeration of the actual components of the software of a given computer installation. A methodology for software system development and a framework for teaching and learning system software is offered.

The book is intended as a textbook for an introductory course on system software. However, a broad spectrum of professionals in computer science may benefit from it. It may help the beginner to start a proper academic education in the field. It may help teachers to find the appropriate framework for teaching. It may help researchers to identify the major problems in their area of interest as well as to find the suitable mechanisms to approach their solutions. The objects discussed in the book are mathematically constructed, but they are not idealized. That is, the objects discussed in this book are representations of real computations handled by system software while assisting problem solving with a computer.

In order to make this book self-contained, the book introduces the reader to the methodology used in mathematics to handle formal systems and develops the concept of an ad hoc system. The ad hoc system construction is then illustrated with a list management systems. The understanding of this material would be be facilitated by the background provided by the following computer science courses:

  1. a course in discrete mathematics
  2. a course in computer architecture
  3. a course in assembly language and assembly programming
  4. exposure to the data structures commonly used in computer science as well as to the formal concept of a data type
  5. some practice with using high-level programming languages in a programming environment (experience with C language programming is particularly useful).
The book is written in three volumes:

Volume 1: Systems Methodology for Software is dedicated to the discussion of systems methodology as a unifying approach applied to both hardware and software development. It introduces the language of systems and classifies the system software. The material presented in this volume is distributed in 5 chapters.

Both formal systems and ad hoc systems are discussed in Volume 1. The systematic approach for ad hoc system construction is developed as a tool for constructing hardware and software systems as objects manipulated by a computer installation. The mechanism used for this construction is the hierarchy of computing systems. The main components of the hierarchy defining the software of a computer installation are identified in terms of the services they provide to each other and the services all of them provide to the computer user. These services are classified according to their users (processes or programmers) as the Execution Support Environment and the Programming Support Environment. An overview of their evolution is also given.

Volume 2: Execution Support Environment, is dedicated to the discussion of the design and implementation of the software tools managing program execution. The material presented in this volume is distributed in chapters 6 through 12.

The execution support environment of a computer installation is organized as a hierarchy of software subsystems designed to assist a processor to execute programs. This part introduces the operating system. The discussion of the operating system is structured formally as layers well defined by a relationship. The system function call is used as a mechanism for achieving this relationship.

Volume 3: Programming Support Environment, is dedicated to the discussion of the design and implementation of the software tools used for program development. The material presented in this volume is distributed in chapters 13, 14, 15 and 16.

The programming support environment of a computer installation is organized as a hierarchy of software subsystems designed to assist the human user in program development. The relationship is applied again and the programming support environment is developed as the pair consisting of a control language and the processor that maps control language programs into appropriate computing processes. The concept of a command interpreted as a system program call is used as the mechanism for implementing the relationship. The objects studied in this part are mainly programs which are designed to solve various classes of problems. Translators, software tools, and application packages are the objects which are studied here. Their construction is illustrated by assemblers, loaders, and linkers.

The scope of this book is larger than of an undergraduate course. More topics are collected in this book than can be covered in a one semester undergraduate class. However, the organization of our material allows teachers to select from the topics of the book the sequence which fits best their interest in software development, and it provides the student with a logical body of knowledge for mastering the complexity of the system software. The sixteen chapters of the book are organized in four modules, each module containing four chapters (see Figure 0.1).

Module 1: chapters 1, 2, 3, and 5 provide the introductory material.
Module 2: chapters 4, 6, 7, and 8 discuss the process data type and the common paradigms for controlling process interaction. Processor management is a predefined process data type.
Module 3: chapters 9, 10, 11, and 12 cover the programming language constructs used for parallel process management: process creation, process execution, and controlling process interaction (chapter 9), and discuss the subsystems that manage other hardware resources (chapters 10 and 11 dedicated to internal and external memory management and chapter 12 dedicated to the I/O management subsystems).

 
Figure 0.1: Reading diagram

Module 4: chapters 13, 14, 15, and 16 introduce the reader into the realm of computer languages and their processors. A unified theory based on algebraic specification of languages allows us to discuss all types of computer languages and their processors.

In Figure 0.1 we denote by arrows the possible reading flows. Each module is organized in a diamond-shape where the vertexes are chapters of the module and the directed graph shows the reading relationship between these chapters. Any path in this diagram which goes from Begin to End would provide a logical sequences of topics. Our favorite sequence is: (1)(2)(3)(4)(5)(6)(7)(10)(12)(13)(15)(16)

The decision to split the material of this book in three volume was determined by contents, economical, and managerial factors.

  1. From the contents point of view there are three different kind of topics: topics that introduce the reader to the realm of systems and systems methodology for both hardware and software; topics that discuss the software tools used to control process execution and resource management; topics that discuss software tools used to control the process of program development. This motivates the names of the three volumes: Systems Methodology for Software, Execution Support Environment, and Programming Support Environment.
  2. Economically, one volume of the three volume book should be cheaper than a book containing the entire material. Each volume is a stand alone piece of work. Thus, having three volumes allows the reader to be selective in both buying and reading it.
  3. Managerially, a small book is much easier to manage than a big book. It occupies less space and can be easier manipulated in any situation. In addition, writing a small book can be a much pleasant exercise than writing a big book.
As observed so far, we suggested a modular use of this book as a textbook where the indicated modules of a course expand over more than one volume. The reason for this is the illustration of the relationship between a methodology and the objects handled by that methodology. The first volume concerns the methodology of systems and the manner in which it is applied for hardware and software development. Second and third volumes illustrate the application of this methodology and therefore at least one chapter in these volumes should be selected as a teaching target in an introductory course on system software. Following this methodology, material for more advanced courses on system software (such as operating systems, parallel programming, assemblers and loaders, compiler construction) can be modularly provided by this book. Of course, the reading lists at the end of each chapter as well as the reference list at the end of each volume provide hints for selecting other sources to enrich such a teaching exercise, if necessary.

Acknowledgment: we thank many generations of undergraduate and graduate students at the University of Iowa who have taken the class 22C:32, Introduction to system software, in the Department of Computer Science and have read this text. They helped us correct many bugs and typos and resolved most of the problems that accompany each section.

The authors



next up previous
Next: Table of Contents Up: System Software and Previous: System Software and



Teodor Rus
Wed Sep 25 13:48:24 CDT 1996