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.
Rodzaj przedmiotu
Koordynatorzy przedmiotu
Efekty kształcenia
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:
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: