Sunteți pe pagina 1din 22

Exclusin Mutua

Sistemas Operativos

En un sistema multiprogramado con un nico procesador,


los procesos se intercalan en el tiempo (Round Robin) para
dar apariencia de ejecucin simultnea. Aunque no se
consigue un procesado en paralelo real, y aunque se
produce un sobrecargado en la cpu por el hecho de tener
que cambiar de tarea constantemente, las ventajas de
todo esto son muy elevadas.

Uno de los grandes problemas que nos podemos encontrar


es que el hecho de compartir recursos est lleno de
riesgos. Por ejemplo, si dos procesos hacen uso al mismo
tiempo de una variable global y ambos llevan a cabo tanto
operaciones de lectura como de escritura sobre dicha
variable, el orden en que se ejecuten estas lecturas y
escrituras es crtico, puesto que se ver afectado el valor
de la variable.

Los algoritmos deexclusin mutuase usan en


programacin concurrente para evitar el uso simultneo
de recursos comunes, como variables globales, por
fragmentos de cdigo conocidos como secciones crticas.

La mayor parte de estos recursos son las seales,


contadores, colas y otros datos que se emplean en la
comunicacin entre el cdigo que se ejecuta cuando se da
servicio a una interrupcin y el cdigo que se ejecuta el
resto del tiempo.

La tcnica que se emplea por lo comn para conseguir la


exclusin mutua es inhabilitar las interrupciones durante
el conjunto de instrucciones ms pequeo que impedir la
corrupcin de la estructura compartida (la seccin
crtica). Esto impide que el cdigo de la interrupcin se
ejecute en mitad de la seccin crtica.

Concepto de exclusin mutua.

Consiste en que un solo proceso excluye temporalmente a


todos los dems para usar un recurso compartido de forma
que garantice la integridad del sistema.

Concepto de seccin crtica.

Es la parte del programa con un comienzo y un final


claramente marcados que generalmente contiene la
actualizacin de una o ms variables compartidas.

Para que una solucin al problema de la exclusin mutua


sea vlida, se tienen que cumplir una serie de
condiciones:

Hay que garantizar la exclusin mutua entre los diferentes


procesos a la hora de acceder al recurso compartido. No puede
haber en ningn momento dos procesos dentro de sus respectivas
secciones crticas.

No se deben hacer suposiciones en cuanto a la velocidad relativa


de los procesos en conflicto.

Ningn proceso que est fuera de su seccin crtica debe


interrumpir a otro para el acceso a la seccin crtica.

Cuando ms de un proceso desee entrar en su seccin crtica, se le


debe conceder la entrada en un tiempo finito, es decir, que nunca
se le tendr esperando en un bucle que no tenga final.

REQUISITOS PARA LA EXCLUSIN


MUTUA

Slo un proceso, de todos los que poseen secciones crticas por el


mismo recurso compartido, debe tener permiso para entrar en ella en
un momento dado.

Un proceso que se interrumpe en una seccin no crtica debe hacerlo


sin interferir con los otros procesos.

Un proceso no debe poder solicitar acceso a una seccin crtica para


despus ser demorado indefinidamente, no puede permitirse el
interbloqueo o la inanicin.

Si ningn proceso est en su seccin crtica, cualquier proceso que


solicite entrar en la suya debe poder hacerlo sin demora.

No se debe suponer sobre la velocidad relativa de los procesos o el


nmero de procesadores.

Un proceso permanece en su seccin crtica por un tiempo finito.


Una manera de satisfacer los requisitos de exclusin mutua es dejar la
responsabilidad a los procesos que deseen ejecutar
concurrentemente. Tanto si son programas del sistema como de
aplicacin, los procesos deben coordinarse unos con otros para
cumplir la exclusin mutua, sin ayuda del lenguaje de programacin o
del sistema operativo. Estos mtodos se conocen como soluciones por
software.

Para solucionar el problema de la exclusin mutua vamos a


tener tres tipos de soluciones:
Soluciones

software.

Soluciones

hardware.

Soluciones

aportadas por el Sistema Operativo

Algunos ejemplos de algoritmos de


exclusin mutua son:

Deshabilitando interrupciones

Variables de candado

Alternancia estricta

Solucin de Peterson

La instruccin TSL

Algoritmo de Dekker

Semforos

Mutex

Pasaje de Mensajes

Barreras

Deshabilitando interrupciones

En un sistema con un solo procesador, la solucin ms


simple es hacer que cada proceso deshabilite todas las
interrupciones justo despus de entrar a su regin crtica
y las rehabilite justo despus de salir.

Variables de candado

Considere tener una sola variable compartida (de


candado), que al principio es 0. Cuando un proceso desea
entrar a su regin cr- tica primero evala el candado. Si
este candado es 0, el proceso lo fija en 1 y entra a la
regin crtica. Si el candado ya es 1 slo espera hasta que
el candado se haga 0. Por ende, un 0 significa que ningn
proceso est en su regin crtica y un 1 significa que algn
proceso est en su regin crtica

Alternancia estricta

Garantiza la exclusin mutua, pero su desventaja es que


acopla los procesos fuertemente, esto significa que los
procesos lentos atrasan a los procesos rpidos.

Esta solucin requiere que los dos procesos se alternen de


manera estricta al entrar en sus regiones crticas (por
ejemplo, al poner archivos en la cola de impresin).
Ninguno podra poner dos archivos en la cola al mismo
tiempo.

Solucin de Peterson

Elalgoritmo de Petersones un algoritmo de programacin


concurrente para exclusin mutua, que permite a dos o
ms procesos o hilos de ejecucin compartir un recurso sin
conflictos, utilizando slo memoria compartida para la
comunicacin.

La instruccin TSL

Algunas computadoras, en especial las diseadas con varios


procesadores en mente, tienen una instruccin tal como TSL
REGISTRO, CANDADO (Evaluar y fijar el candado) que
funciona de la siguiente manera. Lee el contenido de la
palabra de memoria candado y lo guarda en el registro RX, y
despus almacena un valor distinto de cero en la direccin
de memoria candado. Se garantiza que las operaciones de
leer la palabra y almacenar un valor en ella sern
indivisibles; ningn otro procesador puede acceder a la
palabra de memoria sino hasta que termine la instruccin.

Algoritmo de Dekker

Es unalgoritmodeprogramacin concurrente
paraexclusin mutua, que permite a dosprocesosohilos
de ejecucincompartir un recurso sin conflictos. Fue uno
de los primeros algoritmos de exclusin mutua inventados,
implementado porEdsger Dijkstra.

Si ambos procesos intentan acceder a la seccin crtica


simultneamente, el algoritmo elige un proceso segn una
variable de turno. Si el otro proceso est ejecutando en su
seccin crtica, deber esperar su finalizacin.

Semforos
Un

semforo es una variable especial (o tipo


abstracto de datos) que constituye el mtodo
clsico para restringir o permitir el acceso a
recursos compartidos (por ejemplo, un recurso de
almacenamiento del sistema o variables del
cdigo fuente) en un entorno de
multiprocesamiento (en el que se ejecutarn
varios procesos concurrentemente).

Mutex

Cuando no se necesita la habilidad del semforo de contar,


algunas veces se utiliza una versin simplificada, llamada
mutex. Los mutexes son buenos slo para administrar la
exclusin mutua para cierto recurso compartido o pieza de
cdigo. Se implementan con facilidad y eficiencia, lo cual
hace que sean especialmente tiles en paquetes de hilos
que se implementan en su totalidad en espacio
deusuario.Unmutex es una variable que puede estar en
uno de dos estados: abierto (desbloqueado) o cerrado
(bloqueado).

Pasaje de Mensajes

Este mtodo de comunicacin entre procesos utiliza dos primitivas


(send y receive) que, al igual que los semforos y a diferencia de los
monitores, son llamadas al sistema en vez de construcciones del
lenguaje.

La primera llamada enva un mensaje a un destino especificado y la


segunda recibe un mensaje de un origen especificado (o de
cualquiera, si al receptor no le importa). Si no hay un mensaje
disponible, el receptor se puede bloquear hasta que llegue uno. De
manera alternativa, puede regresar de inmediato con un cdigo de
error.

Barreras
Algunas

aplicaciones se dividen en fases y tienen


la regla de que ningn proceso puede continuar a
la siguiente fase sino hasta que todos los procesos
estn listos para hacerlo. Para lograr este
comportamiento, se coloca una barrera al final de
cada fase. Cuando un proceso llega a la barrera,
se bloquea hasta que todos los procesos han
llegado a ella.

S-ar putea să vă placă și