Synchronizacja przetwarzania

Zadania

Klasyczne problemy synchronizacji

Producent-konsument

Pięciu filozofów

Czytelnicy i pisarze

Śpiący fryzjerzy

Realizacja mechanizmów synchronizacji

Bariery

  1. Bariera
    Działanie bariery polega na blokowaniu procesów wywołujących funkcję synchronizującą aż do momentu, gdy ich liczba osiągnie ustaloną wartość.
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (spotkania)
  2. Bariera z wagami
    Procesy wywołują funkcję synchronizującą z parametrem, stanowiącym wagę. Przełamanie bariery nastąpi po przekroczeniu przez sumę wag ustalonej wartości.
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (spotkania)

Semafory

  1. Semafor binarny
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (obiekt chroniony)
  2. Semafor ogólny (zliczający)
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (obiekt chroniony)
  3. Semafor uogólniony z preferencją sprawiedliwości
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (obiekt chroniony)
  4. Semafor uogólniony z preferencją przepustowości
    Rozwiązania: Java, Ada 95 (obiekt chroniony), Ada 95 (obiekt chroniony)

Zadania z egzaminów

  1. Proszę przedstawić realizację mechanizmu komunikacji typu publikacja-subskrypcja (ang. publish-subscribe) z blokowaniem publicysty i możliwością pracy subskrybentów w trybie off line. Działanie mechanizmu opiera się na następujących zasadach:

    • subskrybent musi się zarejestrować zanim będzie mógł odbierać komunikaty, rejestracja jest nieblokująca i zwraca identyfikator (kolejną wartość całkowitą począwszy od 0), który musi być użyty przy odbiorze wiadomości,
    • publicysta jest blokowany podczas przekazywana wiadomości do momentu, aż wszyscy zarejestrowani w danym momencie subskrybenci odbiorą tę wiadomość,
    • subskrybent jest blokowany podczas obierania wiadomości do momentu, aż zostanie ona opublikowana,
    • wiadomość nie może trafić do subskrybenta, który rejestruje się po rozpoczęciu przekazywania wiadomości przez publicystę.

    Mechanizm powinien udostępniać następujące operacje:

    • int register() — rejestrowanie subskrybentów,
    • Message read(int id) — odczyt wiadomości przez subskrybenta,
    • write(Message m) — publikowanie wiadomości.
npr/synchronizacja.txt · ostatnio zmienione: 2011/07/08 21:23 przez darek
 
Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki