Codifiaciones

Páginas: 5 (1019 palabras) Publicado: 6 de octubre de 2014
Benemérita Universidad Autónoma de Puebla
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.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS