1. A method of executing a parallel program in a parallel system having a plurality of physical processors, comprising the steps of: generating as many threads as the number of physical processors of the parallel system in order to execute at least one parallel loop contained in the parallel program; executing, by the generated threads, at least one single loop of each parallel loop; measuring an execution time, the number of executed instructions, and the number of cache misses for each parallel loop; determining an execution mode of each parallel loop by determining the number of threads used to execute each parallel loop based on the measured values; and allocating the threads to each physical processor according to the result of the determination to execute each parallel loop.