
SOLUCIÓN DEL PRIMER EXAMEN PARCIAL CORRESPONDIENTE A LA MATERIA DE PROGRAMACIÓN CONCURRENTE
I. Complementa las siguientes oraciones:
a) Un proceso esta representado por el valor del contador de programa, el contenido de los registros de procesador, una pila, y una sección de datos que contiene variables locales.
b) Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la ultima.
c) Cuando todos los procesos están esperando porque ocurra un evento que nunca se producirá se dice que existe un deadlock.
d) Un hilo es una secuencia de control dentro de un proceso que ejecuta sus instrucciones de forma independiente
e) Los hilos se dividen en hilos de usuario y hilos del sistema.
f) Cuando existe un grupo de procesos que nunca se les otorga tiempo de procesador para avanzar los procesos sufren de: inanición.
g) los estándares de Hilos son: poxis, win32 y OS/2.
h) las técnicas para planificar hilos son: muchos hilos en un procesador lógico, un hilo por procesador lógico y muchos hilos en muchos procesadores lógicos.
i) Para crear hilos en java existen dos formas utilizando la clase Thread o la interfaz Runnable.
j) un hilo se crea con el operador new y esta en el estado de listo y para pasar a estado de bloqueado se utiliza la instrucción wait y para poder pasar al estado de listo se utiliza notify().
k) Para establecer la prioridad de un hilo se utiliza setpriority y van de un rango de 0 , 5 y 10.
l) isAlive() checa si el hilo esta vivo. Un hilo esta vivo si ha sido lanzado con estará y no ha muerto todavía.
m) los hilos daemon tienen la prioridad mas baja y se utilizan para servicios específicos.
II contesta las siguientes preguntas:
a) ¿Cuál es la ventaja de la concurrencia en los sistemas monoprocesador?
Aprovechar los ciclos de procesador
Ya que cuando un proceso que ocupa el procesador un determinado momento necesita hacer una operación de entrada/salida, puede abandonar el procesador para que otro proceso pueda utilizarlo y así aprovecha ciclos de procesador.
Otra ventaja es la multiprogramación (forma de gestionar los procesos)
b) Define programación concurrente
Es una disciplina que se encarga del estudio de las notaciones que permitan especificar la ejecución concurrente de las acciones de un programa, así como las técnicas para resolver los problemas inherentes a la ejecución concurrente, que son básicamente comunicación y sincronización.
c) ¿Qué es una sección critica?
Es un trozo de código (instrucciones) al que acceden varios hilos y esta sección crítica debe tener exclusión mutua.
d) Explica los problemas de la concurrencia
1. SINCRONIZACION
2. EXCLUSION MUTUA
Sincronización: En un programa se deben contemplar ciertas situaciones. Como ejemplo seria que en un buffer se quiere meter más información y el buffer esta lleno o de lo contrario que este vació y se quiera obtener información. A eso se refiere la sincronización.
Exclusión mutua: no deben acceder a la sección crítica 2 hilos a la vez.
e) Explica la diferencia entre los sistemas fuertemente acoplados y no acoplados
Sistemas fuertemente acoplados: tanto los procesadores como otros dispositivos (incluida la memoria) están conectados a un bus. Esto permite que todos los procesadores puedan compartir la misma memoria. Puede ocurrir que cada procesador tenga su propia memoria local, pero la
sincronización y comunicación entre procesos se hará mediante variables situadas en la memoria compartida, es decir, mediante variables compartidas
Sistemas débilmente acoplados: aquí no existe una memoria compartida por los procesadores. Cada procesador tiene su propia memoria local y está conectado con otros procesadores mediante algún tipo de enlace de comunicación. Un tipo especial de estos sistemas lo constituyen los sistemas distribuidos, que están formados por un conjunto de nodos distribuidos geográficamente y conectados de alguna forma. Estos nodos pueden ser a su vez mono o multiprocesador. El sistema distribuido por antonomasia es Internet.
f) Cuales son las propiedades que debe cumplir todo programa concurrente.
Propiedades de seguridad: son aquellas que aseguran que nada malo va a pasar durante la ejecución del programa.
Propiedades de viveza: son aquellas que aseguran que algo bueno pasará eventualmente durante la ejecución del programa.
Exclusión y sincronización.
Interbloqueo pasivo: no deben haber abrazos mortales (deadlock)
Interboqueo activo: no debe haber livelocks
g) Explica la diferencia entre ciclo de viva del proceso y de un hilo.
Ciclo de vida de un hilo.

Ciclo de vida de un proceso.

III usando condiciones de Berenstain
a) Construir el grafo del siguiente trozo de código
b) Usando el par cobegin/coend. Construya el programa concurrente correspondiente.
c) Comente que valores posibles tendrían las variables x, e y al finalizar la ejecución de los siguientes tres procesos concurrentes. Los valores iniciales son los siguientes:
d) X=1, y=4, S1=1,S2=0 yS3=1.
Proceso A
S1: x=y*2;
S2: y=y+1;
Proceso B
S3: x=x+1;
S4: y=8+x;
Proceso C
S5: x=y+2;
S6: y=x+4;
