Você está na página 1de 2

[Fecha]

SISTEMAS OPERATIVOS

Problemas de Concurrencia. Tomado y recopilado desde la WEB por Ing. Edgar Escobar
En los sistemas de tiempo compartido (aquellos con varios usuarios, procesos, tareas,
trabajos que reparten el uso de CPU entre estos) se presentan muchos problemas debido a
que los procesos compiten por los recursos del sistema. Imagine que un proceso est
escribiendo en la unidad de cinta y se le termina su turno de ejecucin e inmediatamente
despus el proceso elegido para ejecutarse comienza a escribir sobre la misma cinta. El
resultado es una cinta cuyo contenido es un desastre de datos mezclados. As como la cinta,
existen una multitud de recursos cuyo acceso debe der controlado para evitar los problemas
de la concurrencia.
El sistema operativo debe ofrecer mecanismos para sincronizar la ejecucin de procesos:
semforos, envo de mensajes, pipes, etc. Los semforos son rutinas de software (que en su
nivel ms interno se auxilian del hardware) para lograr exclusin mutua en el uso de recursos.
Para entender este y otros mecanismos es importante entender los problemas generales de
concurrencia, los cuales se describen enseguida.

Condiciones de Carrera o Competencia


La condicin de carrera (race condition) ocurre cuando dos o ms procesos acceden un
recurso compartido sin control, de manera que el resultado combinado de este acceso
depende del orden de llegada. Suponga, por ejemplo, que dos clientes de un banco realizan
cada uno una operacin en cajeros diferentes al mismo tiempo.
El usuario A quiere hacer un depsito. El B un retiro. El usuario A comienza la transaccin y
lee su saldo que es 1000. En ese momento pierde su turno de ejecucin (y su saldo queda
como 1000) y el usuario B inicia el retiro: lee el saldo que es 1000, retira 200 y almacena el
nuevo saldo que es 800 y termina. El turno de ejecucin regresa al usuario A el cual hace su
depsito de 100, quedando saldo = saldo + 100 = 1000 + 100 = 1100. Como se ve, el retiro
se perdi y eso le encanta al usuario A y B, pero al banquero no le convino esta transaccin.
El error pudo ser al revs, quedando el saldo final en 800.

Postergacin o Aplazamiento Indefinido(a)


Consiste en el hecho de que uno o varios procesos nunca reciban el suficiente tiempo de
ejecucin para terminar su tarea. Por ejemplo, que un proceso ocupe un recurso y lo marque
como ocupado y que termine sin marcarlo como desocupado. Si algn otro proceso pide ese
recurso, lo ver ocupado y esperar indefinidamente a que se desocupe.

Condicin de Espera Circular


Esto ocurre cuando dos o ms procesos forman una cadena de espera que los involucra a todos.
Por ejemplo, suponga que el proceso A tiene asignado el recurso cinta y el proceso B tiene
asignado el recurso disco. En ese momento al proceso A se le ocurre pedir el recurso disco y al
proceso B el recurso cinta. Ah se forma una espera circular entre esos dos procesos que se
puede evitar quitndole a la fuerza un recurso a cualquiera de los dos procesos.

Prof. Ing. Edgar Escobar, EPE


Siempre Impulsando la Construccin del Conocimiento

[Fecha]

SISTEMAS OPERATIVOS

Condicin de No Apropiacin
Esta condicin no resulta precisamente de la concurrencia, pero juega un papel importante en
este ambiente. Esta condicin especifica que si un proceso tiene asignado un recurso, dicho
recurso no puede arrebatrsele por ningn motivo, y estar disponible hasta que el proceso
lo suelte por su voluntad.

Condicin de Espera Ocupada


Esta condicin consiste en que un proceso pide un recurso que ya est asignado a otro
proceso y la condicin de no apropiacin se debe cumplir. Entonces el proceso estar
gastando el resto de su time slice chequeando si el recurso fue liberado. Es decir, desperdicia
su tiempo de ejecucin en esperar. La solucin ms comn a este problema consiste en que
el sistema operativo se d cuenta de esta situacin y mande a una cola de espera al proceso,
otorgndole inmediatamente el turno de ejecucin a otro proceso.

Condicin de Exclusin Mutua


Cuando un proceso usa un recurso del sistema realiza una serie de operaciones sobre el
recurso y despus lo deja de usar. A la seccin de cdigo que usa ese recurso se le llama
regin crtica. La condicin de exclusin mutua establece que solamente se permite a un
proceso estar dentro de la misma regin crtica. Esto es, que en cualquier momento solamente
un proceso puede usar un recurso a la vez. Para lograr la exclusin mutua se ideo tambin el
concepto de regin crtica. Para logar la exclusin mutua generalmente se usan algunas
tcnicas para lograr entrar a la regin crtica: semforos, monitores, el algoritmo de Dekker y
Peterson, los candados entre otros.

Condicin de Ocupar y Esperar un Recurso


Consiste en que un proceso pide un recurso y se le asigna. Antes de soltarlo, pide otro recurso
que otro proceso ya tiene asignado.

DeadLock
Los problemas descritos son todos importantes para el sistema operativo, ya que debe ser capaz de
prevenir o corregirlos. Tal vez el problema ms serio que se puede presentar en un ambiente de
concurrencia es el abrazo mortal, tambin llamado trabazn y en ingls deadlock. El deadlock es
una condicin que ningn sistema o conjunto de procesos quisiera exhibir, ya que consiste en que
se presentan al mismo tiempo cuatro condiciones necesarias: La condicin de no apropiacin, la
condicin de espera circular, la condicin de exclusin mutua y la condicin de ocupar y esperar un
recurso. Ante esto, si el deadlock involucra a todos los procesos del sistema, el sistema ya no podr
hacer algo productivo. Si el deadlock involucra algunos procesos, stos quedarn congelados para
siempre.

Prof. Ing. Edgar Escobar, EPE


Siempre Impulsando la Construccin del Conocimiento