UNIWERSYTET ŁÓDZKI - Centralny System Uwierzytelniania
Strona główna

Programowanie współbieżne i rozproszone

Informacje ogólne

Kod przedmiotu: 1500-ISM9PR
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Programowanie współbieżne i rozproszone
Jednostka: Wydział Fizyki i Informatyki Stosowanej
Grupy:
Punkty ECTS i inne: 0 LUB 6.00 LUB 5.00 LUB 4.00 (zmienne w czasie) Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: polski
Forma zaliczenia:

zaliczenie

Forma studiów:

stacjonarne

Wymagania wstępne:

Zalecana elementarna umiejętność programowania w języku Python


Skrócony opis:

Celem kursu jest zapoznanie studentów z podstawowymi metodami komunikacji międzyprocesowej i synchronizacji procesów, problemami związanymi z dzieleniem zasobów a także specyfiką komunikacji i synchronizacji w przetwarzaniu rozproszonym.

Pełny opis:

Celem kursu jest zapoznanie studentów z podstawowymi metodami komunikacji międzyprocesowej i synchronizacji procesów, problemami związanymi z dzieleniem zasobów a także specyfiką komunikacji i synchronizacji w przetwarzaniu rozproszonym.

Efekty uczenia się:

Wiedza

Wyjaśnia problemy związane z dzieleniem zasobów.

Opisuje metody komunikacji międzyprocesowej.

Opisuje metody unikania zakleszczeń.

Opisuje klasyczne problemy współbieżności.

Wymienia zastosowanie czasu logicznego i problemy synchronizacji zegarów w systemach rozproszonych

Umiejętności

Analizuje proste problemy synchronizacji międzyprocesowej i rozwiązuje je przy pomocy poznanych mechanizmów.

Tworzy komunikujące się ze sobą programy, synchronizujące swoje działanie przy pomocy poznanych mechanizmów.

Tworzy proste programy rozwiązujące dany problem przez podzielenie go na części rozwiązywane współbieżnie przy pomocy procesów potomnych albo wątków.

Kompetencje społeczne

Uzasadnia stosowanie redundancji i algorytmów biorących pod uwagę możliwość awarii

Zajęcia w cyklu "Semestr letni 2023/2024" (w trakcie)

Okres: 2024-02-26 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena zgodna z regulaminem studiów
Informacje dodatkowe:

brak


Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 50.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 50.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Test / quiz - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie i ćwiczeniach jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory i zmienne warunkowe

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów i zmiennych warunkowych

Bariera wielokrotnego użytku

Wykorzystanie zmiennych warunkowych do oczekiwania na spełnienie warunku


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań


Szeregowalność i szeregowalność kolizyjna


Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Wątki w Pythonie

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, semaforami, muteksami i zmiennymi warunkowymi

semafory


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2022/2023" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Informacje dodatkowe:

brak


Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 50.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 50.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Test / quiz - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie i ćwiczeniach jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory i zmienne warunkowe

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów i zmiennych warunkowych

Bariera wielokrotnego użytku

Wykorzystanie zmiennych warunkowych do oczekiwania na spełnienie warunku


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań


Szeregowalność i szeregowalność kolizyjna


Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Wątki w Pythonie

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, semaforami, muteksami i zmiennymi warunkowymi

semafory


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2021/2022" (zakończony)

Okres: 2022-02-21 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Informacje dodatkowe:

brak


Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 50.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 50.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Test / quiz - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie i ćwiczeniach jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory i zmienne warunkowe

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów i zmiennych warunkowych

Bariera wielokrotnego użytku

Wykorzystanie zmiennych warunkowych do oczekiwania na spełnienie warunku


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań


Szeregowalność i szeregowalność kolizyjna


Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Wątki w Pythonie

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, semaforami, muteksami i zmiennymi warunkowymi

semafory


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2020/2021" (zakończony)

Okres: 2021-03-08 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Informacje dodatkowe:

brak


Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 50.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 50.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Test / quiz - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie i ćwiczeniach jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory i zmienne warunkowe

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów i zmiennych warunkowych

Bariera wielokrotnego użytku

Wykorzystanie zmiennych warunkowych do oczekiwania na spełnienie warunku


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań


Szeregowalność i szeregowalność kolizyjna


Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Wątki w Pythonie

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, semaforami, muteksami i zmiennymi warunkowymi

semafory


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2019/2020" (zakończony)

Okres: 2020-02-24 - 2020-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 100.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 100.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Odpowiedź ustna - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Słabe i silne semafory

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów

Bariera wielokrotnego użytku

