| 
 | 
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
 |