Cap05 Concurrencia - Exclusion Mutua y Sincronización

download Cap05 Concurrencia - Exclusion Mutua y Sincronización

of 47

Transcript of Cap05 Concurrencia - Exclusion Mutua y Sincronización

  • Concurrencia: exclusin mutua y sincronizacinCaptulo 5

  • ConcurrenciaCuestiones que comprende:Comunicacin entre procesos.Comparticin y competencia por los recursos.Sincronizacin de la ejecucin de varios procesos.Asignacin del tiempo de procesador a los procesos.

  • ConcurrenciaContexto en que puede presentarse:Mltiples aplicaciones:Multiprogramacin.Aplicaciones estructuradas:Algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.Estructura del sistema operativo:Algunos sistemas operativos estn implementados como un conjunto de procesos o hilos.

  • Dificultades con la concurrencia

    Compartir recursos globales.

    Gestionar la asignacin ptima de recursos.

    Localizar un error de programacin.

  • Un ejemplo sencillo

    void echo(){ent = getchar();sal = ent;putchar(sal); }

  • Un ejemplo sencilloProceso P1Proceso P2. .ent = getchar(); .. ent = getchar();sal = ent; sal = ent;putchar(sal); .. putchar(sal);. .

  • Labores del sistema operativo

    Seguir la pista de los distintos procesos activos.

    Asignar y retirar los recursos:Tiempo de procesador.Memoria.Archivos.Dispositivos de E/S.

  • Labores del sistema operativo Proteger los datos y los recursos fsicos.

    Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecucin de otros procesos concurrentes.

  • Interaccin entre procesosLos procesos no tienen conocimiento de los dems.

    Los procesos tienen un conocimiento indirecto de los otros.

    Los procesos tienen un conocimiento directo de los otros.

  • Competencia entre procesos por los recursosExclusin mutuaSecciones crticas:Slo un programa puede acceder a su seccin crtica en un momento dado.Por ejemplo, slo se permite que un proceso enve una orden a la impresora en un momento dado. Interbloqueo.Inanicin.

  • Cooperacin entre procesos por compartimiento

    Las operaciones de escritura deben ser mutuamente excluyentes.

    Las secciones crticas garantizan la integridad de los datos.

  • Cooperacin entre procesos por comunicacinPaso de mensajes:No es necesario el control de la exclusin mutua.Puede producirse un interbloqueo:Cada proceso puede estar esperando una comunicacin del otro. Puede producirse inanicin:Dos procesos se estn mandando mensajes mientras que otro proceso est esperando recibir un mensaje.

  • Requisitos para la exclusin mutuaSlo un proceso debe tener permiso para entrar en la seccin crtica por un recurso en un instante dado. Un proceso que se interrumpe en una seccin crtica debe hacerlo sin interferir con los otros procesos. No puede permitirse el interbloqueo o la inanicin.

  • Requisitos para la exclusin mutuaCuando ningn proceso est en su seccin crtica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilacin.No se deben hacer suposiciones sobre la velocidad relativa de los procesos o el nmero de procesadores.Un proceso permanece en su seccin crtica slo por un tiempo finito.

  • Exclusin mutua: soluciones por software Primer intentoEspera activa:Un proceso siempre est esperando a entrar en su seccin crtica. Un proceso no puede hacer nada productivo hasta que obtiene permiso para entrar en su seccin crtica.

  • CorrutinasDiseadas para poder pasar el control de la ejecucin entre ellas. No es una tcnica apropiada para dar soporte al procesamiento concurrente.

  • Segundo intentoCada proceso puede examinar el estado del otro pero no lo puede alterar. Cuando un proceso desea entrar en su seccin crtica comprueba en primer lugar el otro proceso. Si no hay otro proceso en su seccin crtica fija su estado para la seccin crtica. Este mtodo no garantiza la exclusin mutua. Cada proceso puede comprobar las seales y luego entra en la seccin crtica al mismo tiempo.

  • Tercer intentoDar valor a la seal para entrar en la seccin crtica antes de comprobar otros procesos. Si hay otro proceso en la seccin crtica cuando se ha dado valor a la seal, el proceso queda bloqueado hasta que el otro proceso abandona la seccin crtica. Se provocar un interbloqueo cuando dos procesos den valor a sus seales antes de entrar en la seccin crtica. Entonces cada proceso debe esperar a que el otro abandone la seccin crtica.

  • Cuarto intentoUn proceso activa su seal para indicar que desea entrar en la seccin crtica, pero debe estar listo para desactivar la variable seal. Se comprueban los otros procesos. Si estn en la seccin crtica, la seal se desactiva y luego se vuelve a activar para indicar que desea entrar en la seccin crtica. Esta operacin se repite hasta que el proceso puede entrar en la seccin crtica.

  • Cuarto intentoEs posible que cada proceso active su seal, compruebe otros procesos y desactive su seal. Esta situacin no se mantendr por mucho tiempo, de modo que no se trata de un interbloqueo. As pues, se rechaza el cuarto intento.

  • Una solucin correctaCada proceso tiene un turno para entrar en la seccin crtica. Si un proceso desea entrar en la seccin crtica, debe activar su seal y puede que tenga que esperar a que llegue su turno.

  • Exclusin mutua: soluciones por hardwareInhabilitacin de interrupciones:Un proceso continuar ejecutndose hasta que solicite un servicio del sistema operativo o hasta que sea interrumpido. Para garantizar la exclusin mutua es suficiente con impedir que un proceso sea interrumpido. Se limita la capacidad del procesador para intercalar programas. Multiprocesador:Inhabilitar las interrupciones de un procesador no garantiza la exclusin mutua.

  • Exclusin mutua: soluciones por hardwareInstrucciones especiales de mquina:Se realizan en un nico ciclo de instruccin. No estn sujetas a injerencias por parte de otras instrucciones. Leer y escribir.Leer y examinar.

  • Exclusin mutua: soluciones por hardwareLa instruccin Comparar y Fijarbooleano TS (int i) {if (i == 0) {i = 1;return cierto;}else {return falso;}}

  • Exclusin mutua: soluciones por hardwareLa instruccin Intercambiarvoid intercambiar(int registro, int memoria) {int temp;temp = memoria;memoria = registro;registro = temp;}

  • Instrucciones de mquina y exclusin mutuaVentajas: Es aplicable a cualquier nmero de procesos en sistemas con memoria compartida, tanto de monoprocesador como de multiprocesador.Es simple y fcil de verificar.Puede usarse para disponer de varias secciones crticas.

  • Instrucciones de mquina y exclusin mutuaDesventajas:La espera activa consume tiempo del procesador.Puede producirse inanicin cuando un proceso abandona la seccin crtica y hay ms de un proceso esperando. Interbloqueo:Si un proceso con baja prioridad entra en su seccin crtica y existe otro proceso con mayor prioridad, entonces el proceso cuya prioridad es mayor obtendr el procesador para esperar a poder entrar en la seccin crtica.

  • SemforosPara la sealizacin se utiliza una variable especial llamada semforo. Si un proceso est esperando una seal, el proceso es suspendido hasta que tenga lugar la transmisin de la seal. Las operaciones wait y signal no pueden ser interrumpidas. Se emplea una cola para mantener los procesos esperando en el semforo.

  • SemforosUn semforo es una variable que tiene un valor entero:Puede iniciarse con un valor no negativo. La operacin wait disminuye el valor del semforo.La operacin signal incrementa el valor del semforo.

  • Problema del productor/consumidorUno o ms productores generan datos y los sitan en un buffer. Un nico consumidor saca elementos del buffer de uno en uno. Slo un productor o consumidor puede acceder al buffer en un instante dado.

  • Productorproductor:while (cierto) {/* producir elemento v */b[ent] = v;ent++; }

  • Consumidorconsumidor:while (cierto) { while (ent
  • Productor con buffer circularproductor:while (cierto) {/* producir elemento v */while ((ent + 1) % n == sal) /* no hacer nada */;b[ent] = v;ent = (ent + 1) % n}

  • Consumidor con buffer circularconsumidor:while (cierto) {while (ent == sal)/* no hacer nada */;w = b[sal];sal = (sal + 1) % n;/* consumir elemento w */}

  • salentsalentFigura 5.15. Buffer circular limitado en el problema del productor/consumidor.

  • Buffer ilimitadoSalEntNota: El rea sombreada indica la parte del buffer ocupada.Figura 5.11. Buffer ilimitado en el problema del productor/consumidor.

  • Problema de la barberaEntradaSalidaSillas de barberoCajaSala de esperade pieSofFigura 5.18. La barbera.

  • MonitoresUn monitor es un mdulo de software.Caractersticas bsicas:Las variables de datos locales estn slo accesibles para el monitor. Un proceso entra en el monitor invocando a uno de sus procedimientos. Slo un proceso se puede estar ejecutando en el monitor en un instante dado.

  • Cola deentradade procesosZona de entrega del monitorEntradaMONITORDatos localesVariables de condicinProcedimiento 1Procedimiento kCdigo de iniciocondicin c1cwait (c1)condicin cncwait (cn)Cola de Urgentescsignal SalidaFigura 5.21. Estructura de un monitor.

  • Paso de mensajesRefuerzo de la exclusin mutua.Intercambio de informacin.

    send (destino, mensaje)receive (origen, mensaje)

  • SincronizacinEl emisor y el receptor pueden ser bloqueantes o no bloqueantes (esperando un mensaje). Envo bloqueante, recepcin bloqueante:Tanto el emisor como el receptor se bloquean hasta que se entrega el mensaje. Esta tcnica se conoce como rendezvous.

  • SincronizacinEnvo no bloqueante, recepcin bloqueante:Permite que un proceso enve uno o ms mensajes a varios destinos tan rpido como sera posible. El receptor se bloquea hasta que llega el mensaje solicitado. Envo no bloqueante, recepcin no bloqueante:Nadie debe esperar.

  • DireccionamientoDireccionamiento directo:La primitiva send incluye una identificacin especfica del proceso de destino. La primitiva receive puede conocer de antemano de qu proceso espera un mensaje. La primitiva receive puede utilizar el parmetro origen para devolver un valor cuando se haya realizado la operacin de recepcin.

  • DireccionamientoDireccionamiento indirecto:Los mensajes se envan a una estructura de datos compartida formada por colas. Estas colas se denominan buzones (mailboxes). Un proceso enva mensajes al buzn apropiado y el otro los coge del buzn.

  • ProcesosemisoresProcesosreceptoresBuznPuertoFigura 5.24. Comunicacin indirecta entre procesos.

  • Formato de mensajesTipo de longitudID de destinoID de origenLongitud de mensajeInformacin de controlContenido del mensajeCabeceraCuerpoFigura 5.25. Formato tpico de mensaje.

  • Problema de los lectores/escritoresCualquier nmero de lectores puede leer el archivo simultneamente.Slo puede escribir en el archivo un escritor en cada instante.Si un escritor est accediendo al archivo, ningn lector puede leerlo.