Está en la página 1de 9

REPBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA


UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA
DE LA FUERZA ARMADA BOLIVARIANA
NCLEO TCHIRA

EL PLANIFICADOR DE PROCESOS
SEMFOROS

Materia:
Sistemas Operativos
Alumna:
Castillo Fernndez, Keidy Mayerlin
C.I. V- 23.136.754
Seccin:
VIIS-01N
Docente:
Ramrez, Mara

San Cristbal, Febrero de 2015

INTRODUCCIN

Dos o ms procesos pueden cooperar por medio de simples seales,


de forma que se pueda obligar a detenerse a un proceso en una posicin
determinada hasta que reciba una seal especfica. Cualquier requisito
complicado de coordinacin puede satisfacerse por medio de la estructura de
seales adecuada. Para la sealizacin, se usan variables especiales
llamadas semforos.
Los semforos se emplean para permitir el acceso a diferentes partes
de programas (llamados secciones crticas) donde se manipulan variables o
recursos que deben ser accedidos de forma especial. Segn el valor con que
son inicializados se permiten utilizar el recurso de forma simultnea.

SEMFOROS
Autor 1
. W. Dijkstra (1965) sugiri el uso de una variable entera para contar el
nmero de seales de despertar, guardadas para un uso futuro. En su
propuesta introdujo un nuevo tipo de variable, al cual l le llam semforo.
Un semforo podra tener el valor 0, indicando que no se guardaron seales
de despertar o algn valor positivo si estuvieran pendientes una o ms
seales de despertar.
Dijkstra propuso que se tuvieran dos operaciones, down y up
(generalizaciones de sleep y wakeup, respectivamente). La operacin down
en un semforo comprueba si el valor es mayor que 0. De ser as, disminuye
el valor (es decir, utiliza una seal de despertar almacenada) y slo contina.
Si el valor es 0, el proceso se pone a dormir sin completar la operacin down
por el momento. Las acciones de comprobar el valor, modificarlo y
posiblemente pasar a dormir, se realizan en conjunto como una sola accin
atmica indivisible. Se garantiza que, una vez que empieza una operacin de
semforo, ningn otro proceso podr acceder al semforo sino hasta que la
operacin

se

haya

completado

bloqueado.

Esta

atomicidad

es

absolutamente esencial para resolver problemas de sincronizacin y evitar


condiciones de carrera. Las acciones atmicas, en las que un grupo de
operaciones relacionadas se realizan sin interrupcin o en definitiva no se
realizan, son en extremo importantes en muchas otras reas de las ciencias
computacionales tambin.
La operacin up incrementa el valor del semforo direccionado. Si uno
o ms procesos estaban inactivos en ese semforo, sin poder completar una
operacin down anterior, el sistema selecciona uno de ellos (al azar) y
permite que complete su operacin down. As, despus de una operacin up
en un semforo que contenga procesos dormidos, el semforo seguir en 0

pero habr un proceso menos dormido en l. La operacin de incrementar el


semforo y despertar a un proceso tambin es indivisible. Ningn proceso se
bloquea al realizar una operacin up, de igual forma que ningn proceso se
bloquea realizando una operacin wakeup en el modelo anterior.
Tipos de semforos
Dependiendo de la funcin que cumple el semforo, vamos a diferenciar los
siguientes tipos:

Semforo de exclusin mutua, inicialmente su contador vale 1 y


permite que haya un nico proceso simultneamente dentro de la seccin
crtica.

Semforo contador, permiten llevar la cuenta del nmero de unidades


de recurso compartido disponible, que va desde 0 hasta N.

Semforo de espera, generalmente se emplea para forzar que un


proceso pase a estado bloqueado hasta que se cumpla la condicin que
le permite ejecutarse. Por lo general, el contador vale 0 inicialmente, no
obstante, podra tener un valor distinto de cero.

Ventajas e inconvenientes
La principal ventaja de los semforos frente a los cerrojos es que permiten
sincronizar dos o ms procesos de manera que no se desperdician recursos
de CPU realizando comprobaciones continuadas de la condicin que permite
progresar al proceso.
Los inconvenientes asociados al uso de semforos son los siguientes:

Los programadores tienden a usarlos incorrectamente, de manera que


no resuelven de manera adecuada el problema de concurrencia o dan
lugar a interbloqueos.

No hay nada que obligue a los programadores a usarlos.

Los compiladores no ofrecen ningn mecanismo de comprobacin


sobre el correcto uso de los semforos.

Son independientes del recurso compartido al que se asocian.

Debido a estos inconvenientes, se desarrollaron los monitores.


Granularidad
Nmero de recursos controlados por cada semforo. Hay de dos tipos:

Granularidad fina: Un recurso por semforo. Hay un mayor grado de


paralelismo, lo que puede mejorar la rapidez de ejecucin de la
proteccin. Aunque a mayor nmero de semforos existe una mayor
probabilidad de que se de un interbloqueo entre semforos, que no sera
una mejora de lo que intentamos evitar.

Granularidad gruesa: Un semforo para todos los recursos. Caso


totalmente inverso al anterior: Ahora al tener un semforo no se produce
interbloqueo entre ellos, aunque los tiempos de ejecucin son
excesivamente largos.
Autor 2
Martha Martnez, los sistemas operativos diferencian a menudo entre

semforos contadores y semforos binarios. El valor de un semforo


