Ukázka písemné zkoušky: Písemná zkouška z PPR Datum: Jméno: Body: -------------------------------------------------------------------------------- 1.Vysvětlete stručně pojmy: [2b] Asychronní komunikace (princip, základní operace) odesilatel vklada zpravu do vyrovnavaci pameti a prijemce si ji vyzvedne z teze nebo jine vyrovnavaci pameti az ji bude potrebovat [2b] Reentrantní program (kdy musí být program vlákna reentr.?) podle jednoho reentrantniho programu muze byt provadeno vice procesu [2b] Kritická sekce (uveďte jednoduchý příklad) cati programu, v ramci kterych muze dojit ke konfliktnimu prostupu k datum [2b] Operace P() nad semaforem (a jaká data má objekt semaforu) [2b] Typový monitor (a jak se realizuje - Ada, Java) [2b] Virtuální versus fyzická topologie (nějaké příklady) [2b] Nedeterminismus v programu (příkl. nedetermin. konstrukce) [2b] Urychlení paralelního algoritmu (obecně + nějaký příklad) [2b] Zřetězené zpracování dat (též proudové, angl. pipe-lining) kazdy procesor nad daty provede presne specifikovanou operaci a posle je dal [2b] Příkaz select v ADĚ (k čemu je dobrý, příklad) [2b] K čemu je dobrá "nástěnka" (tuple space) v programovacím jazyce Linda [3b] Redukční operace v MPI - jaké jsou a jaké (zhruba) parametry má příslušná funkce. Tato první část písemky musí být napsána na minimálně 15 bodů, jinak není další část hodnocena !!! -------------------------------------------------------------------------------- 2.[6b] Napište v Javě program, který vytvoří jedno vlákno. Vlákno vypíše "NAZDAR !" a skončí. Hlavní program čeká na skončení vlákna a pak také skončí. 3.[8b] Napište v ADĚ typový monitor (formou generic package), který realizuje kritickou sekci nad proměnnou libovolného typu (TYPE_VAR - generic parametr). Uvažované operace jsou zápis, čtení a nulování proměnné. Poznámka: Neznáte-li dobře Adu, proveďte řešení monitoru pomocí třídy TYP_MON v Javě pro daný typ TYPE_VAR (jiná třída). 4.V hlavním programu potřebujete zajistit konkurenční přístup k proměnné typu string s délkou 20 znaků. Využijte monitor z předchozího příkladu 3. a) [2b] Zaveďte typ pro string s délkou 20 (v Javě třída TYPE_VAR). b) [2b] Napište proceduru pro nulování (tj. "vymezerování") stringu. c) [4b] Napište hlavní program, ve kterém vytvoříte konkrétní monitor a zapíšete do něj "DDT ZDAR !" 5.[8b] Napište kostru programů pro součet dlouhého pole reálných čísel s využitím výpočetního modelu farmer-workers a operací z rozhraní PVM. Farmer: Worker: 6.[5b] Napište (či alespoň naznačte) MPI program, který zjistí po rozběhnutí počet procesů, tento počet vypíše (ale jen jednou!) a skončí. Poznámka: U příkladů typu jako 5 a 6 není nezbytně nutná přesná syntaxe volání funkcí z rozhaní PVM resp. MPI. (a obecně není nutné se striktně držet syntaxe jazyka C). Příklady je možné napsat též v "pseudokódu", třeba: ... příjem zprávy s kódem 1, (funkce receive()) vybalení položky xx ze zprávy, (funkce upk..()) ...