martes, 14 de julio de 2009

Sincronización de Procesos con Semáforos




Autores

Antony Petrocelli: petrocellia@gmail.com
Daniel Acosta: shagdan01@hotmail.com



Resumen

En un sistema multiprogramado, los procesos comparten recursos, en un instante, mas de un proceso puede solicitar acceder a un recurso compartido que solo debe ser manipulado por un proceso a la vez, no se debe permitir que varios procesos accedan al mismo tiempo a un recurso ya que causaría resultados indeseados, para solucionar este problema es necesario que los procesos estén sincronizados y pare ello utilizamos los mecanismos de software como semáforos.



Palabras Clave: procesos, recursos, semáforo, sincronización



Concepto Básico de Semáforos

Los semáforos se pueden describir mejor como contadores que se usan para controlar el acceso a recursos compartidos por múltiples procesos. Se usan con más frecuencia como un mecanismo de cierre para prevenir que los procesos accedan a un recurso particular mientras otro proceso lo está utilizando. Los semáforos son a menudo considerados como el más difícil de los tres tipos de objetos Sistema V IPC.

Los Semáforos no son mecanismos hardware, sino que son proporcionados por el sistema operativo, además son mecanismos independientes de la maquina, simples de utilizar y pueden trabajar con varios procesos.

El nombre de semáforo es realmente un término viejo del ferrocarril, que se usaba para prevenir accidentes, en el cruce de las vías de los viejos carros. Exactamente lo mismo se puede decir sobre un semáforo. Si el semáforo está abierto (los brazos en alto), entonces un recurso está disponible (los carros cruzarían las vías). Sin embargo, si el semáforo está cerrado (los brazos están abajo), entonces el recurso no están disponible (los carros deben esperar).


Operaciones Básicas de un Semáforo

Un semáforo es una variable entera sobre la que se puede realizar varias operaciones atómicas:

  • Asignación de valores iniciales no negativos , 1, 2, 3 .....

  • Wait, esta operación comprueba que el valor del semáforo es mayor que 0, si es así, decrementa el valor actual del semáforo, es decir le da luz ver al proceso para que continúe. Si el valor del semáforo es 0 el proceso es bloqueado, es decir se encola hasta que el semáforo nuevamente este en verde.

  • Signal, esta operación incrementa en 1 el valor del semáforo, lo pone en verde para que el primer proceso que este en la cola avance y haga uso del semáforo.


Tipos de Semáforos

Existen dos tipos de semáforos, los binarios y los generales

  • Semáforos Binarios: Solo deben tomar los valores 0 y 1.

  • Semáforos Generales: Este tipo de semáforos puede tomar cualquier valor positivo o 0.


Cola de Procesos de un Semáforo

Tanto los semáforos binarios, como los generales emplean una cola para mantener los procesos esperando, generalmente es de tipo FIFO (Fisrt In, First Out), el proceso que ha estado mas tiempo en la cola, es decir el que se encuentra al inicio, es el primero en salir.


Ejemplo de uso de Semáforos


semaforo mutex;

mutex=1;

int main ()

{

wait(mutex);

printf(“Hola Mundo”);

signal(mutex);

return 0;

}



Bibliografías


[1] http://www.utpl.edu.ec/blog/sistemasoperativos/2008/05/01/la-sincronizacion-de-procesos/

[2 ]http://loshijosdeden.blogspot.com/2009/02/metodos-de-sincronizacion.html

[3] http://grupos.emagister.com/documento/metodos_de_sincronizacion_de_celos/1699-174457

No hay comentarios:

Publicar un comentario