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: concurrency and error handling
Deliverables
The test for this module will take place in class 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.