July 2004
Intermediate to advanced
1744 pages
35h 3m
English
Consider the following possibility:
The task executing on processor 0 reads the semaphore to determine the buffer's availability.
The task tests the semaphore's value and determines that the buffer is available (the semaphore value = zero).
Immediately after the task on processor 0 has completed the memory read to obtain and test the state of the semaphore value, a task executing on processor 1 has initiated a memory read request on the FSB to test the state of the same semaphore. It completes the read and begins testing the value.
The processor 0 task initiates a memory write on the FSB to update the semaphore to a non-zero value to mark the shared buffer as unavailable. After it completes the write, it considers ...
Read now
Unlock full access