La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Concurrencia y Exclusión Mutua. Agenda n Procesos secuenciales n Procesos concurrentes n Multiprogramación, multiprocesamiento y procesamiento distribuido.

Presentaciones similares


Presentación del tema: "Concurrencia y Exclusión Mutua. Agenda n Procesos secuenciales n Procesos concurrentes n Multiprogramación, multiprocesamiento y procesamiento distribuido."— Transcripción de la presentación:

1 Concurrencia y Exclusión Mutua

2 Agenda n Procesos secuenciales n Procesos concurrentes n Multiprogramación, multiprocesamiento y procesamiento distribuido n Interacción y sincronización procesos n Corutinas, fork-join y cobegin-coend n Exclusión mutua, sección crítica y condición de competencia n Soluciones problema exclusión mutua

3 Programas secuenciales n Especifica una ejecución secuencial de una lista de enunciados n La ejecución del programa da como resultado la creación de un proceso

4 Procesos concurrentes n Concurrencia: del verbo concurrir, asistir o acudir al mismo lugar o tiempo n Especifica dos o más programas secuenciales ejecutados concurrentemente como procesos paralelos

5 Características procesos concurrentes n Los procesos son concurrentes si existen simultáneamente n Pueden funcionar en forma totalmente independiente, unos de otros n Pueden ser asincronos lo cual significa que en ocasiones requieren cierta sincronización y cooperación

6 Clasificación procesos concurrentes n Podemos hablar de multiprogramación,multiprogramación, multiprocesamiento omultiprocesamiento o procesamiento distribuidoprocesamiento distribuido

7 Multiprogramación n Los procesos son ejecutados, concurrentemente, compartiendo uno o más procesadores (c/u con su memoria) n El kernel del sistema operativo multiplexa los procesos en los procesadores Proc 2 Proc 5 Proc 6 Proc 3 M1M1M1M1 CPU 1 M2M2M2M2 CPU 2 Proc 7 Proc 4 Proc 1

8 Multiprocesamiento n Se ejecuta un proceso en cada procesador n Los procesos comparten una memoria en común CPU 1 CPU 2 CPU 3 Memoria común CPU 4 Proc 1 Proc 2 Proc 4 Proc 3

9 Procesamiento distribuido n Los procesos están conectados a través de una red de comunicación n Cada procesos cuenta con su memoria CPU 1 CPU 2 CPU 3 M1M1M1M1 CPU 4 Proc 1 Proc 2 Proc 4 Proc 3 M2M2M2M2 M3M3M3M3 M4M4M4M4 red de comunicación

10 Interacción entre procesos n Para poder cooperar, procesos concurrentes deben comunicarse y sincronizarse n Comunicación permite ejecución de un proceso para influenciar ejecución de otro n Comunicación entre procesos esta basada en el uso de variables compartidas o envío de mensajes

11 La sincronización n Frecuentemente, la sincronización es necesaria cuando los procesos se comunican n Procesos son ejecutados con velocidades impredecibles n Para comunicarse un proceso debe realizar una acción que el otro pueda detectar

12 la acción puede ser asignar un valor a una variable o enviar un mensajela acción puede ser asignar un valor a una variable o enviar un mensaje esto solo trabaja si el realizar una acción es anterior al detectar una acciónesto solo trabaja si el realizar una acción es anterior al detectar una acción n Entonces la sincronía puede verse como un conjunto de restricciones para el ordenamiento de eventos n Programador usa un mecanismo de sincronía para retardar ejecución de un proceso para satisfacer una restricción

13 Notación expresar concurrencia n Como indicar una ejecución concurrente n Que modo de comunicación entre procesos se va a utilizar n Cual mecanismo de sincronización se va a usar

14 Especificando ejecución concurrente n Existen varias notaciones n Importante diferenciar: la definición del procesola definición del proceso de la sincronización del procesode la sincronización del proceso n Proposiciones recientes separan estos conceptos diferentes y contienen restricciones sintácticas, que imponen una estructura del programa concurrente

