How to Make a Correct Multiprocess Program Execute Correctly on a Multiprocessor

Leslie Lamport

IEEE Transactions on Computers SRC Research Report 96 | , Vol 46(7): pp. 779-782

This paper was inspired by Kourosh Gharachorloo’s thesis. The problem he addressed was how to execute a multiprocess program on a computer whose memory did not provide sequential consistency (see [35]), but instead required explicit synchronization operations (such as Alpha’s memory barrier instruction). He presented a method for deducing what synchronization operations had to be added to a program. I realized that, if one proved the correctness of an algorithm using the two-arrow formalism of [33], the proof would tell you what synchronization operations were necessary. This paper explains how.