Efficient execution of fork-join structures in shared memory environments

Date of Completion

January 1999


Computer Science




One of the most natural causes of inefficiency in executing a Fork-Join structure is the bottleneck caused by the needs of more than one process to access shared variables (the critical section) simultaneously. Therefore it becomes necessary to schedule shared memory access in the most efficient way. Although previous works developed optimal scheduling algorithms, these algorithms are computationally expensive and are only appropriate for a limited number of parallel branches. The goal of this study is to develop heuristic approaches for efficient execution of Fork-Join structures in a shared memory environment with the aim of minimizing the overall exection time. ^ First, we attempt to develop algorithms for scheduling access to the critical section based on both non-preemptive and preemptive approaches. Second, when the number of available processors is smaller than the number of branches in Fork-Join structure, we develop the method that allocates one processor to each branch. Lastly, we consider the case where each branch has more than one access request to the same critical section. ^ Through simulation, the merits of these algorithms are evaluated relative to the branch and bound approach and previously developed algorithms. Several case studies are done for real applications of the algorithms developed in this research. ^