Programowanie współbieżne


Informacje ogólne

Typ:specjalnościowy
Kierunek:Informatyka studia licencjackie
Semestr:5
Wymiar zajęć:30 godzin wykładu, 30 godzin laboratorium
Punkty ECTS:8

Program

Teoretyczne modele maszyn równoległych. Miary złożoności stosowane do obliczeń równoległych. Przykłady algorytmów równoległych i szacowanie ich złożoności. Systemy rozproszone i skupione, równoległość rzeczywista (nakładanie) i przeplot. Przykłady architektury systemów komputerowych służących do obliczeń współbieżnych. Formalizmy matematyczne stosowane do opisu procesów współbieżnych. Pojęcie uczciwości (fairness) i sprawiedliwości (justice) wykonywania obliczeń współbieżnych. Podstawowe modele komunikacji miedzyprocesowej, pamięć dzielona i kanały komunikacyjne. Komunikacja synchroniczna i asynchroniczna. Buforowanie. Koordynacja procesów współbieżnych. Pojęcie blokady (deadlock) i głodzenia (starvation) procesów. Problem wzajemnego wykluczania i inne podstawowe problemy programowania współbieżnego. Mechanizmy koordynacji, semafory i monitory. Mechanizmy komunikacji i synchronizacji procesów w systemie UNIX (kolejki, pamięć dzielona, semafory). Narzędzia tworzenia i koordynacji wątków.

Sposób zaliczenia

Laboratorium - napisanie kilka mniejszych projektów programistycznych w ciągu semestru + jeden większy projekt na koniec (wszystko wykonywane indywidualnie, nie zespołowo).
Wykład kończy się egzaminem pisemnym w formie testu wyboru (zarówno termin podstawowy, jak i poprawkowy).

Literatura

M. Ben - Ari - Podstawy programowania współbieżnego i rozproszonego, WNT 1996 J.S.Gray, Komunikacja między procesami w UNIXie, RM 1998.