15 n La estructura del programa permite localizar los segmentos que pueden ejecutarse concurrentemente n Entre las más comunes: corutinascorutinas fork-joinfork-join el enunciado co-beginel enunciado co-begin n Pueden usarse para especificar un número estático o dinámico de procesos

16 Corutinas n Propuestas por Conway en 1963 n Corutinas son subrutinas que permiten una transferencia de control de una forma simétrica más que jerárquica n Cada corutina puede ser vista como la implementación de un proceso n Bien usadas, son un medio para organizar programas concurrentes que comparten un mismo procesador

17 Elementos corutinas n El enunciado resume transfiere control a la corutina mencionadatransfiere control a la corutina mencionada guarda información necesaria para controlar la ejecución de regresoguarda información necesaria para controlar la ejecución de regreso n El enunciado call inicializa el cálculo de la corutinainicializa el cálculo de la corutina n El enunciado return transfiere el control de regreso al procedimiento que realizó un calltransfiere el control de regreso al procedimiento que realizó un call

18 Ejemplo corutinas Program P; call A; call A; end corutina A resume B; resume B; resume B; resume B; corutina B resume A; resume A; return; return;

19 La ejecución P Corutina A Corutina B call A resume B resume A return end

20 Comentarios corutinas n La ejecución, por parte de un proceso, de resume provoca una sincronización n No son adecuadas para un verdadero procesamiento paralelo n Son procesos concurrentes en el que el switcheo de procesos ha sido completamente especificado y no dejado al kernel o a la implementación n Lenguajes: SIMULA I y SL5

21 Enunciados fork-join n Enunciado fork especifica que una rutina puede empezar su ejecución n La rutina invocada y la rutina invocadora proceden concurrentemente n Para sincronizar invocada e invocadora, esta última puede ejecutar un join n Enunciado join retrasa ejecución rutina invocadora hasta que la rutina invocada termine

22 Ejemplo fork-join program P 1 program P fork P2; fork P2; join P2; join P2; program P end

23 La ejecución P1P1P1P1 P2P2P2P2 fork P 2 join P 2 código 1 código 2 código 3 end

24 Comentarios fork-join n Enunciados fork-join puede aparecer en condicionales y ciclos es necesario entender bien la ejecución del programa, para saber que rutinas se van a ejecutar concurrentementees necesario entender bien la ejecución del programa, para saber que rutinas se van a ejecutar concurrentemente n Cuando se usa de forma disciplinada los enunciados son prácticos y poderosos fork proporciona un mecanismo para la creación dinámica de procesosfork proporciona un mecanismo para la creación dinámica de procesos enunciados similares también están incluidos en PL/I y Mesaenunciados similares también están incluidos en PL/I y Mesa

25 El enunciado cobegin n Es una forma estructurada de denotar una ejecución concurrente n Por ejemplo: denota una ejecución concurrente de S 1, S 2, … S ndenota una ejecución concurrente de S 1, S 2, … S n cada uno de los S i s puede ser cualquier enunciado incluyendo un cobegin o un bloque con declaraciones localescada uno de los S i s puede ser cualquier enunciado incluyendo un cobegin o un bloque con declaraciones locales cobegin S 1 || S 2 || … || S n coend

26 Características cobegin n La ejecución de un cobegin solo termina cuando la ejecución de todos los S i s terminó n No es tan potente como fork-join, pero es suficiente para especificar la mayor parte de los cálculos concurrentes n Sintaxis hace explícito cuales rutinas son ejecutadas concurrentemente n Variantes implementadas en ALGOL68, CSP, Edison y Argus

27 Comunicación y sincronización procesos n Procesos requieren comunicación entre ellos. n Procesamiento distribuido envío/recepción de mensajesenvío/recepción de mensajes n Multiprocesamiento: pipes: salida proceso es entrada de otropipes: salida proceso es entrada de otro uso de variables compartidas o de algún espacio en común donde puedan leer o escribir los procesosuso de variables compartidas o de algún espacio en común donde puedan leer o escribir los procesos

28 Ejemplo: spooler impresión n Cuando un proceso desea imprimir un archivo escribe el nombre de este en un directorio n Otro proceso, demonio impresión (lpd) verifica si existen archivos por imprimir, los imprime y elimina sus nombres del directorio

29 Elementos spooler impresión toto.cprog.ctarea.txt4567 PaPaPaPa out = 4 in = 7 PbPbPbPb P a desea imorimir t 1 P b desea imorimir t 2 :: ::

30 Pasos en impresión archivos Proceso A Proceso B lee valor in y almacena en sig sig := 7 actualiza valor in (in = 8) escribe t 2 en localidad 7 sale y hace otras cosas lee valor in y almacena en next next := 7 actualiza valor in (in = 8) escribe t 1 en localidad 7 sale y hace otras cosas termina quantum

31 Condición de competencia n Dos o más procesos leen y/o escriben en ciertos datos compartidos y el resultado final depende de quien ejecuta qué y en qué momento n Solución: prohibir que uno o más procesos escriba en los datos compartidos a la vezprohibir que uno o más procesos escriba en los datos compartidos a la vez

32 La exclusión mutua n Garantizar que si un proceso utiliza una variable o algún recurso compartido, los demás no podrán usarlos al mismo tiempo n Conocida como mutex n Cada proceso debe verificar que durante cierta parte del tiempo, puede tener acceso a la memoria compartida de archivos o realizando labores críticas que pueden llevar a conflictos

33 Sección crítica n Parte del código en el cual se tiene acceso a una variable o archivo compartido n Corolario: si dos procesos no están al mismo tiempo en sección crítica, podemos evitar las condiciones de competenciasi dos procesos no están al mismo tiempo en sección crítica, podemos evitar las condiciones de competencia

34 Asignación recursos n Sean n procesos que entran en conflicto por el acceso a un recurso único no compartible n Recurso a usar en sección crítica n Necesario usar un protocolo formado de tres partes: protocolo de adquisición protocolo de liberación

35 Posibles problemas n Interbloqueo: los procesos se bloquean entre si y nadie tiene acceso al recurso, no hay actividad en ninguno de los procesos si estoy solo pasosi estoy solo paso si no: dejo pasar a los demássi no: dejo pasar a los demás n Hambruna (starvation) sean tres procesos: P 1 P 2 y P 3sean tres procesos: P 1 P 2 y P 3 si el recurso siempre se le asigna, alternativamente, a P 1 y P 2, P 3 no tendrá acceso a élsi el recurso siempre se le asigna, alternativamente, a P 1 y P 2, P 3 no tendrá acceso a él

36 Condiciones solución mutex n Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones críticas n No se deben hacer hipótesis sobre la velocidad o el número de CPUs n Ninguno de los procesos que estén en ejecución fuera de su SC puede bloquear a otros procesos n Ningún proceso debe esperar eternamente para entrar a su SC

37 Posibles soluciones n Des-activación de interrupciones n Variables de cerradura n Alternancia estricta n Esperando que el otro termine n Cediendo el lugar al otro n Esperando un tiempo aleatorio n Algoritmo de Dekker n Algoritmo de Peterson

38 Des-activación interrupciones n Solución más simple: cada proceso desactivará todas sus interrupciones justo antes de entrar en sección crítica y las activará al salir de ella n Con las interrupciones desactivadas no puede ocurrir una interrupción de reloj n Problema: un proceso (usuario) podría desactivarlas y nunca activarlas de nuevo n Si hay más de dos CPUs, la desactivación sólo afecta a uno de ellos

