Scheduling and load balancing of applications on distributed or shared
-memory machine architectures can be executed by optimizing algorithms
in various levels of the architecture. We are viewing four different
levels, namely, the application layer, the compiler layer, the run-tim
e layer, and the operating system layer. The approach to scheduling an
d load balancing ranges from very specialized and directly dependent o
n the application, in the application layer, to a more general approac
h taken by the operating system layer. In the application layer, the a
pplication's computation is decomposed and evenly assigned to the proc
essors, while communication and synchronization are minimized. In addi
tion, specific knowledge about the application is taken into account t
o select the approach to problem solution. In the compiler layer, the
application code is automatically decomposed by the compiler, most of
the work being concentrated in the parallelization of language constru
cts. In the run-time layer, the results of the application and the com
piler layers are implemented. Finally, in the operating system layer,
a fair allocation of the processors of the parallel machine is allocat
ed to competing applications. (C) Elsevier Science Inc. 1997