12.07.2015 Views

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

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!