39 Variables de cerradura n Antes proceso entre a su sección crítica se hace prueba a una variable tipo cerradura: si esta es 0: proceso la cambia a 1 y entra a su sección críticasi esta es 0: proceso la cambia a 1 y entra a su sección crítica si esta es 1: espera hasta que la variable cambie su valor a 0si esta es 1: espera hasta que la variable cambie su valor a 0 n Problema proceso P1 lee un valor de 0proceso P1 lee un valor de 0 antes modifique el valor se le acaba el quatumantes modifique el valor se le acaba el quatum proceso P2 también va a leer un valor de 0proceso P2 también va a leer un valor de 0 se van a tener dos procesos en S.C.se van a tener dos procesos en S.C.

40 Alternancia estricta void proc1() { while (TRUE) { while (TRUE) { while (turno != 0); seccion_critica(P1);turno=1;fuera_sec_crit(P1); }} void proc2() { while (TRUE) { while (TRUE) { while (turno != 1); seccion_critica(P2);turno=0;fuera_sec_crit(P2); }} main(){ turn=1; turn=1; cobegin proc1 || proc2() coend cobegin proc1 || proc2() coend}

41 Detalles alternacia estricta n La prueba de una variable, en espera de que tome cierto valor se conoce como espera activa esto provoca un desperdicio del CPUesto provoca un desperdicio del CPU n ¿Qué pasa cuando uno de los procesos es más lento que el otro? en lo que proc1 ejecuta fue_sec_crit(p1) el proceso proc2 ejecuta sec_crit(p2), cambia valor a turno, ejecuta fue_sec_crit(p2) y regresa al whileen lo que proc1 ejecuta fue_sec_crit(p1) el proceso proc2 ejecuta sec_crit(p2), cambia valor a turno, ejecuta fue_sec_crit(p2) y regresa al while se van a tener un proceso bloqueado por otro que no esta en su sección críticase van a tener un proceso bloqueado por otro que no esta en su sección crítica

42 Esperando que el otro termine int p1in, p2in; void proc1() { while (TRUE) { while (p2in == 1); p1in = 1; sección_critica_P1(); p1in = 0; out_sec_critica_P1();}}

43 Comentarios n Dos variables p1in: proceso 1 en sección críticap1in: proceso 1 en sección crítica p2in: proceso 2 en sección críticap2in: proceso 2 en sección crítica n ¿Qué pasa si se ejecuta en tandem? se van a tener dos procesos en sección críticase van a tener dos procesos en sección crítica

44 Cediendo el lugar al otro int p1deseaentar, p2deseaentrar; void proc1() { while (TRUE) { p1deseaentrar = 1; while (p2deseaentrar == 1); sección_critica_P1(); p1deseaentrar = 0; out_sec_critica_P1();}}

45 Comentarios n El proceso indica su deseo de entrar a sección crítica n Si el otro proceso también quiere entrar le cede el paso n Problema ejecución tandem: si cada proceso asigna un 1 a su bandera antes de verificar, cada proceso encontrará la bandera del otro con valor 1 los dos entrarán en un ciclo infinitosi cada proceso asigna un 1 a su bandera antes de verificar, cada proceso encontrará la bandera del otro con valor 1 los dos entrarán en un ciclo infinito se da un bloqueo mutuo (interbloqueo o deadlock)se da un bloqueo mutuo (interbloqueo o deadlock)

46 Esperando un tiempo aleatorio int p1deseaentar, p2deseaentrar; void proc1() { while (TRUE) { p1deseaentrar = 1; while (p2deseaentrar == 1) { p1deseaentrar = 0; retraso(aleatorio, algunosciclos); p1deseaentrar = 1; }sección_critica_P1(); p1deseaentrar = 0; out_sec_critica_P1(); } }

47 Comentarios n Se obliga a cada proceso a asignar repetidamente el valor falso a su bandera por periodos cortos, calculados de forma aleatoria n Problema: una ejecución tandem y que el valor aleatorio será el mismo para los dos procesos n Situación muy poco probable pero posible


Descargar ppt "Concurrencia y Exclusión Mutua. Agenda n Procesos secuenciales n Procesos concurrentes n Multiprogramación, multiprocesamiento y procesamiento distribuido."

Presentaciones similares


Anuncios Google