1.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition SINCRONIZACION PROCESOS
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