miércoles, 4 de noviembre de 2015

2.4 Concurrencia y Secuenciabilidad



Los procesos son concurrentes si existen simultáneamente. Los procesos

concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos, lo cual significa que en ocasiones requieren cierta sincronización o cooperación.

• Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relación entre ellos como puede ser la cooperación para un determinado trabajo o el uso de información o recursos compartidos.






2.4.1 Multiprogramación con un único procesador.
• En este modelo todos los procesos concurrentes ejecutan sobre un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.












2.4.2 Multiprocesador.

• Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecución sino también superponerla. En este caso si existe una verdadera ejecución simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.

2.4.3 Multícomputadora

• Una Multícomputadora es una máquina de memoria distribuida, en contraposición con el multiprocesador que es de memoria compartida. Está formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre sí a través de una red de interconexión, empleando el método de paso de mensajes. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los distintos procesadores.


2.4.4 Exclusión Mutua de Sección Crítica

• El método más sencillo de comunicación entre los procesos de un programa concurrente es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede hacer que la acción de un proceso interfiera en las acciones de otro de una forma no adecuada. 
Aunque nos vamos a fijar en variables de datos, todo lo que sigue seria valido con cualquier otro recurso del sistema que solo pueda ser utilizado por un proceso a la vez.

• Por ejemplo una variable x compartida entre dos procesos A y B que pueden incrementar o decrementar la variable dependiendo de un determinado suceso. Esta situación se plantea, por ejemplo, en un problema típico de la programación concurrente conocido como el Problema de los Jardines. En este problema se supone que se desea controlar el número de visitantes a unos jardines. 

La entrada y la salida a los jardines se pueden realizar por dos puntos que disponen de puertas giratorias. Se desea poder conocer en cualquier momento el número de visitantes a los jardines, por lo que se dispone de un computador con conexión en cada uno de los dos puntos de entrada que le 
informan cada vez que se produce una entrada o una salida. Asociamos el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada. 

Ambos procesos se ejecutan de forma concurrente y utilizan una única variable x para llevar la cuenta del número de visitantes.El incremento o decremento de la variable se produce cada vez que un 
visitante entra o sale por una de las puertas. Así, la entrada de un visitante por una de las puertas hace que se ejecute la instrucción:mientras que la salida de un visitante hace que se ejecute la instrucción






2.4.5 Sincronización de procesos

• En muchos casos, los procesos se reúnen para realizar tareas en conjunto, a este tipo de relación se le llama procesos cooperativos. Para lograr la comunicación, los procesos deben sincronizarse, de no ser así pueden ocurrir problemas no deseados. La sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos.

• Es la coordinación y cooperación de un conjunto de procesos para asegurar la comparación de recursos de cómputo. La sincronización entre procesos es necesaria para prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos compartidos, tales como estructuras de 
datos o dispositivos de E/S, de procesos contendientes. La sincronización entre procesos también permite intercambiar señales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones específicas de precedencia impuestas por el problema que se resuelve.







2.4.6 Interbloqueo (DeadLock)
• El estancamiento se puede definir formalmente como sigue: "Un conjunto de procesos se estancan si cada proceso del conjunto está esperando un evento que solo otro proceso del conjunto puede provocar". Puesto que todos los procesos están en espera, ninguno de ellos podrá ocasionar 
nunca ninguno de los eventos que podrían desbloquear a algunos de los otros miembros del conjunto y todos los procesos seguirán esperando indefinidamente.

2.4.7 Definición de Abrazo Mortal

- Un conjunto de procesos está en un abrazo mortal cuando todos los procesos en ese conjunto están esperando un evento que solo puede ser causado por otro proceso en el conjunto. Los eventos a los cuales nos estamos refiriendo son concernientes con la asignación y liberación de recursos principalmente. Sin embargo, otro tipo de eventos pueden llevar a la existencia de abrazos mortales.

- Para ejemplificar un estado de abrazo mortal, considere un sistema con tres unidades de disco. Suponga que existen tres procesos, cada uno de ellos tiene asignada una de las unidades de disco. Si ahora cada proceso pide otra unidad de disco, los tres procesos se encuentran ahora en un estado de abrazo mortal. Cada uno está esperando el evento "unidad de disco liberada", lo cual solo puede ser causada por alguno de los otros procesos en espera. Este ejemplo ilustra un abrazo mortal involucrando procesos compitiendo por el mismo tipo de recurso.

- Los abrazos mortales pueden también involucrar diferentes tipos de recursos. Por ejemplo, considere un sistema con una impresora y una unidad de disco. Suponga que el proceso A tiene asignada la unidad de disco y que el proceso B tiene asignada la impresora. Ahora, si A pide la 

impresora y B pide la unidad de disco, ocurre un abrazo mortal.








No hay comentarios:

Publicar un comentario