Top Banner
1.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts 8 th Edition SINCRONIZACION PROCESOS
25
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 1.1 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    SINCRONIZACION PROCESOS

  • 1.2 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    introduccion

    Que es la concurrencia?

    Es posible cuando existe un solo

    procesador?

  • 1.3 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    Concurrencia

    La concurrencia se presenta cuando dos o

    ms procesos deben hacer uso de un mismo

    recurso a un mismo tiempo.

    Alguien puede pensar (con justa razn) que

    se est presentando una contradiccin o que

    se est hablando slo de sistemas con ms

    de una CPU, ya que en una sla CPU no se

    puede ejecutar ms de un proceso en al

    mismo tiempo;

    esto es verdad pero hay que tener en cuenta

    otros factores, para poder explicar mejor

    esto utilizaremos el siguiente ejemplo:

  • 1.4 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    CONCURRENCIA

    Rutina ejemplo (concurrencia):

  • 1.5 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    CONCURRENCIA

    Supongamos que esta es una rutina del

    sistema y que la pueden utilizar varios

    procesos (en cualquier momento), la rutina

    solamente lee desde la entrada estandar un

    nmero, el cual almacena en la variable global

    pos_comp, esta variable es una posicin

    compartida en la memoria y todo proceso que

    llame a esta rutina puede leer y escribir en ella.

  • 1.6 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    CONCURRENCIA

    Ahora bien, un proceso X llama a la rutina pero por

    alguna razn la CPU detiene su ejecucin despus de

    haber finalizado la instruccin de la lnea 5, por lo cual la

    variable ya ha tomado un nuevo valor (supongamos 7).

    El proceso Y es lanzado, este proceso tambin hace

    uso de la rutina ejemplo, lee un nuevo valor

    (supongamos 9) y continua su ejecucin normal hasta el

    fin de la rutina, por tanto debe mostrar un resultado de

    19.

    Tiempo despus X reanuda su ejecucin desde el punto

    siguiente al que fue interrumpido (lnea 6)...

    Que valor de pos_comp mostrar el proceso X?

  • 1.7 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    PROBLEMAS DE LA CONCURRENCIA

    Como podemos observar, la competencia entre

    procesos nos plantea tres tipos diferentes de

    problemas:

    Exclusin mutua.

    Interbloqueo o bloqueo mutuo.

    Inanicin.

  • 1.8 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    EXCLUSIN MUTUA

    Trata de garantizar que un proceso que utilice

    un recurso compartido tenga la seguridad que

    otro no lo ha modificado durante su ejecucin:

  • 1.9 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    INTERBLOQUEO O BLOQUEO MUTUO

    Este problema se presenta cuando dos o ms

    procesos se bloquean mutuamente a la espera

    de un recurso crtico y esta situacin se

    mantiene de manera permanente, no existen

    como en la exclusin mutua grandes

    soluciones que permitan disolver un

    interbloqueo, por el contrario se deben utilizar

    diversas tcnicas para prevenir este tipo de

    situaciones.

  • 1.10 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    INANICIN

    El tercer problema es la inanicin, esta se

    presenta cuando un proceso permanece

    en estado de bloqueo permanente a la espera

    de un recurso que necesita, pero por algn

    motivo externo al proceso solicitante, este

    nunca logra que le sea asignado (por lo

    general por que dos o ms procesos se pasan

    mutuamente el control de dicho recurso por lo

    que siempre estar ocupado).

  • 1.11 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    EXCLUSIN MUTUA

    Consideremos una variable X compartida entre

    dos procesos A y B que pueden incrementar o

    decrementar la variable dependiendo un suceso.

    Ahora bien, la actualizacin de la variable se

    realiza mediante operaciones sencillas como:

  • 1.12 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    EXCLUSIN MUTUA

    Aunque los procesos P1 y P2 se suponen que se

    ejecutan en distintos procesadores, ambos usan la

    misma posicin en la memoria para X. Esta

    situacin podra generar una intromisin de P1 y P2:

  • 1.13 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    EXCLUSIN MUTUA

    Dicha situacin muestra la necesidad de

    sincronizar ambos procesos.

    Para lograr ello, se establece una seccin

    critica: si un proceso entra a ejecutar una

    seccin critica en la que se acceden a

    variables compartidas, entonces otro proceso

    no puede a entrar a ejecutar una regin critica:

  • 1.14 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    EXCLUSIN MUTUA

  • 1.15 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

    Utilizaremos una variable compartida de tipo

    booleano denominada indicador(flag).

    Asociaremos a cada recurso que se comparte

    un flag. Antes de acceder al recurso, un

    proceso debe examinar el valor el flag que

    podr tomar dos valores: true o false.

    Estos valores indicaran si el recurso esta

    siendo utilizado o esta disponible.

    A continuacin se muestra un algortimo que

    muestra el uso de un flag(indicador) la

    exclusin mutua entre dos procesos:

  • 1.16 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.17 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    El algoritmo no resuelve el problema de la

    exclusin mutua.

    Al ser la comprobacin y la puesta del

    indicador en falso operaciones separadas,

    puede ocurrir que se entrelace el uso del

    recurso por ambos procesos.

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.18 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    Si se dispusiera de una de una instruccin que

    permitiera comprobar el estado y modificarlo

    simultneamente, el algoritmo el uso del recurso

    sin entrelazamiento podra.

    En ausencia de ello, intentaremos utilizar dos

    indicadores para resolver el problema de la

    exclusin mutua.

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.19 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    Asociamos un indicador a cada uno de los

    procesos.

    Ambos procesos pueden leer los dos

    indicadores, pero solo pueden modificar el que

    tienen asociado para evitar que ambos modifiquen simultneamente el mismo indicador.

    Antes de acceder al recurso un proceso debe

    activar su indicador y comprobar que el otro no

    tenga su indicador activo:

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.20 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.21 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    El mecanismo del bloqueo y desbloqueo se

    obtiene de dos procedimientos.

    Para bloquear el acceso a la seccin critica

    ambos procesos llaman al procedimiento

    bloqueo pero con los indicadores en distinto

    orden.

    Pero genera un problema grave! Cual es?

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.22 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    El interbloqueo o bloqueo mutuo se genera

    porque la desactivacin del indicador asociado a

    un proceso se produce una vez que se ha

    completado el acceso a la seccin critica.

    Se puede intentar resolver el problema haciendo

    que el proceso desactive su propio indicador

    durante la fase de bloqueo siempre que

    encuentre que el indicador del otro proceso esta

    activo:

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.23 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    El algoritmo permite resolver el interbloqueo

    siempre que no exista completa concurrencia

    entre ambos procesos.

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.24 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    Otro problema que genera, la ultima versin de

    nuestro algoritmo, es que puede permitir que un

    proceso deje su seccin critica y vuelva a entrar

    mientras que el otro proceso desactiva su

    indicador en la seccin de bloqueo: inanicin.

    Veamos dos soluciones al problema de la

    exclusin mutua que evitan el interbloqueo e

    inanicin:

    Algoritmo de Peterson.

    Algoritmo de Dekker.

    BLOQUEO MEDIANTE EL USO DE VARIABLES

    COMPARTIDAS

  • 1.25 Silberschatz, Galvin and Gagne 2009Operating System Concepts 8th Edition

    Final