The role of parallel processing in application programs
It is normally perceived that highly efficient programs can only be obtained by sacrificing their clarity, maintainability, etc. In this thesis we investigate methods which simultaneously improve the performance and other software quality attributes. We first review different types of software components namely, abstract data type, functional, interface and control modules. Also, the type of parallelism which is useful in each case is demonstrated. Such parallel algorithms can often be directly implemented in hardware using VLSI technology. Then we discuss methods of providing a high performance implementation of control modules and abstract data type modules. The approach proposed for control module uses decentralized control concepts and is based on Dijkstra's "relaxation" problem and self-stabilizing systems. The approach for abstract data type modules uses multilevel data structures and maintenance processes. We consider the case where the interface operations are implemented by a foreground process while the "housekeeping activities" are performed by a background process.