Concurrencia y Exclusión Mutua. Agenda n Procesos secuenciales n Procesos concurrentes n...

47
Concurrencia y Exclusión Concurrencia y Exclusión Mutua Mutua

Transcript of Concurrencia y Exclusión Mutua. Agenda n Procesos secuenciales n Procesos concurrentes n...

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

Concurrencia y Exclusión MutuaConcurrencia y Exclusión Mutua

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

AgendaAgenda

Procesos secuencialesProcesos secuenciales Procesos concurrentesProcesos concurrentes Multiprogramación, multiprocesamiento y Multiprogramación, multiprocesamiento y

procesamiento distribuidoprocesamiento distribuido Interacción y sincronización procesosInteracción y sincronización procesos Corutinas, fork-join y cobegin-coendCorutinas, fork-join y cobegin-coend Exclusión mutua, sección crítica y condición de Exclusión mutua, sección crítica y condición de

competenciacompetencia Soluciones problema exclusión mutuaSoluciones problema exclusión mutua

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

Programas secuencialesProgramas secuenciales

Especifica una ejecución secuencial de Especifica una ejecución secuencial de una lista de enunciadosuna lista de enunciados

La ejecución del programa da como La ejecución del programa da como resultado la creación de un procesoresultado la creación de un proceso

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

Procesos concurrentesProcesos concurrentes

Concurrencia: del verbo concurrir, asistir Concurrencia: del verbo concurrir, asistir o acudir al mismo lugar o tiempoo acudir al mismo lugar o tiempo

Especifica dos o más programas Especifica dos o más programas secuenciales ejecutados secuenciales ejecutados concurrentemente como procesos concurrentemente como procesos paralelosparalelos

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

Características procesos Características procesos concurrentesconcurrentes

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

Pueden funcionar en forma totalmente Pueden funcionar en forma totalmente independiente, unos de otrosindependiente, unos de otros

Pueden ser asincronos lo cual significa Pueden ser asincronos lo cual significa que en ocasiones requieren cierta que en ocasiones requieren cierta sincronización y cooperaciónsincronización y cooperación

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

Clasificación procesos Clasificación procesos concurrentesconcurrentes

Podemos hablar de Podemos hablar de • multiprogramación, multiprogramación, • multiprocesamiento o multiprocesamiento o • procesamiento distribuido procesamiento distribuido

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

Multiprogramación Multiprogramación Los procesos son ejecutados, concurrentemente, Los procesos son ejecutados, concurrentemente,

compartiendo uno o más procesadores (c/u con su compartiendo uno o más procesadores (c/u con su memoria)memoria)

El kernel del sistema operativo multiplexa los El kernel del sistema operativo multiplexa los procesos en los procesadores procesos en los procesadores

ProcProc22

ProcProc55

ProcProc66

ProcProc33

MM11 CPUCPU11

MM22 CPUCPU22

ProcProc77

ProcProc44

ProcProc11

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

Multiprocesamiento Multiprocesamiento

Se ejecuta un proceso en cada Se ejecuta un proceso en cada procesador procesador

Los procesos comparten una memoria Los procesos comparten una memoria en común en común

CPUCPU11 CPUCPU22 CPUCPU33

Memoria comúnMemoria común

CPUCPU44

ProcProc11 ProcProc22 ProcProc44ProcProc33

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

Procesamiento distribuidoProcesamiento distribuido

Los procesos están conectados a Los procesos están conectados a través de una red de comunicacióntravés de una red de comunicación

Cada procesos cuenta con su memoriaCada procesos cuenta con su memoria

CPUCPU11 CPUCPU22 CPUCPU33

MM11

CPUCPU44

ProcProc11 ProcProc22 ProcProc44ProcProc33

MM22 MM33 MM44

red de comunicaciónred de comunicación

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

Interacción entre procesosInteracción entre procesos

Para poder cooperar, procesos Para poder cooperar, procesos concurrentes deben comunicarse y concurrentes deben comunicarse y sincronizarsesincronizarse

Comunicación permite ejecución de un Comunicación permite ejecución de un proceso para influenciar ejecución de otroproceso para influenciar ejecución de otro

