Universidad de Cádiz Escuela Superior de Ingeniería

Anuncio
Universidad de Cádiz
Escuela Superior de Ingeniería
Ingeniería Técnica en Informática de
Gestión
Problemas de Programación Concurrente
y Distribuida
© Antonio J. Tomeu Hardasmal
Febrero 2009.
1.-Considerar el siguiente fragmento de programa para dos procesos A y B:
Proceso A
for a:=1 to 10
x:=x+1;
Proceso B
for b:= 1 to 10
x:=x+1;
Suponer que la variable x está inicializada a cero, que ambos
procesos se ejecutan una sola vez y que las variables a y b no son
compartidas. Los dos procesos pueden ejecutarse a cualquier velocidad.
¿Cuáles son los posibles valores resultantes para x? Para cada valor,
indique la secuencia de interfoliación que lleva a él. Nota: suponga que x
debe ser cargada en un registro para incrementarse.
2.-En vez de la instrucción Test and Set, algunos ordenadores proveen de
una instrucción atómica que incrementa en 1 el valor de una variable Lock:
Function {ATOMICA} TestAndInc (Var Lock: Integer):Integer;
Begin
TestAndInc:=Lock;
Lock:=Lock+1;
End;
Escribir protocolos de entrada y salida para proteger una sección crítica
utilizando dicha solución.
3.-Escribir un programa concurrente para multiplicar matrices de nxn con n
procesos concurrentes. Suponga que los elementos de las matrices se
pueden leer simultáneamente. Extienda el programa para realizar
concurrentemente el cálculo del producto de ambas diagonales de una
matriz.
4.-Escribir un programa para calcular el producto escalar de dos vectores de
N componentes. Puede utilizar tantos procesos concurrentes como sea
necesario.
5.-¿Qué diferencia fundamental existe entre un bucle de espera activa y una
variable interruptor que da turnos para la sincronización de procesos?
6.-Generalice un mecanismo de sincronización por turnos para 3 procesos.
Proponga una Red de Petri que lo modele.
7.-¿Utiliza la espera ocupada el Algoritmo de Dekker, si el segundo proceso
está en su sección crítica, Turno=1 y el primer proceso está intentando
entrar en su sección crítica?
8.-Probar que el Algoritmo de Dekker hace imposible que un proceso espere
indefinidamente a entrar en su sección crítica, con la suposición de que
siempre que un proceso entra en la sección crítica eventualmente la
abandonará.
9.-Generalizar el Algoritmo de Dekker a tres procesos.
10.-¿Qué ocurriría si el Algoritmo de Dekker se hubiera programado así?
Procedure Pi;
Begin
Repeat
Turno := i;
While Turno<>i Do;
Sección_Crítica;
Turno := j;
Forever;
End;
11.-Al siguiente algoritmo se le conoce como solución de Hyman al
problema de la exclusión mutua. ¿es correcta dicha solución?
Proceso 1
Proceso 2
c1:=0;
c2:=0;
while turno<>1 do
while turno<>2 do
begin
begin
while c2=0;
while c1=0 do
turno:=1;
turno:=2;
end;
end;
Sección_Crítica;
Sección_Crítica;
c1:=1;
c2:=1;
Inicialmente, las variables c2,c2 y turno valen 1.
12.-La instrucción EX intercambia los contenidos de dos posiciones de
memoria, y es equivalente a la ejecución atómica e indivisible de las tres
operaciones siguientes:
temp :=a;
a:=b;
b:=temp;
Construya un mecanismo de exclusión mutua basado en la instrucción EX.
13.-El siguiente programa es una solución al problema de la exclusión
mutua para dos procesos. Discutir la corrección de la solución; si es
correcta, probarlo formalmente y si no lo es, proponer una secuencia de
interfoliación que lleve a romper la exclusión mutua.
Program Prueba;
Var c1, c2: Integer;
Procedure P1
Begin
Repeat
Resto_código
Repeat
Procedure P2;
Begin
Repeat
Resto_código;
Repeat
c1:=1-c2;
c2:=1-c1;
Until c2<>0
Until c1<>0;
Sección_Crítica;
Sección_Crítica;
c1:=1;
c2:=1;
Forever
Forever;
End;
End;
Begin
c1:=1;
c2:=1;
cobegin
P1;P2
coend;
End;
14.-Si se quiere pasar un semáforo como parámetro, ¿cómo habría que
pasarlo, por valor o por referencia? ¿Qué ocurre si se escoge la opción
equivocada?
15.-Añadir un semáforo al siguiente programa de modo que siempre
imprima 40.
Program Aumentar;
Const m=20;
Var n: Integer;
Procedure inc;
Var i :Integer;
Begin
For y:=1 to m Do
n:=n+1;
End;
Begin {Principal}
n:=0;
Cobegin
inc;inc
Coend;
Writeln (n);
End.
16.-¿Funcionaría una solución de espera ocupada basada en una variable de
turno si los dos procesos se ejecutaran en paralelo en dos procesadores
distintos, pero con un esquema de memoria común?
17.-Probar que bajo cualquiera de las definiciones posibles de semáforos, la
solución al problema de la exclusión mutua basada en ellos está libre de
interbloqueos.
18.-Probar utilizando lógica temporal la propiedad de exclusión mutua para
el algoritmo de Dekker.
19.- ¿Qué cualidad han de poseer las operaciones de los semáforos para
que el semáforo funcione? ¿Cómo se puede conseguir dicha cualidad al
implementar semáforos en el sistema operativo?
20.- La sincronización con monitores emplea variables de condición con
primitivas wait y send. Claramente, habría sido mejor emplear una forma
más general de la forma
WaitUntil expresión booleana;
¿Por qué no se emplea dicho esquema?
21.-Utilizar la equivalencia formal monitores-semáforos para adaptar la
solución al problema del productor-consumidor con buffer acotado basada
en un monitor, a otra con semáforos emulando monitores.
22.-Efectuar el mismo desarrollo para la solución con monitores del
problema de los lectores-escritores.
23.-Diseñar una Red de Petri que sirva de modelo al problema del productor
consumidor con buffer acotado y semáforos. Descargue el applet Java
situado en el URL.
http://www.daimi.aau.dk/PetriNets/tools/java/Esser/
y simule el problema para un buffer con N=10.
24.- Considérese un programa concurrente con las tareas P y Q, que se
muestran a continuación. A, B, C, D y E con sentencias arbitrarias atómicas
(indivisibles).
Task body P is
begin
A;
B;
C;
end;
Task body Q is
begin
D;
E;
end;
Indicar todas las posibles intercalaciones de la ejecución de los dos
procesos anteriores (indicarlo por medio de "trazas" de ejecución dadas en
términos de sentencias atómicas).
24.- Diseñar una Red de Petri que sirva de modelo al problema de la
exclusión mutua para dos procesos y simúlela con el applet Java situado en
el URL siguiente:
http://www.daimi.aau.dk/PetriNets/tools/java/Esser/
Realice la simulación con cinco procesos concurrentes.
25.-Se dispone de una cola de impresión con k ranuras. Cuando un proceso
debe enviar un trabajo de impresión ocupa una de las ranuras si las hay
disponibles. En caso contrario, debe esperar. Cuando haya ranuras
disponibles, el proceso será desbloqueado y podrá efectuar la impresión. Se
pide:
a) Diseñar una solución al problema utilizando semáforos.
b) Diseñar otra solución utilizando un monitor.
Nota: puede suponer que dispone de un proceso encargado de gestionar la
cola que señaliza de alguna manera la presencia o ausencia de ranuras en
ella.
25.- Dado un sistema con cuatro procesos concurrentes cuyas secciones
críticas están protegidas mediante un semáforo binario, se pide:
a) Proponer una Red de Petri que modele el problema.
b) Construir la matriz de incidencia de la red.
c) A partir de dicha matriz, del marcado inicial y de la ecuación de
estado de la red, dar la sucesión de marcados que muestren una
evolución de la red para la cual todos los procesos concurrentes
pasen al menos una vez por su sección crítica.
d) Demostrar que la exclusión mutua se preserva.
e) Simular la red en
http://www.daimi.aau.dk/PetriNets/tools/java/Esser/
26.-Sugonga que implementa sus soluciones para lograr exclusión mutua
utilizando semáforos en un multiprocesador con memoria compartida y
cachés dedicadas para cada procesador. ¿Funcionarán dichas soluciones? ¿Y
si no funcionan, qué solución podría darse?
27.-Escriba una solución al problema del productor-consumidor suponiendo
que se ejecutan en maquinas distintas de un sistema distribuido, y que
dispone de primitivas de comunicación send-receive bloqueantes.
28.-Realice el mismo ejercicio suponiendo un sistema distribuido con
exclusión mutua centralizada y un buffer de tamaño N cuyo estado es
indicado por un proceso Estado_buffer que indica en tiempo real cuántos
objetos hay en el mismo.
29.- Se desea disponer de un servidor remoto que realice un ordenamiento
BubbleSort de un array de números. Especifique la interfaz de operaciones
que dicho servidor debería tener. ¿Podría derivarse de esta especificación el
resguardo del servidor?
30.- Supongamos una exclusión mutua distribuida resuelta en Token-Ring ;
Adapte el Algoritmo de exclusión mutua para N procesos de Lamport a esta
circunstancia. ¿Cuál es la principal desventaja de este esquema? ¿Por qué?
31.- ¿Qué diferencia fundamental existe entre un bucle de espera activa y
una variable interruptor que da turno para la sincronización de procesos?
32.- Dos procesos imprimen sus resultados utilizando para ello un buffer
intermedio de 64 Kb. Los procesos deben estar sincronizados de modo que
ninguno de ellos escriba en el buffer cuando esté lleno, o cuando el espacio
disponible en el mismo sea menor que el fichero a imprimir. Por otra parte,
en caso de haber espacio disponible el buffer se manejará como una cola,
empezando un a escribir un proceso inmediatamente a continuación de
donde terminó el anterior (esto deberá indicarse de alguna forma). Se pide:
a) Diseñar una solución basada en semáforos que permita a ambos
procesos imprimir cumpliendo los requerimientos descritos.
b) Demostrar, utilizando lógica temporal proposicional, su corrección.
c) Proponer una solución basada en monitores con el mismo propósito.
33.- El lenguaje Pascal tiene la construcción de “registro variante”, según la
cual el campo de un registro puede contener una de varias alternativas.
Durante la ejecución, no existe forma segura de decir cuál de ellas se
acepta. ¿Qué implicaciones tiene esto para las llamadas RPC?
34.- Se dispone de dos tipos de recursos R1 y R2 de cada uno de los cuales
hay n1 y n2 unidades disponibles en el sistema respectivamente. Desarrolle
un monitor para gestionar estos recursos, asumiendo que cada proceso
puede requerir:
a) una unidad de R1 o
b) una unidad de R2 o
c) una unidad de R1 y otra de R2.
La solución debe satisfacer las siguientes condiciones:
• Si un proceso requiere a R1 y a R2, no le será concedido ningún recurso
a menos que haya unidades disponibles de ambos.
• La prioridad se dará a aquellos procesos que pidan un recurso de cada
clase sobre aquellos que pidan un único tipo de recurso.
35.- Modelar el problema del productor/consumidor en los dos casos
siguientes:
•
•
Buffer no acotado
Buffer acotado, suponiendo un tamaño finito para resolver el
problema.
36.- Resolver el problema de sincronización planteado por los filósofos
comensales utilizando una red de Petri que modele a los filósofos y el
estado de los recursos compartidos.
37.- Sea la red de Petri que se muestra en la Figura:
¿Son los siguiente marcados alcanzables desde el marcado inicial que se
muestra? (1,0,3), (0,2,1), (0,1,4).
38.- Sea la red de Petri que se muestra en la Figura:
Comprobar si los marcados (0,1,0,2) y (0,3,0,2) pueden ser alcanzados
desde el inicial mediante alguna secuencia particular de disparo.
39.- Dada la Red de Petri que modela el Algoritmo de Dekker expuesta en
clase de teoría, demostrar que satisface la exclusión mutua sobre secciones
críticas. Realizar el mismo ejercicio para la red del primer intento (tomando
turnos) y del segundo (indicando presencia).
40.- Dada la siguiente Red de Petri:
●
●
●
¿es alcanzable un marcado que asigne un número de marcas mayor de cero
a los dos lugares situados entre las transiciones? En caso positivo, dé una
secuencia de entrelazamiento que conduzca al mismo.
41.- Un quiosco de venta de lotería se encuentra atendido por dos
vendedoras A y B, y está organizado en forma de cola única. Cuando a un
cliente le llega su turno, se dirige a la vendedora que esté libre. Si ambas lo
están siempre se dirige a la vendedora A. Diseñe un monitor que modele la
situación.
42.- Un hipermercado dispone de N cajas registradoras, que pueden estar
abiertas o no al público. De las abiertas, algunas son “Cajas Rápidas” y sólo
permiten el uso a clientes con 10 o menos artículos de compra. Escriba un
monitor que modele la situación.
43.- Escriba si es posible, una solución al problema de los filósofos
utilizando regiones críticas condicionales.
44.- Dada la siguiente Red de Petri marcada, se pide:
a) Dar una interpretación semántica de la misma en términos de
entidades concurrentes y secciones críticas.
b) Bajo tal interpretación, ¿se da la exclusión mutua a nivel de secciones
críticas?
c) Bajo tal interpretación, ¿existe la posibilidad de un interbloqueo?
●
●
●
●
●
45.- Considere una vereda de montaña transitable en ambos sentidos, que
atraviesa un precipicio de considerable profundidad. La dejadez de la
administración ha obligado a los lugareños a resolver la situación mediante
un tronco que salva el abismo. Desgraciadamente, su ancho sólo permite
cruzar a una persona por vez. Dé una solución al problema utilizando
semáforos, regiones críticas y monitores.
46.- ¿Cuál es la ventaja de la concurrencia en sistemas monoprocesador?
47.- ¿Cuáles son las diferencias entre programación concurrente, distribuida
y paralela?
48.- Diferencia multiprogramación, multiproceso y procesamiento
distribuido.
49.- El siguiente código debe imprimir como salida 50 ó 110 ¿Lo hace
correctamente?
Program Incógnita
Var x: integer;
Task Body P1 is
Begin
x:=x+10;
End P1;
Task Body P2 is
Begin
If x>100 then write(x) else write(x-50)
End P2;
Begin
Cobegin
P1;P2;
Coend;
End Incógnita.
50.- Suponga a n entidades concurrentes compartiendo un archivo en modo
L/E. Controle el acceso a tal archivo.
51.- Un grupo de alumnos universitarios comen una fondue que contiene k
trozos de carne. Para comer, un alumno tome su varita, y se sirve un trozo
de carne, si lo hay. Si no lo hay, llama al camarero y espera a que este
llena la fondue. Desarrolle una solución al problema utilizando semáforos,y
sincronizando los procesos alumno y camarero. Desarrollar igualmente una
solución basada en monitores.
52.- El segundo puente sobre la bahía ha sido construido con un carril en
cada sentido. Sin embargo, la escasa financiación recibida del Ministerio de
Fomento ha obligado a que exista un tramo central de 100 metros de
longitud con un solo carril. Desarrolle un monitor que controle el tráfico.
Descargar