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