Concurrent and Distributed Programming and Systems 2020/2021
Friday 14:00-17:20 online
The evaluation of work during the semester (homeworks) forms 50% of the
final grade, at least 40% are required.
- Motivation. Separation of algorithmic and concurrent aspects in C.
Memory and time complexity of programs with I/O operations and dynamic
memory allocation. Polling and its consequences.
- Threads. Thread state diagram. Shared variables, atomicity of memory
accesses, critical regions. Decker's and Peterson's algorithms, assumptions
on memory accesses. Deadlock, livelock. POSIX threads (pthread), mutexes,
Open Group pthread
A pthread tutorial
Another pthread tutorial
recommendation (when to use threads and when not, 1995)
- Libraries, thread-safety. Case
study: shared stack.
- Measuring time. Sources of time in PCs, real-time clock (RTC),
programmable interrupt timer (PIT). Access to time sources and alarms in
POSIX processes. Precision of time measurements.
A tutorial on PC timers
man clock_gettime(CLOCK_MONOTONIC_RAW, ...)
Linux Device Drivers (Chapter
- Threads in Java. Creation of a thread. Synchronised methods,
synchronised blocks. Built-in reentrant mutexes. Methods join(),
wait(), signal(). Problem with a direct use of synchronized methods.
Sun Certified Programmer for Java (Chapter 9)
Schildt: Java, The Complete Reference (Chapter 11)
- Multi-level memory. Examples of counter-intuitive behaviour of programs
and their explanation.
Means of memory synchronisation in C and Java. Volatile variables, implicit
H. Boehm: Threads cannot be
implemented as a library, ACM PLDI, 2005
Java memory model
- OpenMP. Filozofia OpenMP. Fork-join paralelizmus. Architektura
to OpenMP (University of Oregon)
to OpenMP (RWTH Aachen University)
GOMP (GNU OpenMP)
- Paralellelisation of independent loops. Probabilistic model.
Deterministic model. Parameters of models, goals of optimisation.
Methods of load balancing.
Please send me your solutions via email.
For writing programs in C, use this template.
Make sure that 0 errors and 0 warnings are produced during the compilation
and linking (make).
Homework 1 (due to 20.10.)
Homework 2 (due to 22.10.), attachment
Homework 3 (due to 5.11.), attachment
Homework 4 (due to 9.12.)
Homework 5 (due to 9.12.)