====== Semestrální úloha ====== ===== Zadání zápočtových prací ===== ==== Společné požadavky ==== * Programy musí podporovat interaktivní i dávkové řízení (např. přidání a odebrání procesu). * Kromě správnosti algoritmu se zaměřte na prezentaci výsledků. * Srozumitelné výpisy logujte na konzoli i do souboru/ů. Výpisy budou opatřeny časovým razítkem logického času. * Pro implementaci programu si zvolte libovolnou vhodnou middlewarovou technologii. * Po konzultaci se cvičícím si můžete navrhnout vlastní zadání. ==== Jednotlivá zadání ==== * **Leader election** Implementujte program zasílající zprávy mezi procesy. Zprávy se budou posílat přes centrální proces. Tento proces se vybere pomocí algoritmu leader election. Procesy budou obsahovat metody: pošli/přijmi zprávu, odhlaš se ze systému, skonči bez odhlášení, přihlaš se do systému, výběr centralního procesu. Procesy budou jednoznacně identifikovány IP adresou a čislem procesu. * **Leader election** Implementujte program realizující výlučný přístup k proměnné. Přístup bude realizován přes centrální proces. Tento proces se vybere pomocí algoritmu leader election. Procesy budou obsahovat metody: zapiš hodnotu, přečti hodnotu, odhlaš se ze systému, skonči bez odhlášení, výběr centrálního procesu. Procesy budou jednoznačně identifikovány IP adresou a číslem procesu. * **Sdílená paměť** Implementujte program realizující sdílenou paměť. Použijte algoritmus s úplnou replikací. * **Plně distribuovaný výlučný přístup** Implementujte program realizující výlučný přístup k proměnné. Výlučný přístup bude realizován pomocí plně distribuovaného algoritmu s výjimkou předávání pověření. * **Výlučný přístup** Implementujte program realizující výlučný přístup k proměnné. Výlučný přístup bude realizován pomocí algoritmu předávání pověření. Realizace bude obsahovat přidání procesu, odebrání procesu s/bez odhlášení, regeneraci pověření. * **Zablokování při sdílení prostředku** Implementujte program řešící zablokování při sdílení prostředku apriorní metodou. * **Zablokování při sdílení prostředku** Implementujte program řešící zablokování při sdílení prostředku aposteriorní metodou. * **Zablokování při komunikaci** Implementujte program řešící zablokování při komunikaci. * **Ukončení výpočtu** Implementujte program detekující ukončení výpočtu.