|
Concurrent and Distributed Programming and Systems 2022/2023
Tuesday 11:30 M.262
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.
Historical
recommendation (when to use threads and when not, 1995)
- 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.
Lecture notes
A tutorial on PC timers
Linux
man clock_gettime(CLOCK_MONOTONIC_RAW, ...)
- Threads. Thread state diagram. Shared variables, atomicity of memory
accesses, critical regions. Decker's and Peterson's algorithms, assumptions
on memory accesses.
Lecture notes
- 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.
SCJP
Sun Certified Programmer for Java (Chapter 9)
H.
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
memory synchronisation.
H. Boehm: Threads cannot be
implemented as a library, ACM PLDI, 2005
Java memory model
(JSR133)
Homeworks
For writing programs in C, use this template.
Make sure that 0 errors and 0 warnings are produced during the compilation
and linking (use make).
Homework 1 (due to 8.11. 12.1.2023)
Homework 2 (due to 8.11.), attachment
Homework 3 (due to 31.12. 12.1.2023), attachment
Homework 4 (due to 12.1.2023)
Updated by
Tomas Plachetka,
Dec/14/2022
|