Module 19 Study Guide
Learning Objectives
- Distinguish between instruction-level, statement-level, unit-level, and program-level concurrency
- Summarize the history of multiprocessor architectures (at an overview level)
- Distinguish between physical and logical concurrency
- State reasons for using concurrency
- Explain fundamental terms in concurrency, including lightweight task(thread), and heavyweight task (process)
- Distinguish cooperation from competition synchronization
- Explain the terms race condition, liveness, and deadlock
- Explain how task scheduling works
- Explain what a semaphore is and how it can be used to provide synchronization
- State the advantages and disadvantages of semaphores
- Explain what a monitor is and why it is superior to a semaphore
- Explain and contrast different approaches to error handling
- State advantages of including exception handling in a programming language
- Contrast generic GOTO statements with formal exception handling
- Explain how event handling is similar to error handling
- Contrast event loops and the observer pattern for implementing events
Resources
- CPL 13-14
- Slides: Lam
Lab
Please complete the lab for this week in class.
Deliverables
The test for this module will take place on Canvas on Friday. You will have an opportunity to re-take a different version of the same test next week. If you choose to do the re-take, your grade for this module will be the higher of the two scores.