I tried my best to list the topics for the exam but I may have forgotten one or two. Your default assumption should be that if I covered it in class, it is fair game for the exam. If you have a specific question about whether a topic could be part of the exam, please come to ask me.
In addition to the material covered in Test 1
You should be able to define or explain the following terms:
- process
- system call
- context switching
- virtual memory and associated concepts
- inter-process communication and pipes
- threads
- mutual exclusion and critical section
- mutex lock, barrier, condition variable
- deadlock
You should be familiar with the following:
- pipes and the pipe system call, writing to and reading from a pipe
- creating threads and passing arguments to threads
- joining with threads and receiving the value returned by a thread
- mutual exclusion, using mutex locks
- purpose and use of other synchronization mechanisms from the pthread library (barriers, condition variables, read-write locks
- the general idea of semaphores
- philosophers and their usual food
- problems that can occur when threads are badly synchronized, principally, deadlocks, the conditions under which they can occur and measures that can be taken to avoid them
- common threading patterns (thread pool, networking applications, tasks broken in sections, producer consumer)