Równoważność semaforów binarynych i zliczających


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów

Problem palaczy papierosów


Wysokopoziomowe mechanizmy synchronizacji

Warunkowe regiony krytyczne

Regiony krytyczne a semafory

Problem producenta/konsumenta a warunkowe regiony krytyczne

Monitory i zmienne warunkowe

Problem producenta-konsumenta i monitory

Obiadujący filozofowie i monitory

Równoważność monitorów i semaforów

Pamięć transakcyjna i kompozycjonalność kodu

Plany wykonania: szeregowe, szeregowalne i szeregowalne kolizyjnie

Atomowość, izolacja , spójność

Blokady i algorytm blokowania dwufazowego


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań



Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Sygnały w systemie Linux

Podstawowe sygnały. Cechy sygnałów. Maskowanie

Deklarowanie własnych procedur obsługi sygnałów. Funkcja signal()

Wysyłanie sygnałów. Funkcja kill()

Odbieranie statusu zakończenia potomka w procedurze obsługi sygnału SIGCHLD


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Obiekty IPC Sys V

Segmenty pamięci dzielonej

Tablice semaforów

Klasyczne problemy synchronizacji z wykorzystaniem semaforów i segmentów pamięci dzielonej


Wątki

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, muteksami i zmiennymi warunkowymi


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2018/2019" (zakończony)

Okres: 2019-02-18 - 2019-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Metody dydaktyczne:

Wykład 1

Metody podające | Wykład informacyjny

Metody podające | Wykład problemowy


Laboratorium informatyczne lub pracownia fizyczna 2

Metody poszukujące | Metoda ćwiczeniowa

Metody poszukujące | Metoda problemowa



Sposoby i kryteria oceniania:

OCENA KOŃCOWA Z PRZEDMIOTU

jest ustalana zgodnie z algorytmem:

Ocena z formy: "Wykład 1" ocena * 100.00 %

+ Ocena z formy: "Laboratorium informatyczne lub pracownia fizyczna 2" ocena * 100.00 %

Dodatkowe warunki zaliczenia przedmiotu:

Ocena końcowa jest średnią ocen z ćwiczeń i wykładu


Ocena z formy "Wykład 1" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Odpowiedź ustna - 100.00%



Ocena z formy "Wykład 1" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Obecność na wykładzie jest obowiązkowa

Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest w oparciu o wyniki nastepujących składników zaliczenia:

Wykonanie ćwiczenia - 50.00%

Odpowiedź ustna - 50.00%



Ocena z formy "Laboratorium informatyczne lub pracownia fizyczna 2" ustalana jest na podstawie następującej skali:

Poniżej 50.00% - ocena 2

50.00% i więcej - ocena 3

60.00% i więcej - ocena 3,5

70.00% i więcej - ocena 4

80.00% i więcej - ocena 4,5

90.00% i więcej - ocena 5


Dodatkowe warunki zaliczenia formy:

Brak


Treści kształcenia:

Wykład 1

Informacje podstawowe

Procesy ciężkie i lekkie (wątki), wywłaszczanie, izolacja pamięci, cykl życia procesu

Przerwania, procedury obsługi przerwań i DMA

Tryb jądra i tryb użytkownika, architektura systemu Linux

Powody stosowania współbieżności i rozpraszania obliczeń

Problemy związane z rozpraszaniem i współbieżnością

Poprawność procesów współbieżnych (własności bezpieczeństwa i żywotności)

Nieadekwatność testowania do weryfikacji poprawności programów współbieżnych

Formalizmy do modelowania programów współbieznych i rozproszonych


Problem ochrony sekcji krytycznych

Algorytm Dekkera

Algorytm piekarza

Mechanizm Test And Set

Po co potrzebne są sekcje krytyczne

Abstrakcja: muteksy


Zakleszczenia

Model korzystania z zasobów

Zagnieżdżone sekcje krytyczne i zakleszczenia

Warunki konieczne wystąpienia zakleszczenia

Graf przydziału zasobów i zakleszczenia

Zapobieganie zakleszczeniom

Stan bezpieczny i stan zagrożenia. Ciągi bezpieczne

Krawędzie deklaracji i wykrywanie stanu zagrożenie w przypadku jednoegzemplarzowych typów zasobów

Algorytm bankiera

Wykrywanie zakleszczeń. Algorytm grafu oczekiwania


Semafory

Semafory zliczające i binarne. Operacje Wait i Signal

Implementacje semaforów zliczających z aktywnym czekaniem i bez (ze wsparciem systemu operacyjnego)

Słabe i silne semafory

