I've always understood critical sections to be an equivalent to semaphores. I haven't understood the difference between the techniques "atomic operations" and semaphores. Most semaphores are implemented using bus locking anyways, which is what atomic operations use too.