Codifiaciones
Páginas: 5 (1019 palabras)
Publicado: 6 de octubre de 2014
Programación Paralela y Concurrente
Solución Examen I
I. Responde V o F las siguientes afirmaciones 1 punto
a)
b)
c)
d)
Un hilo puede únicamente crearse en Java utilizando la clase Thread: FALSO
El cambio de contexto produce un cambio de estado: VERDADERO
Todos los hilos se ejecutan del modo supervisor o núcleo: FALSO
Los programasconcurrentes utilizan instrucciones que se intercalan para ejecutar
su código: VERDADERO
e) Los programas concurrentes son totalmente deterministas: FALSO
II. Conteste las siguientes preguntas 2 puntos
a) Define programación concurrente y para que se utiliza: Programación concurrente
es el nombre que se da a la notación y técnicas de programación que permiten
expresar el paralelismo potencial ylos problemas de sincronización y comunicación
resultantes (permite abstraerse de los detalles de la implementación). Y se utiliza
para resolver problemas que necesitan resolver tareas al mismo tiempo.
b) Los problemas que debe resolver un programa concurrente efectivo son la
sincronización y exclusión mutua, explique en qué consiste cada uno:
Los algoritmos de exclusión mutua
abreviada seusan en programación
concurrente para evitar el ingreso a sus secciones críticas por más de un proceso a la
vez. La sección crítica es el fragmento de código donde puede modificarse un recurso
compartido.
Las primitivas para programación concurrente basada en Memoria compartida
resuelven los problemas de Sincronización entre procesos y de exclusión mutua
utilizando la semántica de acceso amemoria compartida.
c) Escribe tres diferencias entre un proceso y un hilo:
1. Hilo siempre corre dentro del contexto de otro programa.
2. Los procesos mantienen su propio espacio de direcciones y entorno de
operaciones.
3. Los hilos dependen de un programa padre en lo que se refiere a recursos de
ejecución.
d) ¿Qué es un semáforo, para que se utiliza, tipos de semáforos y sus operacionesbásicas que puede realizar?
Un semáforo sirve para controlar el número de hilos que acceden a la variable
compartida. Existen 3 tipos de semáforos: binarios, normales y mutex. Los
semáforos cuentan con dos operaciones básicas, una de ellas es para reservarlo y
la otra para liberarlo, wait (espera) y signal (señal) respectivamente, equivalente
down y up.
III Dado las siguientes expresiones,elabore lo siguiente:
a)
b)
c)
d)
Condiciones de Beristaín
Tabla y grafo de precedencia
Determine cuantos procesos debe usar de forma optimizada
Elabore el programa en java utilizando semáforos necesarios para resolver la
comunicación y sincronización.
S1: x= a + 1
S2: y= x – 2
S3: w= b + 7
S4: z = w + j + 5
S5: v = x + y + w + z – 10
L(S1) ∩ E(S2) =∅
L(S1) ∩ E(S3) = ∅L(S1) ∩ E(S4) =∅
E(S1) ∩ L(S2) ≠∅
E(S1) ∩ L(S3) = ∅
E(S1) ∩ L(S4) = ∅
E(S1) ∩ E(S2) = ∅
E(S1) ∩ E(S3) = ∅
E(S1) ∩ E(S4) = ∅
L(S1) ∩ E(S5) = ∅
L(S2) ∩ E(S3) =∅
E(S1) ∩ L(S5) ≠ ∅
E(S2) ∩ L(S3) = ∅
E(S1) ∩ E(S5) = ∅
E(S2) ∩ E(S3) =∅
L(S2) ∩ E(S4) = ∅
L(S2) ∩ E(S5) =∅
E(S2) ∩ L(S4) = ∅
E(S2) ∩ L(S5) ≠ ∅
E(S2) ∩ E(S4) = ∅
E(S2) ∩ E(S5) ≠∅
L(S3) ∩E(S4) =∅
L(S3) ∩ E(S5) = ∅
E(S3) ∩ L(S4) ≠ ∅
E(S3) ∩ L(S5) ≠∅
E(S3) ∩ E(S4) = ∅
E(S3) ∩ E(S5) =∅
L(S4) ∩E(S5) = ∅
E(S4) ∩ L(S5) ≠ ∅
E(S4) ∩ E(S5) = ∅
S1
S3
S4
S2
S5
S1
S2
S3
S4
S5
S1
-
NO
SI
SI
NO
S2
-
-
SI
SI
NO
S3
-
-
-
NO
NO
S4
-
-
-
-
NO
S5
-
-
-
-
-Código en Java:
public class SemaforoBinario {
protected int contador = 0;
public SemaforoBinario (int valorInicial) {
contador = valorInicial;
}
synchronized public void WAIT () {
while (contador == 0)
try {
wait();
}
catch (Exception e) {}
contador--;
}
synchronized public void SIGNAL () {
contador = 1;
notify();
}
}
public class P1 extends EjecutaEje1Sem implements...
Leer documento completo
Regístrate para leer el documento completo.