3. sincronizacion

42
SINCRONIZACION

Upload: karen-giannella-apaza

Post on 04-Nov-2015

235 views

Category:

Documents


0 download

DESCRIPTION

sincronizacion

TRANSCRIPT

  • SINCRONIZACION

  • Sincronizacin y ComunicacinProcesos cooperan en sus tareas, durante su ciclo de vida sincronizacin y comunicacin:Entre ellos o con el proceso maestro que los haya creado. Acceso controlado a estructuras de datos compartidas SincronizacinActo de asegurarse que los procesos/hilos independientes comienzan a ejecutar un bloque de cdigo concreto en el mismo tiempo lgico.

  • Sincronizacin y Comunicacinstatic int indicadorEjecuciion = TRUEvoid main() { for (i=0; i
  • Sincronizacin y ComunicacinTres problemas: Cmo puede un proceso pasar informacin a otro? Cmo se asegura que dos o ms procesos no se estorben mutuamente al efectuar actividades crticas ? Cmo se puede sincronizar la ejecucin de los procesos dependientes?

  • Procesos colaboradores pueden compartir almacenamiento comn ambos leen y escriben: memoria principal, archivo compartido.

    P.e.: spooler de impresinCondicin de competencia

  • Procesos o hilos cooperativos concurrentes PROGRAMACION CONCURRENTECondicin de competenciashared double balance;

    Esquema de cdigo para p1. . .balance=balance+cantidad;. . .shared double balance;

    Esquema de cdigo para p2. . .balance=balance-cantidad;. . .load R1, balanceload R2, cantidadadd R1, R2store R1, balanceload R1, balanceload R2, cantidadsub R1, R2store R1, balance

  • Condicin de competencia

  • Condicin de competenciacontador:INTEGER:=0;

    process Observador;repeatesperar_evento;contador:=contador + 1;

    forever;end Observador;contador:INTEGER:=0;

    process Reportero;repeatimprimir(contador);

    contador:=0;forever;end Observador;

  • Cuando el resultado de una operacin depende:De las velocidades relativas de los procesos,Del orden particular en que se intercalan las operaciones de los procesos concurrentesLo producen:Procesos paralelos (concurrentes) que comparten: datos o recursosDirectorio de spooler, in, out, Contador o balance. Condicin de competencia(data race, race condicion)

  • Seccin o regin crticaSe producen en el sw concurrente, siempre que dos procesos/hilos acceden a una variable compartida, por tanto, no deberan ejecutar esa parte del cdigo de forma concurrente..

  • Seccin o regin crticashared double balance;

    Esquema de cdigo para p1. . .balance=balance+cantidad;. . .shared double balance;

    Esquema de cdigo para p2. . .balance=balance-cantidad;. . .contador:INTEGER:=0;process Observador;repeatesperar_evento;

    contador:=contador + 1;

    forever;end Observador;contador:INTEGER:=0;process Reportero;repeatimprimir(contador);

    contador:=0;

    forever;end Observador;

  • EXCLUSIN MUTUASi un proceso esta haciendo uso de un dato compartido, los otros no pueden hacerlo hasta que el otro termine.Problema: acceso a la variable compartida antes que el proceso que la este modificando la deje en estado consistenteOperaciones de acceso a la variable compartida no son atmicas. Porteros PROTOCOLO ENTRADA/SALIDA

  • Exclusin mutua: dos procesos nunca pueden estar simultneamente dentro de sus regiones crticas.Ausencia de postergacin innecesaria: si un proceso quiere entrar en su seccin crtica, puede hacerlo si los otros estn en seccin no crtica.Ningn proceso que se ejecute fuera de su regin crtica puede bloquear a otros procesos.Entrada garantizada (ausencia de inanicin): ningn proceso deber tener que esperar indefinidamente para entrar en su regin crticaNo se puede hacer suposiciones sobre el hardware, (velocidades o el nmero de procesadores que intervienen).Condiciones para el sincronismo

  • Exclusin mutua con espera activaPrimitivas SLEEP y WAKEUPSemforosMutexesMonitoresTransferencia de mensajesBarrerasMecanismos de sincronizacin

  • EXCLUSION MUTUA

    CON ESPERA ACTIVAExclusin mutuaPrimitivas SLEEP & WAKEUPSemforosMutexesMonitoresTransferencia de mensajesBarreras

  • Inhabilitacin de interrupcionesVariables de bloqueo (candados)Alternancia estrictaSolucin de PetersonHardware de sincronizacin: TSLExclusin mutua con espera activa

  • Cada proceso inhabilite las interrupciones justo despus de ingresar en su regin crtica.Y vuelva a habilitarlas justo antes de salir de ella.Instrucciones mquina DISABLE (inhabilitar las interrupciones) y ENABLE (habilitar las interrupciones).Inhabilitacin de interrup. Exclusin mutua

  • Con las interrupciones inhabilitadas no hay interrupciones de reloj.CPU slo se conmuta de un proceso a otro como resultado de interrupciones de reloj o de otro tipo.Proceso puede examinar y actualizar la memoria compartida sin temor operaciones atmicas.Inhabilitacin de interrup. Exclusin mutua

  • Desventajas:Regin crtica debe ser corta perder interrupciones generadas por los dispositivos de E/S.Inhabilitando las interrupciones, tambin se impide la ejecucin de:Procesos cooperantes que no intentan entrar en la regin crticaResto de los procesos del sistema.Peligroso darle al usuario la posibilidad de inhabilitar las interrupciones perdida de las subsiguientes interrupciones y el acaparamiento en exclusiva de la CPU.Inhabilitacin de interrup. Exclusin mutua

  • Por tanto:Tcnica til o prctica para el ncleoMtodo apropiado para sistemas monoprocesador.Pero no es apropiada como mecanismo general de exclusin mutua para los procesos de usuarioInhabilitacin de interrup. Exclusin mutua

  • Inhabilitacin de interrup. Exclusin mutuashared double balance,cantidad;

    Programa para p1. . .deshabilitarInterrupciones();balance=balance+cantidad;habilitarInterrupciones();. . .shared double balance, cantidad;

    Programa para p2. . .deshabilitarInterrupciones();balance=balance-cantidad;habilitarInterrupciones();. . .

  • Variable compartida booleana, indica si la crtica est ocupada o no: 0 (false) libre1 (true) ocupadaCuando un proceso llegue a la entrada de la regin debe consultar el valor de la variable candado:si es 0 pone en 1 y entra a la regin crticasi es 1 proceso debe esperar hasta que sea 0Variables de bloqueoExclusin mutua

  • La consulta del candado y su posterior puesta a True, no es atmica.No se asegura la exclusin mutua.Variables de bloqueoExclusin mutuashared boolean bloqueo = FALSE;shared double cantidad, balance;Programa para P1. . .while (bloqueo) { NULL;}bloqueo=TRUE;balance=balance+cantidad;bloqueo=FALSE;. . .

    Programa para P2. . .while (bloqueo) { NULL;}bloqueo=TRUE;balance=balance-cantidad;bloqueo=FALSE;. . .

  • Variables de bloqueoExclusin mutua

  • Variables de bloqueoExclusin mutuaentrar(bloqueo) { deshabilitarInterrupciones(); while(bloqueo){ } bloqueo=TRUE; habilitarInterrupciones();}salir(bloqueo) { deshabilitarInterrupciones(); bloqueo=FALSE; habilitarInterrupciones();}shared double balance,cantidad;Shared boolean bloqueo=FALSE;

    Programa para p1entrar(bloqueo);balance=balance+cantidad;salir(bloqueo);shared double balance, cantidad;Shared boolean bloqueo=FALSE;

    Programa para p2entrar(bloqueo);balance=balance-cantidad;salir(bloqueo);

  • Alternancia estrictaExclusin mutuaUsa una variable compartida, que indica a quin le corresponde entrar en la Regin CrticaInicialmente la variable es FALSE.El primer proceso examina la variable, ve que es FALSE, y entra en su RC.El segundo proceso tambin ve que es FALSENo entra en la RCda vueltas en ciclos espera activa.Bloqueo giratorioAl salir el primer proceso (variable=TRUE), el segundo recin puede entrar a su RC.

  • Alternancia estrictaExclusin mutuaViola la condicin de ausencia de postergacinRequiere que los procesos se alternen estrictamente para entrar a sus regiones crticas.shared boolean bloqueo = FALSE;shared boolean cantidad, balance;Programa para P1. . .while (bloqueo) { NULL;}balance=balance+cantidad;bloqueo=TRUE;. . .

    Programa para P2. . .while (!bloqueo) { NULL;}balance=balance-cantidad;bloqueo=FALSE;. . .

  • Dekker Combinando la idea de tomar turnos con la de tener variables de candado y variables de advertencia: solucin software para el problema de la exclusin mutua sin alternancia estricta .1981 Peterson descrubre forma ms sencilla de lograr la exclusin mutuaManejar ms informacin: una variable ms. Ser verdadera si un proceso quiere entrar a la seccin crtica.

    Algoritmo de PetersonExclusin mutua

  • Algoritmo de PetersonExclusin mutuaDos procesos 0 y 1Cada proceso invoca enter_region (proceso) para ingresar a SC.Despus de SC el proceso invoca leave_region() ya termin y permitir que entre otro.

    Clave xito: procesos manifiestan la intencin de entrar 1ro.#define FALSE 0#define TRUE 1#define N 2

    int turno;int interesado [N];

    void enter_region (int process){int otro;otro = 1-process;interesado [process] = TRUE;turno = process;while (turno == process && interesado [otro] == TRUE);}

    void leave_region (int process){interesado [process] = FALSE;}

  • Analizando condiciones:Exclusin mutua: si dos procesos quieren entrar no pueden entrar al mismo tiempo: while (interesado [otro] && turno == process) no puede ser negativa para ambos procesos a la vez.Si Pi entra primero turn=i,para que el otro entre turn= 1-i, o bien interested[i] = FALSE.Algoritmo de PetersonExclusin mutua

  • Analizando condiciones:Ausencia de postergacin innecesaria: Si Pi entra primero y el otro est ejecutando su seccin no crtica Interesado [otro] = FALSEPi no tiene impedimento de entrarAlgoritmo de PetersonExclusin mutua

  • Analizando condiciones:Entrada garantizada: Si un proceso quiere entrar, slo debe esperar que el otro salga de la seccin crtica.Puede haber inanicin:Una vez que se cumple la condicin que permite a un proceso entrar, esta debe ser permanente hasta que le toca la CPU al proceso que quiere entrar.Si la condicin fuera intermitente, el planificador puede ser nuestro enemigo.Algoritmo de PetersonExclusin mutua

  • Instrucciones especiales para resolver el problema de la seccin crtica.Instrucciones que combinan dos o tres operaciones en una sola operacin atmica.

    TS RX,bloqueoTest and Set probar y escribir

    Lee el contenido de la palabra de memoria (bloqueo),Lo coloca en el registro RX Le pone un valor diferente a 0 o FALSE.Hw de sincronizacin:TSExclusin mutua

  • Se garantiza que: la lectura de la palabra y la escritura en ella son indivisibles.Ningn otro proceso o procesador puede tener acceso a la palabra de memoria antes de acabarse de ejecutar TS.En sistemas multiprocesador, la CPU que ejecuta TS bloquea el bus de memoria.Se requiere una variable compartida bloqueo para coordinar el acceso a la memoria compartidabloqueo = 0 (false) cualquier proceso le asigna 1 (true) usando TS y entra en la seccin crticaAl terminar el proceso, le asigna 0 (false) con MOVE.Hw de sincronizacin:TSExclusin mutua

  • Cmo es que puede esta instruccin evitar que dos procesos entren simultneamente en sus regiones crticas?Hw de sincronizacin:TSExclusin mutuaenter_region:ts register, lockcmp register, 0jne enter_regionret

    leave_region:move lock,0retPi:..enter_region;seccion_critica;leave_region;..

  • Hw de sincronizacin:TSExclusin mutuashared int lock=0;while (ts(lock)==1) skip;seccion_critica;lock=0;Tambin utiliza espera activaGasto intil de tiempo de CPUEste protocolo provee exclusin mutua sin postergacin innecesaria y sirve para n procesos.Cuando un proceso llega a la entrada de la regin crtica, si el bloqueo no tiene 0, el proceso debe de ejecutarse en ciclo hasta que el bloqueo sea 0.

  • SLEEP & WAKEUPExclusin mutuaPrimitivas SLEEP & WAKEUPSemforosMutexesMonitoresTransferencia de mensajesBarreras

  • Soluciones de Peterson y Test And Set, tiene:Espera activa: desperdicia tiempo de CPU.Problema de la inversin de prioridades: hambruna.Solucin: primitivas de comunicacinSe bloqueanNo desperdician tiempo de CPU.SLEEP & WAKEUPProblemaSemforos

  • SLEEP:Llamada al sistema, hace que el invocador se bloqueeWAKEUP:Llamada que activa al proceso que lleva como parmetroAmbas tienen un parmetro: direccin de memoria que relaciona las llamadas SLEEP con las llamadas WAKEUP.DefinicinSleep & Wakeup

  • (buffer limitado)Dos procesos comparten un buffer de tamao fijo.Productor: coloca informacin Consumidor: saca informacinProblemas:Buffer lleno y productor quiere colocar Buffer vaco y consumidor quiere sacar.Solucin: productor y consumidor se desactiven en el momento adecuado.Productor - ConsumidorSleep & Wakeup

  • Productor - ConsumidorSleep & Wakeup

  • Puede generarse condiciones de competencia?.

    Solucin: aumentar ms memoria bit de espera para activar.Alcanca de seales de activar o despertar.Si hay n procesos?.... Cunta memoria es necesaria?.Productor - ConsumidorSleep & WakeupAcceso a count es irrestricto