contador puede variar en un dominio no restringido, mientras que el valor de

un semforo binario solo puede ser 0 01. En algunos sistemas, los


semforos binarios se conocen como cerrojos mutex, ya que son cerrojos
que proporcionan exclusin mutua.Podemos usar semforos binarios para
abordar el problema de la seccincrtica en el caso de mltiples procesos.
Los semforos contadores se pueden usar para controlar el acceso a
un determinado recurso formado por un nmero finito de instancias. El
semforo se inicializa con el nmero de recursos disponibles. Cada proceso
que desee usar un recurso ejecuta una operacin wait () en el semforo
(decrementando la cuenta). Cuando un proceso libera un recurso, ejecuta
una operacin signal()(incrementando la cuenta). Cuando la cuenta del
semforo llega a 0, todos los recursos estarn en uso. Despus, los
procesos que deseen usar un recurso se bloquearan hasta que la cuenta sea
mayor que 0.
Los semforos pueden ser usados para diferentes propsitos,
entre ellos:
Implementar cierres de exclusin mutua o locks
Barreras
Permitir a un mximo de N threads acceder a un recurso, inicializando el
semforo en N
Notificacin. Inicializando el semforo en 0 puede usarse para
comunicacin entre threads sobre la disponibilidad de un recurso.
Autor 3
La herramienta de sincronizacin ms general son los semforos.
Estos son herramientas de sincronizacin de procesos que tiene asociada
una estructura de datos (descriptor del semforo), una variable entera
Id_semforo que almacena el valor del semforo y una cola de procesos

detenidos en el semforo. Una de sus principales caractersticas es que


cada operacin es indivisible (atmica). Debiendo ser ejecutada globalmente
en todas sus fases sin intercalacin de ninguna otra.
Las operaciones bsicas sobre los semforos son:
1. Inicializar inicializada (valor, Id_semforo)
Asigna a la variable asociada con el semforo el valor indicado como
parmetro, inicializando el descriptor del semforo y la cola de procesos
detenidos. El proceso llamador continuo.
Se puede producir un error si no existe espacio para inicializar un nuevo
descriptor de semforo.
2. Esperarespera (id_ semforo)
Cuando se realiza una operacin de espera, el valor de la variable
asociada con el semforo ser el responsable de la sincronizacin entre los
diversos procesos, de forma que si la variable Id_semforo>0 se permite el
paso a los procesos incondicionalmente (el semforo esta verde), y en caso
contrario Id_semforo =0, el proceso llamador pierde el control del
procesador y es aadido a la cola del semforo (el semforo esta en rojo).

SiId_semforo>0
EntoncesId_semforo:= id_semaforo-1;
En caso contrario detiene_proceso_llamador_cola_sem;
Se puede producir un error si realizamos la operacin sobre un
semforo no inicializado.

3. sealizar sealiza(Id_semforo)
Cuando se realiza esta operacin y hay procesos detenidos en la cola del
semforo, el primero de la cola ser autorizado a continuar. Si la operacin
se realiza sin procesos detenidos, la variable del semforo se incrementa.

Si hay procesos detenidos en la cola del semforo entonces


Pasar un proceso de la cola del semforo
A la cola de procesos preparados
En caso contrario Id_semforo:= id_semaforo+1
Se puede producir un error si realizamos la operacin sobre un
semforo no inicializado.

CONCLUSIN

Un semforo debe inicializarse con un valor no negativo.


Son un tipo de semforos utilizados cuando tenemos varias instancias
de un mismo recurso. Este tipo de semforos se inicializa al nmero

de instancias que tengamos.


Los semforos que fueron introducidos inicialmente por Dijkstra
(1968). Son componentes de muy bajo nivel de abstraccin, de fcil
comprensin y con una gran capacidad funcional. Por el contrario, son
unos componentes que por su bajo nivel de abstraccin resultan muy
peligrosos de manejar y frecuentemente son causa de muchos

errores.
Con los semforos binarios hay que permanecer el menor tiempo

posible en la seccin crtica.


las operaciones UP no suponen suspensin, por lo tanto no son

peligrosas.
Para recibir una seal del semforo, los procesos ejecutan la primitiva
wait(s); si la seal correspondiente an no se ha transmitido, el
proceso es suspendido hasta que tenga lugar la transmisin.

REFERENCIAS

Autor 1: Tanenbaum, Andrew (2009). Sistemas Operativos Modernos 3


Edicin. Mxico. Editorial Pearson Educacin.
Autor 2: Martnez, M. Sistemas Operativos. Instituto Tecnolgico de
Veracruz.

Extrado

el

25

de

febrero

de

2015

desde

http://sistemasoperativos.angelfire.com/html/2.4.2.1.html,
Autor 3: Martnez P.

Cabello M. DazJ.C. (1996). Sistemas Operativos

Teora y Prctica. Espaa. EdicinDaz de Santos, S.A.


(http://rodas.us.es/file/3b15ec90-421c-e145-3f4f
c91ee707f37b/2/tema6_wimba_SCORM.zip/pagina_01.htm)
(https://1984.lsi.us.es/wiki-ssoo/index.php/Sem%C3%A1foros)
(https://aiu.edu/publications/student/spanish/180-207/SISTEMASOPERATIVOS-PROCESOS-CONCURRENTES-Unidad-III.html#t7).