Comunicación entre procesos esta Comunicación entre procesos esta basada en el uso de variables basada en el uso de variables compartidas o envío de mensajescompartidas o envío de mensajes

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

La sincronizaciónLa sincronización

Frecuentemente, la sincronización es Frecuentemente, la sincronización es necesaria cuando los procesos se necesaria cuando los procesos se comunican comunican

Procesos son ejecutados con Procesos son ejecutados con velocidades impredeciblesvelocidades impredecibles

Para comunicarse un proceso debe Para comunicarse un proceso debe realizar una acción que el otro pueda realizar una acción que el otro pueda detectardetectar

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

• la acción puede ser asignar un valor a una la acción puede ser asignar un valor a una variable o enviar un mensajevariable o enviar un mensaje

• esto solo trabaja si el “realizar una acción” esto solo trabaja si el “realizar una acción” es anterior al “detectar una acción”es anterior al “detectar una acción”

Entonces la sincronía puede verse como Entonces la sincronía puede verse como un conjunto de restricciones para el un conjunto de restricciones para el ordenamiento de eventosordenamiento de eventos

Programador usa un mecanismo de Programador usa un mecanismo de sincronía para retardar ejecución de un sincronía para retardar ejecución de un proceso para satisfacer una restricciónproceso para satisfacer una restricción

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

Notación expresar concurrenciaNotación expresar concurrencia

Como indicar una ejecución Como indicar una ejecución concurrenteconcurrente

Que modo de comunicación entre Que modo de comunicación entre procesos se va a utilizarprocesos se va a utilizar

Cual mecanismo de sincronización se Cual mecanismo de sincronización se va a usarva a usar

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

Especificando ejecución Especificando ejecución concurrenteconcurrente

Existen varias notacionesExisten varias notaciones Importante diferenciar: Importante diferenciar:

• la definición del proceso la definición del proceso • de la sincronización del procesode la sincronización del proceso

Proposiciones recientes separan estos Proposiciones recientes separan estos conceptos diferentes y contienen conceptos diferentes y contienen restricciones sintácticas, que imponen restricciones sintácticas, que imponen una estructura del programa concurrenteuna estructura del programa concurrente

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

La estructura del programa permite La estructura del programa permite localizar los segmentos que pueden localizar los segmentos que pueden ejecutarse concurrentementeejecutarse concurrentemente

Entre las más comunes:Entre las más comunes:• corutinascorutinas• fork-joinfork-join• el enunciado co-beginel enunciado co-begin

Pueden usarse para especificar un Pueden usarse para especificar un número estático o dinámico de procesosnúmero estático o dinámico de procesos

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

CorutinasCorutinas Propuestas por Conway en 1963Propuestas por Conway en 1963 Corutinas son subrutinas que permiten una Corutinas son subrutinas que permiten una

transferencia de control de una forma transferencia de control de una forma simétrica más que jerárquicasimétrica más que jerárquica

Cada corutina puede ser vista como la Cada corutina puede ser vista como la implementación de un proceso implementación de un proceso

Bien usadas, son un medio para organizar Bien usadas, son un medio para organizar programas concurrentes que comparten un programas concurrentes que comparten un mismo procesadormismo procesador

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

Elementos corutinasElementos corutinas

El enunciado resumeEl enunciado resume• transfiere control a la corutina mencionadatransfiere control a la corutina mencionada• guarda información necesaria para controlar la guarda información necesaria para controlar la

ejecución de regresoejecución de regreso El enunciado callEl enunciado call

• inicializa el cálculo de la corutinainicializa el cálculo de la corutina El enunciado returnEl enunciado return

• transfiere el control de regreso al procedimiento transfiere el control de regreso al procedimiento que realizó un callque realizó un call

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

Ejemplo corutinasEjemplo corutinas

Program P;Program P; -------------------------- -------------------------- call A;call A; -------------------------- --------------------------endend

corutina Acorutina A -------------------------- -------------------------- resume Bresume B;; -------------------------- -------------------------- resume B;resume B;

