9410421 Jayanti The main objective of this project is to obtain a classification of synchronization primitives in parallel processing systems, with the goal of reflecting the power and limitations of each primitive. The effectiveness of a parallel processing system to solve a computation depends to a large extent on the support for communication and synchronization among processes. In shared memory systems, higher level shared objects such as shared queues are implemented in software using shared hardware primitives like registers and test&set instructions. In fault- tolerant asynchronous systems, where processes progress at arbitrarily varying rates, such software implementations must guarantee that a process can complete successfully, regardless of how fast or slow the other processes are. It is known that hardware primitives vary widely in their ability to support such software implementations. The classification proposed in this research will bring out the capabilities and limitations of synchronization primitives. The classification will be useful to the designer of a multiprocessor in deciding which primitive to support in hardware. It will also be useful to the systems programmer in determining whether a high level object of interest (e.g., a queue that can be accessed concurrently by 100 processes) has a software implementation in a given system. ***