Ochrona sekcji krytycznych przy pomocy semaforów. Uogólnione sekcje krytyczne

Sygnalizowanie przy pomocy semaforów

Spotkanie dwóch i wielu procesów (bariera) z wykorzystaniem semaforów

Bariera wielokrotnego użytku

Równoważność semaforów binarynych i zliczających


Klasyczne problemy synchronizacji

Problem producenta/konsumenta

Problem czytelników i pisarzy

Problem obiadujących filozofów

Problem palaczy papierosów


Wysokopoziomowe mechanizmy synchronizacji

Warunkowe regiony krytyczne

Regiony krytyczne a semafory

Problem producenta/konsumenta a warunkowe regiony krytyczne

Monitory i zmienne warunkowe

Problem producenta-konsumenta i monitory

Obiadujący filozofowie i monitory

Równoważność monitorów i semaforów

Pamięć transakcyjna i kompozycjonalność kodu

Plany wykonania: szeregowe, szeregowalne i szeregowalne kolizyjnie

Atomowość, izolacja , spójność

Blokady i algorytm blokowania dwufazowego


Czas rozproszony

Synchroniczne i asynchroniczne przekazywanie komunikatów i ich wzajemna symulacja

Procesy w systemach rozproszonych jako ciągi zdarzeń. Zdarzenia wewnętrzne i zdarzenia odebrania i wysyłania komunikatów

Porządek zależności przyczynowej pomiędzy zdarzeniami w systemie rozproszonym

Diagramy czasoprzestrzenne zdarzeń

Logiczna i fizyczna współbieżność

Stan systemu rozproszonego. Globalny stan spójny

Własności kanałów komunikacyjnych: Kanały FIFO, kanały z CO (Casual Ordering), kanały niezawodne, kanały gubiące komunikaty

Zegary fizyczne i logiczne

Potrzeba ciągłej synchronizacji zegarów fizycznych. Maksymalne tempo odchylania.

Algorytm NTP (Cristiana) synchronizacji zegarów fizycznych

Skalarne zegary logiczne i algorytm synchronizacji Lamporta

Algorytm całkowicie uporządkowanego rozsyłania (korzystający z zegarów skalarnych)

Silne i słabe zegary logiczne

Zegary wektorowe i ich synchronizacja. Zastosowanie do wersjonowania danych.


Algorytmy wzajemnego wykluczania rozproszonego

Algorytm scentralizowany

Algorytm Lamporta

Algorytm Ricarta-Agrawala

Algorytmy oparte na zetonach

Algorytmy oparte na kworach


Tolerowanie awarii

Przyczyny awarii w systemach komputerowych

Cechy niezawodnych systemów (dostępność, niezawodność, bezpieczeństwo, obsługiwalność)

Rodzaje awarii (błędy przejściowe, sporadyczne, twarde, ludzkie)

Modele awarii (załamanie, błędy ominięcia, awarie odliczania czasu, błędy odpowiedzi, awarie bizantyjskie)

Radzenie sobie z błędami i awariami. Redundancja

Specyfika awarii w środowisku rozproszonym

Problem bizantyjskich generałów i rozwiązanie dla 4 generałów i jednego zdrajcy.

Stosowanie dzienników transakcyjnych

Atomowe protokoły zatwierdzania. Algorytm zatwierdzania dwufazowego.

Algorytm Map-Reduce. Obsługa awarii w Map-Reduce. Przykłady zastosowań



Laboratorium informatyczne lub pracownia fizyczna 2

Procesy w systemie operacyjnym Linux

Procesy w systemie operacyjnym Linux. PID, PPID, PGID, SID. Terminal sterujący

Polecenia ps i kill

Rozwidlanie procesów. Funkcje fork() i execl()

Czekanie na zakończenie procesów potomnych. Funkcja wait(). Procesy zombi


Sygnały w systemie Linux

Podstawowe sygnały. Cechy sygnałów. Maskowanie

Deklarowanie własnych procedur obsługi sygnałów. Funkcja signal()

Wysyłanie sygnałów. Funkcja kill()

Odbieranie statusu zakończenia potomka w procedurze obsługi sygnału SIGCHLD


Komunikacja pomiędzy spokrewnionymi procesami przy pomocy rurek

Deskryptory plików. Opakowywanie deskryptora strumieniem

Tworzenie rurek anonimowych i komunikacja przy pomocy rurek

Funkcja dup2(). Przekierowywanie standardowego wejścia i wyjścia.


Obiekty IPC Sys V

Segmenty pamięci dzielonej

Tablice semaforów

Klasyczne problemy synchronizacji z wykorzystaniem semaforów i segmentów pamięci dzielonej


Wątki POSIX

Tworzenie i łączenie wątków

Muteksy i zmienne warunkowe

Klasyczne problemy synchronizacji z wątkami, muteksami i zmiennymi warunkowymi


Gniazda i programowanie rozproszone

Serwer i klient z wykorzystaniem gniazd TCP




Literatura:

Literatura podstawowa

A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura dodatkowa

M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Zajęcia w cyklu "Semestr letni 2017/2018" (zakończony)

Okres: 2018-02-19 - 2018-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia informatyczne, 28 godzin więcej informacji
Wykład, 14 godzin więcej informacji
Koordynatorzy: Bartosz Zieliński
Prowadzący grup: Bartosz Zieliński
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Ocena zgodna z regulaminem studiów
Ćwiczenia informatyczne - Ocena zgodna z regulaminem studiów
Wykład - Ocena zgodna z regulaminem studiów
Metody dydaktyczne:

Wykład informacyjny z elementami prezentacji multimedialnych.

Metoda ćwiczeniowa.

Sposoby i kryteria oceniania:

Ocena z wykładu wystawiana jest na podstawie egzaminu ustnego sprawdzającego wiedzę teoretyczną studenta.


Ocena z ćwiczeń wystawiana jest na podstawie kilku wybranych (trudniejszych) ćwiczeń programistycznych z zajęć dla których student musi przedstawić i omówić rozwiązanie. Ocena bierze pod uwagę trudność wybranych ćwiczeń, jakość rozwiązania i umiejętność wyjaśnienia przez studenta problemu i rozwiązania.


Ocena końcowa to średnia ocen z wykładu i ćwiczeń.

Jeśli prowadzący ćwiczenia i wykład to ta sama osoba, egzamin ustny i sprawdzenie ćwiczeń powinno odbyć się w tym samym czasie.

Treści kształcenia:

1. Synchronizacja procesów współbieżnych: mechanizmy niskopoziomowe (algorytm Dekkera, synchronizacja sprzętowa dzięki testuj-i-ustaw), semafory liczące i binarne, muteksy, monitory, zmienne warunkowe.

2. Mechanizmy współbieżności: procesy ciężkie, procesy lekkie (wątki systemowe), wątki poziomu użytkownika, wielozadaniowość kooperacyjna.

3. Mechanizmy komunikacji międzyprocesowej: pamięć dzielona, kolejki komunikatów, komunikaty synchroniczne i asynchroniczne.

4. Klasyczne problemy współbieżności: spotkanie dwóch i n procesów, producentów-konsumentów, czytelników i pisarzy, głodnych filozofów.

5. Unikanie i rozpoznawanie zakleszczeń.

6. Naturalna współbieżność: przetwarzanie potokowe.

7. Specyfika przetwarzania rozproszonego.

8. Mechanizmy komunikacji rozproszonej.

9. Problemy współbieżności, np.:

a. Relacja uprzedniości zdarzeń w środowisku rozproszonym.

b. Wzajemne wykluczanie w środowisku rozproszonym.

c. Problem bizantyjskich generałów.

10. Zegary logiczne skalarne i wektorowe. Synchronizacja zegarów w środowisku rozproszonym.

11. Rozproszone podejmowanie decyzji, w szczególności transakcje rozproszone.

12. Mechanizmy współbieżności w systemie Linux

Literatura:

1. A. Silberschatz, P.B. Gavin, Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne Warszawa 1998

2. M. Ben-Ari, Podstawy programowania współbieżnego Wydawnictwa Naukowo-Techniczne Warszawa 1989

3. A.S. Tanenbaum, M. Steen, Systemy rozproszone. Zasady i paradygmaty. Wydawnictwa Naukowo-Techniczne Warszawa 2006

Literatura uzupełniająca:

1. M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.

2. A.B. Downey, The Little Book of Semaphores http://www.greenteapress.com/semaphores/

3. E. W. Dijkstra, “Hierarchical ordering of sequential processes,” Acta Informatica, Vol. 1, pp. 115-138.

4. L. Lamport, “A New Solution of Dijkstra’s Concurrent Programming Problem”, Communications of the ACM, August 1974, Vol. 17, No. 8.

5. L. Lamport, “Time, Clocks, and the ordering of Events in a Distributed System”, Communications of the ACM, July 1978, Vol. 21, No. 7.

6. L. Lamport, S. Shostak, M. Pease, “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982, 382-401.

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest UNIWERSYTET ŁÓDZKI.
kontakt deklaracja dostępności mapa serwisu USOSweb 7.0.3.0-2