Systemy rozproszone 1000-217bSR
Tematy obowiązkowe:
1. Wprowadzenie: definicje, typy systemów rozproszonych. (1 wykład)
2. Architektury: architektury systemów rozproszonych, warstwa pośrednicząca, samo-organizacja w systemach rozproszonych. (1-2 wykłady)
3. Procesy: wątki, wirtualizacja, klienci, serwery, migracja kodu. (1-2 wykłady)
4. Komunikacja: RPC, komunikacja zorientowana na wiadomości, komunikacja strumieniowa, rozgłaszanie. (1-2 wykłady)
5. Identyfikacja: płaska identyfikacja, identyfikacja ustrukturalizowana, identyfikacja w oparciu o atrybuty. (1-2 wykłady)
6. Synchronizacja: synchronizacja zegarów, zegary logiczne, problem wykluczania, pozycjonowanie węzłów, algorytmy elekcji. (1-2 wykłady)
7. Spójność i replikacja: modele spójności zorientowane na dane, modele spójności zorientowane na klienta, zarządzanie replikami, protokoły spójności. (1-2 wykłady)
8. Odporność na błędy: odporność procesów, niezawodna komunikacja klient-serwer, rozproszone zatwierdzanie, rekonstrukcja. (1-2 wykłady)
9. Bezpieczeństwo: bezpieczne kanały komunikacyjne, kontrola dostępu, zarządzanie bezpieczeństwem. (1-2 wykłady)
Tematy opcjonalne (w zależności od dostępnego czasu):
1. Rozproszone systemy oparte na obiektach.
2. Rozproszone systemy plików.
3. Rozproszone systemy web’owe.
4. Systemy do rozproszonej koordynacji.
Koordynatorzy przedmiotu
Rodzaj przedmiotu
Efekty uczenia się
Wiedza
1. Zna techniki synchronizacji procesów i komunikacji międzyprocesowej w scentralizowanym i rozproszonym modelu programu współbieżnego [K_W04].
2. Zna algorytmy wzajemnego wykluczania i uzgadniania w systemach rozproszonych [K_W05].
3. Zdaje sobie sprawę z celów budowania systemów rozproszonych.
4. Zna różne zastosowania systemów rozproszonych.
5. Orientuje się w różnych modelach programistycznych używanych w budowie systemów rozproszonych.
6. Rozróżnia rolę organizacji fizycznej systemu od organizacji logicznej.
7. Zna pojęcie warstwy pośredniczącej.
8. Zna mechanizmy samoorganizacji systemów rozproszonych.
9. Wie jaką rolę w systemach rozproszonych odgrywają procesy, wątki, mechanizmy wirtualizacji oraz migracja kodu.
10. Zna podstawowe paradygmaty komunikacji w systemach rozproszonych (RPC, komunikaty, strumienie).
11. Wie jaką rolę odgrywają nazwy w systemach rozproszonych i jakich algorytmów używać do wyszukiwania nazw (np. rozproszone tablice mieszające).
12. Zna problemy związane z synchronizacją procesów w systemach rozproszonych, w szczególności synchronizację zegarów fizycznych oraz zegary logiczne.
13. Zna algorytmy synchronizacji.
14. Zna algorytmy rozgłaszania gwarantujące kolejność komunikatów (porządek zupełny, przyczynowo-skutkowy, itd.).
15. Zna problemy związane z zachowaniem spójności w systemach rozproszonych.
16. Zna różne modele spójności: zorientowane na dane, zorientowane na klienta, jednostki spójności.
17. Rozumie konieczność tworzenia systemów odpornych na błędy.
18. Zna różne modele błędów.
19. Orientuje się w algorytmach zapewniających odporność na te błędy.
20. Jest świadomy zagrożeń bezpieczeństwa systemów rozproszonych.
21. Zna różne techniki zapobiegania tym zagrożeniom.
Umiejętności
1. Potrafi zastosować mechanizmy synchronizacji procesów i wątków w wybranych technologiach w zależności od architektury i możliwości konkretnego komputera [K_U06].
2. Posługuje się nowoczesnymi technologiami rozpraszania i zrównoleglania obliczeń [K_U08].
3. Ma umiejętności językowe w zakresie informatyki zgodne z wymaganiami określonymi dla poziomu B2+ Europejskiego Systemu Opisu Kształcenia Językowego, w szczególności: identyfikuje główne i poboczne tematy wykładów, pogadanek, debat akademickich, dyskusji, czyta ze zrozumieniem i krytycznie analizuje teksty akademickie, zabiera głos w dyskusji lub debacie naukowej, streszcza ustnie informacje, wyniki badań, opinie i argumenty autora zawarte w tekście naukowym [K_U14].
4. Potrafi zaprojektować i zaimplementować komponenty systemu rozproszonego.
5. Potrafi testować elementy systemu rozproszonego.
Kryteria oceniania
Ocena końcowa na podstawie punktów z egzaminu pisemnego i zadań laboratoryjnych w stosunku 50:50. Otrzymanie oceny pozytywnej jest uwarunkowane przez zaliczenie obu tych komponentów.
Dla zaliczenia laboratorium trzeba oddać wszystkie zadania w terminie i uzyskać z nich min 50% punktów. Jednym z zadań laboratoryjnych może być (wg uznania prowadzącego) mini-kolokwium. Punkty uzyskane za laboratorium są wliczane do oceny końcowej.
Zaliczenie przedmiotu w terminie zerowym wymaga zdobycia co najmniej 38 punktów z laboratorium. Liczba punktów uzyskanych w terminie zerowym wyraża się wzorem min(50, L) x 1,6, gdzie L to liczba uzyskanych punktów z laboratorium.
Więcej informacji na stronie przedmiotu:
https://www.mimuw.edu.pl/~iwanicki/courses/ds/
Literatura
1. A. S. Tanenbaum and M. van Steen, “Distributed Systems: Principles and Paradigms,” Second Edition, Prentice Hall, 2007.
2. Wybrane artykuły z czołowych konferencji i czasopism naukowych dotyczących systemów rozproszonych, między innymi SOSP, OSDI, NSDI i SIGCOMM.
Więcej informacji
Więcej informacji o poziomie przedmiotu, roku studiów (i/lub semestrze) w którym się odbywa, o rodzaju i liczbie godzin zajęć - szukaj w planach studiów odpowiednich programów. Ten przedmiot jest związany z programami: