I. Introduction
In the high end of the computing spectrum nowadays, multiprocessor systems are very common, and have found their way into all types of computers and mobile devices. Existence of multiprocessor systems comes from the idea of parallel computing. In today's generation of computers, parallel computing is one of the most important aspects in computer engineering. For each processor to execute one task at a time will consume a lot of processing time and make the computer much slower. In the early era of computers, without parallel execution, a single program could take a long time to complete [1]. However, advancements in technology have been largely driven by the concept of parallel execution, which significantly reduces the total execution time of processors.