Sieci Komputerowe i Systemy Rozproszone

Transkrypt

Sieci Komputerowe i Systemy Rozproszone
Lista zagadnień na egzamin dyplomowy
dla specjalności
Sieci Komputerowe i Systemy Rozproszone
Rozproszone systemy operacyjne
1. Komunikacja grupowa (definicje, algorytmy).
2. Danocentryczne modele spójności danych (spójność sekwencyjna, przyczynowa, pro3.
4.
5.
6.
cesorowa, koherencja).
Modele spójności zorientowane na klienta.
Algorytmy wzajemnego wykluczania (algorytm Lamporta).
Algorytmy elekcji.
Zakleszczenie w systemach rozproszonych.
Środowiska przetwarzania rozproszonego
1. Aspekty projektowe realizacji systemów rozproszonych.
2. Środowiska przetwarzania rozproszonego, oparte na wymianie komunikatów (podstawowe usługi i mechanizmy, charakterystyka komunikacji, przykłady realizacji).
3. Obiektowe podejście do budowy systemów rozproszonych (na czym polega, co jest
4.
5.
6.
7.
8.
9.
istotą, co stanowi nawą jakość w stosunku do podejścia proceduralnego, opartego na
RPC).
Komunikacja i obliczenia kolektywne na przykładzie standardu MPI.
Tryby komunikacji punkt-punkt w standardzie MPI.
Wielozadaniowość i synchronizacja w środowisku Ada-95.
Podejście do budowy systemów rozproszonych w środowisku Ada-95.
Wielozadaniowość i synchronizacja w środowisku Java.
Synchronizacja procesów w standardzie CORBA.
Projektowanie i konstrukcja systemów rozproszonych
1. Języki znacznikowe i ich zastosowania (XTML, SVG, MathML, DocBook, HTML5,
Web 2.0, XForms).
2. Style XSL (transformacje XSLT, obiekty formatujące XSL-FO).
3. Asynchroniczne komunikacja przeglądarki z serwerem — AJAX (mechanizm, bezpieczeństwo, JSON, wywołania zwrotne).
4. Przetwarzanie dokumentów XML (standardy DOM, SAX, XSLT, StAX).
5. Usługi sieciowe WebServices (SOAP, WSDL, UDDI, ograniczenia, bezpieczeństwo).
6. Architektura SOA (założenia, BPEL).
7. Komponenty EJB platformy JavaEE (typy komponentów, cykl życia, tryby dostępu,
transakcyjność).
8. Standard komunikacyjny JMS (modele komunikacji, niezawodność, transakcyjność).
9. Odwzorowanie obiektowo-relacyjne (standard Java Persistence, język zapytań, mapowanie hierarchii klas, transakcje).
10. Wzorce projektowe dotyczące tworzenia systemów rozproszonych.
11. Synchronizacja wątków w środowisku .NET.
Systemy wiarygodne
1. Problem rozproszonego consensusu i warunki jego rozwiązywalności w asynchronicznym systemie rozproszonym.
2. Warunki rozwiązywalności problemu bizantyjskiego uzgadniania w zbiorze rozproszonych procesów.
3. Relacje pomiędzy problemami uzgadniania na przykładzie dwóch wybranych problemów tej klasy.
4. Porównanie kosztu różnych strategii wstecznego odtwarzania stanu systemu rozproszonego.
5. Niezawodność trójfazowego zatwierdzania rozproszonych transakcji.
6. Definicja pojęcia samostabilizacji. Klasyfikacja i przykłady algorytmów posiadających
tę własność.
Bezpieczeństwo systemów rozproszonych
1. Funkcje skrótu kryptograficznego. Własności, przykłady algorytmów i zastosowania.
2. Podpis cyfrowy — koncepcja i własności podpisu.
3. Szyfry symetryczne i asymetryczne — zasada działania, przykłady algorytmów.
4. Protokół SSL — zasada działania.
5. Jednokrotne uwierzytelnianie — zasada działania, wady i zalety, przykładowe zastosowania).
6. Ataki typu DoS lub DDoS — zasada działania, sposoby obrony.
Projektowanie i zarządzanie sieciami komputerowymi
1.
2.
3.
4.
Etapy projektowania sieci komputerowych.
Okablowanie strukturalne.
Obszary zarządzania siecią komputerową.
Protokół SNMP.
Metody bezpiecznego programowania
1. Opisz typowe błędy programistyczne w programowaniu współbieżnym przy użyciu
wątków w języku C# lub Java.
2. Wyjaśnij na czym polega problem "odwrócenia priorytetów" w szeregowaniu wątków i
zaproponuj jego rozwiązanie.
3. Wyjaśnij na czym polega technika Map-Reduce na przykładzie języków funkcyjnych
lub środowisk programowania rozproszonego.
4. Wyjaśnij do czego potrzebny jest model pamięci dla danego języka programowania
(np. Java); zilustruj problem poprawności programu na przykładzie.
5. Wyjaśnij na czym polega warunek wyścigu w programowaniu współbieżnym oraz
przedstaw na przykładzie działanie algorytmu lockset detekcji warunku wyścigu.
6. Wyjaśnij co to jest i do czego służy programowa pamięć transakcyjna (ang. Software
Transactional Memory) na przykładzie wybranego języka programowania.
7. Wyjaśnij na przykładzie własność liniowości (ang. linearizability) jako warunek poprawności współbieżnego dostępu do obiektów o określonej semantyce.
8. Wyjaśnij cechy programowania funkcyjnego na przykładzie języka Objective Caml
lub F#, oraz wyjaśnij na czym polega silne typowanie i automatyczna detekcja typów
w tych językach.