corutina Bcorutina B -------------------------- -------------------------- resume Aresume A;; -------------------------- -------------------------- return;return;

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

La ejecuciónLa ejecución

PP Corutina ACorutina A Corutina BCorutina B

call Acall A

resume Bresume B

resume Bresume B

resume Aresume A

returnreturn

endend

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

Comentarios corutinasComentarios corutinas La ejecución, por parte de un proceso, de La ejecución, por parte de un proceso, de

resume provoca una sincronizaciónresume provoca una sincronización No son adecuadas para un verdadero No son adecuadas para un verdadero

procesamiento paraleloprocesamiento paralelo Son procesos concurrentes en el que el Son procesos concurrentes en el que el

“switcheo de procesos” ha sido “switcheo de procesos” ha sido completamente especificado y no dejado al completamente especificado y no dejado al kernel o a la implementaciónkernel o a la implementación

Lenguajes: SIMULA I y SL5Lenguajes: SIMULA I y SL5

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

Enunciados fork-joinEnunciados fork-join

Enunciado fork especifica que una rutina Enunciado fork especifica que una rutina puede empezar su ejecuciónpuede empezar su ejecución

La rutina invocada y la rutina invocadora La rutina invocada y la rutina invocadora proceden concurrentementeproceden concurrentemente

Para sincronizar invocada e invocadora, esta Para sincronizar invocada e invocadora, esta última puede ejecutar un joinúltima puede ejecutar un join

Enunciado join retrasa ejecución rutina Enunciado join retrasa ejecución rutina invocadora hasta que la rutina invocada invocadora hasta que la rutina invocada terminetermine

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

Ejemplo fork-joinEjemplo fork-join

program Pprogram P11

-------------------------- <codigo 1><codigo 1> fork P2fork P2;; -------------------------- <codigo 2><codigo 2> join P2;join P2; -------------------------- <codigo 3><codigo 3>

program Pprogram P22

-------------------------- -------------------------- -------------------------- -------------------------- -------------------------- --------------------------endend

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

La ejecución La ejecución

PP11 PP22

fork Pfork P22

join Pjoin P22

código 1código 1

código 2código 2

código 3código 3

endend

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

Comentarios fork-joinComentarios fork-join

Enunciados fork-join puede aparecer en Enunciados fork-join puede aparecer en condicionales y cicloscondicionales y ciclos• es necesario entender bien la ejecución del programa, es necesario entender bien la ejecución del programa,

para saber que rutinas se van a ejecutar para saber que rutinas se van a ejecutar concurrentementeconcurrentemente

Cuando se usa de forma disciplinada los Cuando se usa de forma disciplinada los enunciados son prácticos y poderososenunciados son prácticos y poderosos• fork proporciona un mecanismo para la creación dinámica fork proporciona un mecanismo para la creación dinámica

de procesosde procesos• enunciados similares también están incluidos en PL/I y enunciados similares también están incluidos en PL/I y

MesaMesa

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

El enunciado cobeginEl enunciado cobegin

Es una forma estructurada de denotar una Es una forma estructurada de denotar una ejecución concurrente ejecución concurrente

Por ejemplo:Por ejemplo:

• denota una ejecución concurrente de Sdenota una ejecución concurrente de S11, ,

SS22, … S, … Snn

• cada uno de los Scada uno de los Sii’s puede ser cualquier ’s puede ser cualquier

enunciado incluyendo un cobegin o un bloque enunciado incluyendo un cobegin o un bloque con declaraciones localescon declaraciones locales

cobegin Scobegin S11 || S || S22 || … || S || … || Sn n coendcoend

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

Características cobeginCaracterísticas cobegin

La ejecución de un cobegin solo termina La ejecución de un cobegin solo termina cuando la ejecución de todos los Scuando la ejecución de todos los S ii’s terminó’s terminó

No es tan potente como fork-join, pero es No es tan potente como fork-join, pero es suficiente para especificar la mayor parte de suficiente para especificar la mayor parte de los cálculos concurrenteslos cálculos concurrentes

Sintaxis hace explícito cuales rutinas son Sintaxis hace explícito cuales rutinas son ejecutadas concurrentementeejecutadas concurrentemente

Variantes implementadas en ALGOL68, CSP, Variantes implementadas en ALGOL68, CSP, Edison y ArgusEdison y Argus

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

Comunicación y sincronización Comunicación y sincronización procesosprocesos

Procesos requieren comunicación entre Procesos requieren comunicación entre ellos.ellos.

Procesamiento distribuidoProcesamiento distribuido• envío/recepción de mensajesenvío/recepción de mensajes

Multiprocesamiento:Multiprocesamiento:• pipes: salida proceso es entrada de otropipes: salida proceso es entrada de otro• uso de variables compartidas o de algún uso de variables compartidas o de algún

espacio en común donde puedan leer o escribir espacio en común donde puedan leer o escribir los procesoslos procesos

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

Ejemplo: spooler impresiónEjemplo: spooler impresión

Cuando un proceso desea imprimir un Cuando un proceso desea imprimir un archivo escribe el nombre de este en un archivo escribe el nombre de este en un directoriodirectorio

Otro proceso, demonio impresión (lpd) Otro proceso, demonio impresión (lpd) verifica si existen archivos por imprimir, verifica si existen archivos por imprimir, los imprime y elimina sus nombres del los imprime y elimina sus nombres del directoriodirectorio

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

Elementos spooler impresiónElementos spooler impresión

toto.ctoto.cprog.cprog.ctarea.txttarea.txt

44556677

PPaaout = 4out = 4

in = 7in = 7

PPbb

PPa a desea imorimir tdesea imorimir t11

PPb b desea imorimir tdesea imorimir t22

::::

::::

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

Pasos en impresión archivosPasos en impresión archivos

Proceso AProceso A Proceso BProceso B

lee valor in y almacena en siglee valor in y almacena en sigsig := 7sig := 7actualiza valor in (in = 8)actualiza valor in (in = 8)escribe tescribe t22 en localidad 7 en localidad 7

sale y hace otras cosassale y hace otras cosas

lee valor in y almacena en nextlee valor in y almacena en nextnext := 7next := 7

actualiza valor in (in = 8)actualiza valor in (in = 8)escribe tescribe t11 en localidad 7 en localidad 7

sale y hace otras cosassale y hace otras cosas

termina quantumtermina quantum

termina quantumtermina quantum

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

Condición de competenciaCondición de competencia

Dos o más procesos leen y/o escriben Dos o más procesos leen y/o escriben en ciertos datos compartidos y el en ciertos datos compartidos y el resultado final depende de quien resultado final depende de quien ejecuta qué y en qué momentoejecuta qué y en qué momento

Solución:Solución:• prohibir que uno o más procesos escriba prohibir que uno o más procesos escriba

en los datos compartidos a la vezen los datos compartidos a la vez

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

La exclusión mutuaLa exclusión mutua

Garantizar que si un proceso utiliza una Garantizar que si un proceso utiliza una variable o algún recurso compartido, los variable o algún recurso compartido, los demás no podrán usarlos al mismo tiempodemás no podrán usarlos al mismo tiempo

Conocida como mutexConocida como mutex Cada proceso debe verificar que durante Cada proceso debe verificar que durante

cierta parte del tiempo, puede tener acceso a cierta parte del tiempo, puede tener acceso a la memoria compartida de archivos o la memoria compartida de archivos o realizando labores críticas que pueden llevar realizando labores críticas que pueden llevar a conflictosa conflictos

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

Sección críticaSección crítica

Parte del código en el cual se tiene Parte del código en el cual se tiene acceso a una variable o archivo acceso a una variable o archivo compartido compartido

Corolario:Corolario:• si dos procesos no están al mismo tiempo si dos procesos no están al mismo tiempo

en sección crítica, podemos evitar las en sección crítica, podemos evitar las condiciones de competenciacondiciones de competencia

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

Asignación recursosAsignación recursos

Sean n procesos que entran en conflicto por Sean n procesos que entran en conflicto por el acceso a un recurso único no compartibleel acceso a un recurso único no compartible

