2015 01 26 ISC TAP U3 Programacion Concurrente 2015 05 14
NACIONAL
DE MÉXICO
TOPICOS AVANZADOS DE PROGRAMACIÓN
Ingeniería en Sistemas Computacionales
Unidad III ” Programación concurrente
MultiHilos ”
Instituto
Tecnológico
de la Costa Grande
Jueves 14(15) de Mayo de 2015
Estar dentro de una sección crítica es un estado muy especial asignado a un estado. El proceso tiene
acceso exclusivo a los datos compartidos, y todos los demás procesosque necesitan accesar a esos
datos permanecen en espera. Por tanto, las secciones críticas deben ser ejecutadas lo más rápido posible,
un programa no debe bloquearse dentro de su sección crítica, y las secciones críticas deben ser
codificadas con todo cuidado.
Si un proceso dentro de una sección crítica termina, tanto de forma voluntaria como involuntaria,
entonces, al realizar su limpieza determinación, el sistema operativo debe liberar la exclusión mutua
para que otros procesos puedan entrar en sus secciones críticas
Bloqueo mediante el uso de variables compartidas
Vamos a intentar una forma de implementar el bloqueo a una sección crítica mediante el uso de una
variable compartida que se suele denominar indicador (flag). Iremos realizando una serie de
refinamientos del algoritmo queservirán para ir poniendo de manifiesto el tipo de problemas que suelen
presentarse en la implementación de la concurrencia entre procesos. Asociaremos a un recurso que se
comparte un flag. Antes de acceder al recurso, un proceso debe examinar el indicador asociado que
podrá tomar dos valores (True o False) que indicarán, de forma respectiva, que el recurso está siendo
utilizado o que estádisponible. El ejemplo muestra el uso de un indicador para implementar la exclusión
mutua entre dos procesos.
El mecanismo de bloqueo y de desbloqueo se implementa mediante dos procedimientos. Para bloquear
el acceso a la región crítica ambos procesos llaman al procedimiento de bloqueo pero con los indicadores
en distinto orden. La solución tiene el inconveniente de que durante la espera de la liberacióndel recurso,
el proceso permanece ocupado (busy wait). Pero hay un problema mayor. Supongamos que ambos
procesos realizan la llamada al bloqueo de forma simultánea. Cada proceso puede poner su propio
indicador y comprobar el estado del otro. Ambos verán los indicadores contrarios como ocupados y
permanecerán a la espera de que el recurso quede liberado, pero esto no podrá suceder al no poder
entrarninguno en su sección crítica. Esta acción se conoce como interbloqueo (deadlock).
El error más serio que puede ocurrir en entornos concurrentes es el conocido como interbloqueo, que
consiste en que dos o más procesos entran en un estado que imposibilita a cualquiera de ellos salir del
estado en que se encuentra. A dicha situación se llega porque cada proceso adquiere algún recurso
necesario parasu operación a la vez que espera a que se liberen otros recursos que retienen otros
procesos, llegándose a una situación que hace imposible que ninguno de ellos pueda continuar. El
interbloqueo se produce porque la desactivación del indicador asociado a un proceso se produce una vez
que se ha completado el acceso a la sección crítica. Se puede intentar resolver el problema haciendo que
el procesodesactive su propio indicador durante la fase de bloqueo siempre que encuentre que el
indicador del otro proceso está activado.
Caracterización del interbloqueo
Para que se dé una situación de interbloqueo se deben cumplir de forma simultánea las cuatro condiciones
siguientes.
Exclusión mutua. Los procesos utilizan de forma exclusiva los recursos que han adquirido. Si otro proceso
pide elrecurso debe esperar a que este sea liberado.
Instructor: Carlos Baltazar Oliva
Enero – Junio 2015
11
TECNOLÓGICO
NACIONAL
DE MÉXICO
TOPICOS AVANZADOS DE PROGRAMACIÓN
Ingeniería en Sistemas Computacionales
Unidad III ” Programación concurrente
MultiHilos ”
Instituto
Tecnológico
de la Costa Grande
Retención y espera. Los procesos retienen los procesos que han adquirido mientras esperan a...
Regístrate para leer el documento completo.