COSC 360: Operating Systems

Final Exam Study Guide

Concurrency

Chapters Covered:

  • Chapter 26 (Concurrency and Threads)
  • Chapter 27 (Thread API)
  • Chapter 28 (Locks)
  • Chapter 29 (Locked Data Structures)
  • Chapter 30 (Condition Variables)
  • Chapter 31 (Semaphores)

Recommendations:

Read over each chapter. Focus on major sections, terms in bold, algorithms/policies, system calls, and figures. It is also recommended to revisit the Python simulations (and other example code) and know how to run/interpret/understand them.

Topics Covered

Chapter 26 (Concurrency and Threads)

  • Threads
  • Multithreaded address spaces
  • Parallelism
  • Creating threads
  • Shared data
  • Race conditions
  • Critical section
  • Mutual exclusion
  • x86.py

Chapter 27 (Thread API)

  • Threads (creation, completion)
  • Locks (creation, lock, unlock)
  • Condition variables (creation, wait, signal)

Chapter 28 (Locks)

  • Locks
  • Mutex
  • Evaluating locks (mutual exclusion, fairness, performance)
  • Test-and-set
  • Spin locks
  • Yielding
  • x86.py

Chapter 29 (Locked Data Structures)

  • Thread safety
  • Example concurrent data structures (counters, linked lists, queues)

Chapter 30 (Condition Variables)

  • Condition variables
  • Waiting and signaling
  • Example uses (parent waiting on child, producer/consumer problem)

Chapter 31 (Semaphores)

  • Semphaphores
  • Binary semaphores (locks)
  • Example uses (parent waiting on child, producer/consumer problem, barriers, throttling, reader-writer locks)
  • Deadlock
  • Dining Philosopher’s Problem