Recurso a usar en sección críticaRecurso a usar en sección crítica Necesario usar un protocolo formado de tres Necesario usar un protocolo formado de tres

partes:partes:

protocolo de adquisiciónprotocolo de adquisición<uso del recurso en sección crítica><uso del recurso en sección crítica>

protocolo de liberaciónprotocolo de liberación

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

Posibles problemasPosibles problemas

Interbloqueo: los procesos se bloquean entre Interbloqueo: los procesos se bloquean entre si y nadie tiene acceso al recurso, no hay si y nadie tiene acceso al recurso, no hay actividad en ninguno de los procesos 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

Hambruna (starvation)Hambruna (starvation)• sean tres procesos: Psean tres procesos: P11 P P22 y P y P33

• si el recurso siempre se le asigna, alternativamente, si el recurso siempre se le asigna, alternativamente, a Pa P11 y P y P22, P, P33 no tendrá acceso a él no tendrá acceso a él

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

Condiciones solución mutexCondiciones solución mutex

Dos procesos no deben encontrarse al mismo Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones críticastiempo dentro de sus secciones críticas

No se deben hacer hipótesis sobre la velocidad No se deben hacer hipótesis sobre la velocidad o el número de CPUso el número de CPUs

Ninguno de los procesos que estén en ejecución Ninguno de los procesos que estén en ejecución fuera de su SC puede bloquear a otros procesosfuera de su SC puede bloquear a otros procesos

Ningún proceso debe esperar eternamente para Ningún proceso debe esperar eternamente para entrar a su SCentrar a su SC

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

Posibles soluciones Posibles soluciones

Des-activación de interrupcionesDes-activación de interrupciones Variables de cerraduraVariables de cerradura Alternancia estrictaAlternancia estricta Esperando que el otro termineEsperando que el otro termine Cediendo el lugar al otro Cediendo el lugar al otro Esperando un tiempo aleatorioEsperando un tiempo aleatorio Algoritmo de DekkerAlgoritmo de Dekker Algoritmo de PetersonAlgoritmo de Peterson

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

Des-activación interrupcionesDes-activación interrupciones

Solución más simple: cada proceso desactivará Solución más simple: cada proceso desactivará todas sus interrupciones justo antes de entrar todas sus interrupciones justo antes de entrar en sección crítica y las activará al salir de ellaen sección crítica y las activará al salir de ella

Con las interrupciones desactivadas no puede Con las interrupciones desactivadas no puede ocurrir una interrupción de relojocurrir una interrupción de reloj

Problema: un proceso (usuario) podría Problema: un proceso (usuario) podría desactivarlas y nunca activarlas de nuevodesactivarlas y nunca activarlas de nuevo

Si hay más de dos CPUs, la desactivación sólo Si hay más de dos CPUs, la desactivación sólo afecta a uno de ellos afecta a uno de ellos

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

Variables de cerraduraVariables de cerradura

Antes proceso entre a su sección crítica se hace Antes proceso entre a su sección crítica se hace prueba a una variable tipo cerradura:prueba a una variable tipo cerradura:• si esta es 0: proceso la cambia a 1 y entra a su sección si esta es 0: proceso la cambia a 1 y entra a su sección

críticacrítica• si esta es 1: espera hasta que la variable cambie su valor a si esta es 1: espera hasta que la variable cambie su valor a

00 ProblemaProblema

• 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.

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

Alternancia estrictaAlternancia estricta

void proc1()void proc1(){{ while (TRUE) {while (TRUE) {

while (turno != 0);while (turno != 0);seccion_critica(P1);seccion_critica(P1);turno=1;turno=1;fuera_sec_crit(P1);fuera_sec_crit(P1);

}}}}

void proc2()void proc2(){{ while (TRUE) {while (TRUE) {

while (turno != 1);while (turno != 1);seccion_critica(P2);seccion_critica(P2);turno=0;turno=0;fuera_sec_crit(P2);fuera_sec_crit(P2);

}}}}

main(){ main(){ turn=1; turn=1; cobegin proc1 || proc2() coend cobegin proc1 || proc2() coend }}

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

