The problem of mutual-exclusion is that of guaranteeing that certain sections of code ( critical sections) will not be executed by more than one process simultaneously. These sections of code usually access shared variables in a common store or access shared hardware. The actual contents of the critical section is immaterial to the problem of mutual-exclusion, although there is usually an assumption that the section is fairly short.
The standard solution to kernel-level mutual-exclusion in uniprocessor systems is to momentarily disable interrupts to guarantee that the process accessing the sensitive data will not be pre-empted before the access has been completed. This solution is not available for multiprocessor systems, since processes on these are truly concurrent. This paper surveys the published solutions to this problem and their properties. We also review some current work on the subject and other possible solutions to concurrent access of shared variables.