If you find errors in the textbook, please mail Jeremy.Singer@glasgow.ac.uk with details, so we can compile a list of corrections. Like Donald Knuth, we will offer micro-rewards to discoverers of errors.

Chapter 1

Listing 1.2.1: line 2 has a duplicated variable name on the left hand side of the assignment. It should read:
  systemState = processorAction(systemState)
Thanks to Madhuresh Minoshi for this correction.

Chapter 5

Section 5.3: task_- struct should be task_struct - linebreaking problems, sorry.

Section 5.10: The table of processes and their arrival times, at the top of p121, should be listed under Question 5.10.4 part 2 - "Consider the following set of processes..."

Chapter 7

Section 7.3.6: Description of condition variables (top of p180).
Note that the call to pthread_cond_wait() automatically and atomically unlocks the associated mutex; the mutex is automatically and atomically unlocked locked when receiving a signal.
Thanks to Finlay Durkin for this correction.

Chapter 9

Section 9.9: 2nd paragraph. Final word should be file not files.