Detalles alternacia estrictaDetalles alternacia estricta

La prueba de una variable, en espera de que La prueba de una variable, en espera de que tome cierto valor se conoce como espera activatome cierto valor se conoce como espera activa• esto provoca un desperdicio del CPUesto provoca un desperdicio del CPU

¿Qué pasa cuando uno de los procesos es más ¿Qué pasa cuando uno de los procesos es más lento que el otro?lento que el otro?• en lo que proc1 ejecuta fue_sec_crit(p1) el proceso en lo que proc1 ejecuta fue_sec_crit(p1) el proceso

proc2 ejecuta sec_crit(p2), cambia valor a turno, proc2 ejecuta sec_crit(p2), cambia valor a turno, ejecuta fue_sec_crit(p2) y regresa al whileejecuta fue_sec_crit(p2) y regresa al while

• se van a tener un proceso bloqueado por otro que no se van a tener un proceso bloqueado por otro que no esta en su sección críticaesta en su sección crítica

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

Esperando que el otro termineEsperando que el otro termine

int p1in, p2in;int p1in, p2in;

void proc1()void proc1()

{{

while (TRUE) {while (TRUE) {

while (p2in == 1); while (p2in == 1);

p1in = 1;p1in = 1;

sección_critica_P1();sección_critica_P1();

p1in = 0;p1in = 0;

out_sec_critica_P1();out_sec_critica_P1();

}}

}}

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

ComentariosComentarios

Dos variablesDos 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

¿Qué pasa si se ejecuta en tandem?¿Qué pasa si se ejecuta en tandem?• se van a tener dos procesos en sección se van a tener dos procesos en sección

críticacrítica

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

Cediendo el lugar al otroCediendo el lugar al otroint p1deseaentar, p2deseaentrar;int p1deseaentar, p2deseaentrar;

void proc1()void proc1()

{{

while (TRUE) {while (TRUE) {

p1deseaentrar = 1;p1deseaentrar = 1;

while (p2deseaentrar == 1);while (p2deseaentrar == 1);

sección_critica_P1();sección_critica_P1();

p1deseaentrar = 0;p1deseaentrar = 0;

out_sec_critica_P1();out_sec_critica_P1();

}}

}}

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

ComentariosComentarios

El proceso indica su deseo de entrar a sección El proceso indica su deseo de entrar a sección crítica crítica

Si el otro proceso también quiere entrar le Si el otro proceso también quiere entrar le cede el pasocede el paso

Problema ejecución tandem:Problema ejecución tandem:• si cada proceso asigna un 1 a su bandera antes de si cada proceso asigna un 1 a su bandera antes de

verificar, cada proceso encontrará la bandera del verificar, cada proceso encontrará la bandera del otro con valor 1 los dos entrarán en un ciclo infinito 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)

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

Esperando un tiempo aleatorioEsperando un tiempo aleatorioint p1deseaentar, p2deseaentrar;int p1deseaentar, p2deseaentrar;

void proc1() {void proc1() {

while (TRUE) {while (TRUE) {

p1deseaentrar = 1;p1deseaentrar = 1;

while (p2deseaentrar == 1) {while (p2deseaentrar == 1) {

p1deseaentrar = 0;p1deseaentrar = 0;

retraso(aleatorio, algunosciclos);retraso(aleatorio, algunosciclos);

p1deseaentrar = 1;p1deseaentrar = 1;

}}

sección_critica_P1();sección_critica_P1();

p1deseaentrar = 0;p1deseaentrar = 0;

out_sec_critica_P1(); }out_sec_critica_P1(); }

}}

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

ComentariosComentarios

Se obliga a cada proceso a asignar Se obliga a cada proceso a asignar repetidamente el valor falso a su bandera por repetidamente el valor falso a su bandera por periodos cortos, calculados de forma periodos cortos, calculados de forma aleatoriaaleatoria

Problema: una ejecución tandem y que el Problema: una ejecución tandem y que el valor aleatorio será el mismo para los dos valor aleatorio será el mismo para los dos procesosprocesos

Situación muy poco probable pero posibleSituación muy poco probable pero posible