Tematyka

  • 01. Podstawowe pojęcia programowania współbieżnego

    Współbieżność w życiu codziennym. Współbieżność w systemach operacyjnych. Współbieżność a równoległość. Wykonanie współbieżne z podziałem czasu. Wątek a proces. Kluczowe problemy współbieżności: współdzielenie zasobów, zakleszczenie, zagłodzenie. Sekcja krytyczna. Algorytm pojedynczego wątku. Wymagania czasowe. Bezpieczeństwo i żywotność, sprawiedliwość.

  • 02. Klasyczne problemy współbieżności i ich rozwiązania

    Problem producenta i konsumenta: sytuacja idealna, producent szybszy niż konsument, wielkość bufora.

    Problem czytelników i pisarzy: możliwość zagłodzenia pisarzy, zagłodzenia czytelników, rozwiązanie poprawne.

    Problem pięciu filozofów: możliwość zakleszczenia, możliwość zagłodzenia, rozwiązanie poprawne (zatrudnienie lokaja).

  • 03. Programowanie wielowątkowe

    Procesy i wątki w systemie Windows. Programowanie wielowątkowe w języku C (procedura WinMain). Funkcje sterujące wątku. Przykład. Programowanie wielowątkowe w MFC. Funkcje wątkowe, priorytety. Przykład z użyciem funkcji Afx. Kończenie wątku. Programowanie wielowątkowe w C#. Inicjacja wątku. Synchronizacja przez lock. Synchronizacja przez AutoResetEvent.

  • 04. Projektowanie interakcji

    Podstawowe pojęcia: interakcja, kolaboracja, komunikat, zdarzenie. Diagramy interakcji: diagramy współpracy (kolaboracji), diagramy sekwencji (przebiegu). Elementy diagramów. Opis komunikatu: numer porządkowy, warunek strzegący, określenie iteracji, lista argumentów, zwracany wynik. Przykłady. Diagramy sekwencji a diagramy współpracy - podobieństwa i różnice. Tworzenie i niszczenie obiektu. Wątki równoległe należące do jednego obiektu. Rekurencja. Dokładne określenie czasu.

  • 05. Mechanizmy pracy równoległej

    Algorytmy wzajemnego wykluczenia (algorytm Dekkera). Mechanizmy niskopoziomowe: przerwania, ochrona pamięci, instrukcje specjalne. Mechanizmy wysokopoziomowe: semafory, monitory, sygnały, komunikaty, zdarzenia, potoki, gniazda, zdalne wywołanie procedur (RPC), usługi sieciowe. Rozdaje komunikacji i synchronizacji.

  • 06. Semafory

    Operacje podniesienia i opuszczenia. Niepodzielność operacji. Rodzaje semaforów. Semafor ogólny i semafor binarny: definicja klasyczna i praktyczna. Semafor dwustronnie ograniczony. Semafor uogólniony. Jednoczesne operacje semaforowe. Przykłady.

  • 07. Monitory

    Co to jest monitor? Operacje: wait i signal. Przechodzenie procesów przez monitor. Przykłady. Implementacje monitora: monitor Hoara, monitor Massy, monitory z niejawnym warunkiem (w Javie). Klasa monitor w C#.

  • 08. Komunikaty w Windows

    Okna i procedury okien. Komunikaty systemowe i definiowane w aplikacji. Komunikaty ogólne (WM), komunikaty kontrolek (CCM), komunikaty pola edycji (EM, EN), komunikaty dialogów (CDM). Powiadomienia o zdarzeniach okien, klawiatury, myszy. Komunikaty niekolejkowane (SendMessage) i kolejkowane (PostMessage). Wysyłanie i odbieranie komunikatów do i z kolejki. Obsługa komunikatów. Sprawdzanie komunikatów w czasie długotrwałych operacji.

  • 09. Modelowanie aktywności

    Pojęcia podstawowe: behawioryzm, czas życia obiektu, stan, aktywność i akcja, przejście stanów. Maszyna stanów. Elementy diagramu stanów. Opis przejścia. Rodzaje zdarzeń: zdarzenia wywołania, zdarzenia sygnałowe, zdarzenia zmiany, zdarzenia czasowe. Wyrażenie strzegące. Wyrażenie akcji. Akcje wejściowe i wyjściowe. Stany złożone (sekwencyjne i równoległe). Synchronizacja stanów równoległych. Diagramy aktywności. Aktywności równoległe. Przykłady.

  • 10. Zdalne wywołania procedur (RPC)

    Wywołanie procedur między procesami. Pojęcie serwera i klienta. RPC w sieci. Reprezentacja danych. Filtry XDR. Identyfikacja procedury zdalnej. Rejestracja procedury. Wywołanie procedury. Przykład. RPC a wywołanie równoległe. Wywołanie równoległe przez rozgłaszanie (broadcast). Ograniczenia. Asynchroniczne RPC. IDL. Atrybuty ACF. Wywołanie asynchroniczne. Oczekiwanie na odpowiedź. Obsługa wywołania przez serwer. Wysłanie odpowiedzi przez serwer. Przyjęcie odpowiedzi przez klienta.

  • 11. Równoległość w środowisku rozproszonym

    WebServices: usługi sieciowe jako zdalne wywoływanie procedur. HTTP: żądania i odpowiedzi. Przekazywanie danych przez HTTP (XML). Opis usług (WSDL). Przykłady. SOAP. UDDI.

    WCF - implementacja WebServices przez Microsoft. Przykład: interfejs i implementacja. Obsługa wielu żądań równocześnie. Farma serwerów. Architektura wielopienna.

    Architektura Rich Internet Application (RIA) - podział funkcjonalności między klienta a serwer.