Programowanie współbieżne zima 2023/24

Język wykładowy Polski
Opiekun Piotr Witkowski
Liczba godzin 30 (wyk.) 30 (prac.)
Rodzaj Informatyczny 1
ECTS 6
Polecany dla I roku Nie
Egzamin Tak

Opis przedmiotu:

System komputerowy tworzy grupa współpracujących procesów, wewnątrz których może się również znajdować wiele wątków wykonania. To powoduje problemy z **synchronizacją** dostępu do danych przez te procesy/wątki współdzielonych. Może się np. zdarzyć, że jeden z procesów modyfikuje rekord w pamięci, a w tym samym czasie drugi próbuje ten sam rekord odczytać. Pożądanym wynikiem odczytu jest rekord sprzed modyfikacji albo rekord całkowicie zmodyfikowany. Niestety, bez dodatkowych zabiegów ze strony programisty, rezultatem odczytu może być rekord tylko częściowo zmodyfikowany, czyli **niespójny** (np. w reprezentacji rachunku bankowego proces zapisujący zmodyfikował już numer konta, a nie zdążył zmodyfikować danych osobowych jego posiadacza). Taka sytuacja jest niedopuszczalna, na szczęście sprzęt i system operacyjny udostępniają sporo **środków synchronizacji** by jej zaradzić. Na wykładzie poznamy i w praktyce zastosujemy **prymitywy synchronizacyjne**, w tym: instrukcje atomowe, muteksy, semafory, zmienne warunkowe, monitory oraz bardziej skomplikowane np. bariery czy blokady czytelników i pisarzy. Pokażemy, jak rozwiązywać i **analizować poprawność** klasycznych **problemów synchronizacji** z użyciem tych środków. Poznamy przykłady **nieblokujących struktur danych**, zapewniających synchronizację jedynie z użyciem instrukcji atomowych. Dowiemy się jaką rolę pełni **model pamięci** języka programowania w analizie poprawności algorytmów współbieżnych. Wykład będzie prowadzony na podstawie książki [The Art of Multiprocessor Programming, 2nd ed.](https://www.amazon.pl/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0124159508/) oraz kursu [Parallel Programming (ETH Zürich)](https://spcl.inf.ethz.ch/Teaching/2020-pp/) Od studenta wymagana jest elementarna znajomość Javy (na poziomie umiejętności zaimplementowania listy łączonej), jako że w tym języku prowadzony będzie wykład. Okazjonalnie pojawić się może kod w C/C++.

Wykłady

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Piotr Witkowski
zdalna
śr 14:00-16:00 (s. wirtualna5) 40 28 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.

Pracownie

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Piotr Witkowski
zdalna
śr 10:00-12:00 (s. wirtualna5) 18 11 0
Piotr Witkowski
zdalna
cz 16:00-18:00 (s. wirtualna5) 18 17 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.


Konsultacje prowadzących:


Imię i nazwisko Pokój Konsultacje
Piotr Witkowski 311 Po wcześniejszym umówieniu się pocztą elektroniczną.