The purpose of this assignment is to implement locks and semaphores, and to measure the frequency of errors caused by incorrect synchronization primitives.