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. For that we define the system software of a computer installation as the collection of programs and documents that offer services to the users of that computer installation in order to make it convenient and efficient to use. There are two major classes of users of a computer installation: (1) processes executing on processors and (2) programmers developing their programs. Thus, the components of the system software are classified as the execution support environment providing services to program execution and programming support environment providing services to program development. Volume 1, Systems Methodology for Software, presents the methodology used for this structuring. Volume 2, Execution Support Environment, is dedicated to the design and implementation of the software tools managing program execution.
The execution support environment of a computer installation
is organized as a hierarchy of software subsystems
designed to assist a processor while executing programs.
The operating system is the example of an execution support
environment. The presentation of the execution support environment
is structured on a hierarchy of layers. Each layer of this hierarchy
is a collection of components well defined by a
relationship.
The components of these layers are
designed as data types managing hardware or software resources.
The data carriers of these data types are the data representations
of the resources manipulated by them. The operations characterizing
each of these data types are provided as services to other
components of the execution support environment. The system
function call is used as a mechanism for achieving this
relationship.
Examples of layers of system software components that belong to the
execution support environment are the process management system,
the memory management system, and the information management system. The
components of these software layers in turn are programs that may execute
on processors and when they do so, they may benefit from services
provided by other components of the execution support
environment. This is the relationship that allows us to organize
the execution support environment as a hierarchy of layers,
where a higher layer of the hierarchy benefits from the services
provided by the lower layers of this hierarchy.
The execution support environment is characterized by such criteria as efficiency and convenience of the tools it contains, tool integration in the environment, and the interaction of these tools among them and with their users. The convenience of the tools that belong to the execution support environment is determined by the mechanism of their integration in the environment and the interaction with their users. The efficiency of the tools that belong to the execution support environment is determined by their capability to share resources and to perform in parallel.
The components of the execution support environment are integrated through the instruction cycle of the processor. That is, whenever a tool of the environment requires support from another tool this is expressed as a machine language instruction that is interpreted by the processor as a request to another component of the environment. These machine language instructions are accessible in a high-level language as system calls. The mechanism of process interaction in the execution support environment is achieved by either sharing or exchanging messages. Solving problems with a computer can be represented by a graph having processes as nodes and the relations between processes as edges.
The three interaction mechanisms among the components of the execution support environment that labels the edges of a problem solving graph are calling, sharing, and sending messages.
The calling mechanism characterizes the decomposition of a complex computing task into smaller units and has been successfully utilized in sequential programming since its development. Therefore, the calling mechanism is available in high-level languages in the forms of a macro call, a function call, and a system call. The interaction by sharing and sending messages is a characteristic of parallel execution of processes and only recently has been made available in high-level languages.
This volume is organized as follows: Chapter 6 discusses the process management system. Chapter 7 presents various paradigms of process interaction and the mechanism of controlling these interactions. Chapters 8 and 9 introduce the reader to the high-level constructs that express process interaction. This material can be seen as a model for parallel programming. Chapter 10 is dedicated to the memory management system. The mechanisms of managing memory at a micro-level, where information is moved among the layers of a memory system, are discussed in Chapter 10. Chapter 11 is dedicated to the study of policies of memory management among the computer users and the implementations of these policies. Chapter 12 describes the information management system. The input-output management system and the file system are discussed in Chapter 12. Each chapter is composed of sections and each section is accompanied by problems that allow the reader to deepen the design concepts and the implementation algorithms discussed in that section.
Since we are concerned with system software engineering methodology we focus in this book on the logic model that can be used for the development of the execution support environment rather than on specific topics of an operating system. This explains why we are not including here such topics as scheduling, deadlock, security, etc., usually present in a book on operating systems.
Teodor Rus