// semaphore allows multiple processes to be synchronized when resources are limited // it uses a key using put and get method to allocate resources to a process // new(key_count) creates a semaphore ...