Introducción - Departamento de Lenguajes y Sistemas Informáticos
Introducción - Departamento de Lenguajes y Sistemas Informáticos
Introducción - Departamento de Lenguajes y Sistemas Informáticos
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programación Concurrente. I.T. <strong>Sistemas</strong> y Gestión. Relación <strong>de</strong> Problemas 25. Suponer un sistema <strong>de</strong> tiempo real que dispone <strong>de</strong> un captador <strong>de</strong> impulsosconectado a un contador <strong>de</strong> energía eléctrica. La función <strong>de</strong>l sistema consiste en contar elnúmero <strong>de</strong> impulsos producidos en 1 hora (cada Kwh consumido se cuenta como unimpulso) e imprimir este número en un dispositivo <strong>de</strong> salida. Para ello se ha <strong>de</strong> escribirun programa concurrente con 2 procesos: un proceso acumulador (lleva la cuenta <strong>de</strong> losimpulsos recibidos) y un proceso escritor (escribe en la impresora). En la variable comúna los 2 procesos "n" se lleva la cuenta <strong>de</strong> los impulsos. Suponiendo que el sistema seencuentra en un estado correspondiente al valor <strong>de</strong> la variable n=N y en estascondiciones se presentan simultáneamente un nuevo impulso y el final <strong>de</strong>l periodo <strong>de</strong> 1hora, obtener las posibles secuencias <strong>de</strong> ejecución <strong>de</strong> los procesos y cuáles <strong>de</strong> ellas soncorrectas.6. La inhibición <strong>de</strong> las interrupciones no funciona correctamente cuando hay seccionescríticas anidadas. Escribir 2 rutinas: ProtocoloEntrada (conecta las interrupciones) yProtocoloSalida (las <strong>de</strong>sconecta) para resolver el problema.7. En vez <strong>de</strong> la instrucción TestAndSet, algunos or<strong>de</strong>nadores proveen <strong>de</strong> una instrucciónatómica que incrementa en 1 el valor <strong>de</strong> Lock:FUNCTION {ATOMICA} TestAndInc(VAR Lock:INTEGER):INTEGER;BEGINTestAndInc:=Lock; Lock:=Lock+1END;Escribir protocolos (uno <strong>de</strong> entrada y otro <strong>de</strong> salida) para una sección crítica utilizandodicha instrucción.8. Suponer que el siguiente algoritmo (inserción directa):PROCEDURE sort(inferior,superior:INTEGER);VAR i,j: INTEGER;BEGINFOR i := inferior TO superior-1 DOFOR j := i+1 TO superior DOIF a[j] < a[i] THEN swap(a[i], a[j]);END;quisiese ser utilizado en un programa paralelo <strong>de</strong> la forma siguiente:COBEGIN sort(1,n);sort(n+1,2n) COEND;merge(1,n+1,2n);a) Si el tiempo <strong>de</strong> ejecución secuencial <strong>de</strong>l algoritmo es t(n)=n(n-1)/2 (≈ n 2 /2); ¿Cuálsería el tiempo <strong>de</strong> ejecución <strong>de</strong>l programa paralelo si la mezcla lleva en realizarse noperaciones?b) Compruébese con una tabla que el número <strong>de</strong> operaciones <strong>de</strong>l algoritmo paraleloes significativamente menor.c) Escribir un procedimiento <strong>de</strong> mezcla que permitiese paralelizar las 3 operaciones:COBEGIN sort(1,n);sort(n+1,2n);merge(1,n+1,2n) COEND;9. Escribir un programa concurrente para multiplicar matrices 3x3 con 3 procesosconcurrentes. (Nota: suponer que los elementos <strong>de</strong> las matrices se pue<strong>de</strong>n leersimultáneamente).10. Con el grafo <strong>de</strong> sincronización <strong>de</strong> la figura, escribir 2 protocolos: