"This article explores many of the synchronization or locking
mechanisms that are available in the Linux kernel. It presents the
application program interfaces (APIs) for many of the available
methods from the 2.6.23 kernel. But before you dig into the APIs,
you need to understand the problem that's being solved.
"Synchronization methods are necessary when the property of
concurrency exists. Concurrency exists when two or more processes
execute over the same time period and potentially interact with one
another (for example, sharing the same set of resources)..."