Professional Documents
Culture Documents
CONCEPTOS BASICOS
Un semforo es una estructura diseada para sincronizar dos o ms threads o procesos,
de modo que su ejecucin se realice de forma ordenada y sin conflictos entre ellos.
El por qu no se pueden usar directamente otras estructuras mas clsicas, como por
ejemplo usar una variable comn para decidir si se puede o no acceder a un recurso, se
debe a que estamos en un sistema multitarea: hacer esto implicara realizar una espera
activa (un bucle, comprobando constantemente si la variable est o no a 0, y as saber si
podemos seguir ejecutando o no). Por otro lado, puede ocurrir algo mucho peor:
supongamos que un proceso comprueba la variable, y ve que el recurso est libre, por lo
que procedera a cambiar dicha variable de valor y seguir. Pues bien, si justo despus de
la comprobacion pero antes de que cambie el valor se conmuta de tarea (puede pasar,
pues el sistema operativo puede hacerlo en cualquier momento), y el nuevo proceso
comprueba la variable, como todava no se ha actualizado, creer que el recurso est
libre, e intentar tomarlo, haciendo que ambos programas fallen. Lo peor del caso es
que se tratar de un error aleatorio: unas veces fallar (cuando se produzca cambio de
tarea en ese punto) y otras no.
Para evitarlo, se idearon los semforos. Un semforo bsico es una estructura formada
por una posicin de memoria y dos instrucciones, una para reservarlo y otra para
liberarlo. A esto se le puede aadir una cola de threads para recordar el orden en que se
hicieron las peticiones.
Se empieza por inicializar la posicin de memoria a 1 (o al valor correspondiente si ese
recurso concreto admite ms de un acceso simultneo). Esto se hace en el inicio del
programa principal.
A continuacin, cada vez que un thread o un proceso quiera acceder a dicho recurso (por
ejemplo, un fichero), har primero una peticin con la primera de las llamadas
disponibles. Cuando el S.O. ejecuta esa llamada, comprueba el valor que hay en la
posicin de memoria del semforo, y si es distinta de cero, se limita a restarle 1 y
devolver el control al programa; sin embargo, si ya es cero, duerme al proceso que hizo
la peticin y lo mete en la cola de procesos, en espera de que el semforo se ponga a un
valor distinto de cero.
Por ltimo, cuando el proceso ha terminado el acceso al recurso, usa la segunda llamada
para liberar el semforo. Cuando el S.O. la ejecuta, comprueba si la cola del semforo
est vacia, en cuyo caso se limita a incrementar el valor del semforo, mientras que si
tiene algn proceso, lo despierta, de modo que vuelve a recibir ciclos de CPU y sigue su
ejecucin. Si haba varios procesos en espera, se irn poniendo en marcha uno tras otro
a medida que el anterior va liberando el semforo. Cuando termina el ltimo, el
semforo se vuelve a poner a 1. Se trata, por tanto, del mismo proceso que seguiramos
con la variable, pero con la ventaja de que es un mecanismo estandar para todos los
procesos, y como es una operacion atmica (esto es, que durante su ejecucin no se
admiten cambios de tarea), no surje el problema de que una conmutacin pueda
producir errores aleatorios.
Vemos que la primera vez que un proceso usa el semforo, este tiene valor 1, por lo que
pasa a cero y el proceso puede acceder al recurso. Si durante ese tiempo otro proceso
quiere acceder tambin, al usar el semforo, este tiene valor cero, por lo que el S.O. deja
de darle ciclos de CPU. Cuando el primer proceso ha terminado, libera el recurso, con lo
que el S.O. puede comprobar que el segundo proceso est esperando, por lo que le
vuelve a dar ciclos. En este punto, el proceso sigue como si nunca hubiese sido
detenido. Este tipo de semforos son los de Exclusin mtua, o Mutex.
Sistemas inteligentes
En cuanto a la seguridad vial debemos pensar en primer lugar en los peatones.
Primeramente, se deben colocar semforos peatonales en aquellas intersecciones en
donde solo existan semforos para vehculos. Tambin se debe implementar en
intersecciones con mucha afluencia peatonal, los dispositivos sonoros para personas
invidentes.
Por otra parte, se deber cambiar los controladores semafricos muy antiguos para que
puedan soportar varias fases en los ciclos de los semforos, que permitan una
circulacin de los vehculos ms fluida al atravesar la interseccin.
En las zonas centrales de las ciudades y en aquellos ejes viales importantes, se deben
instalar sensores de trfico que permitan identificar las fluctuaciones en la demandas de
trfico a lo largo del da e ir ajustando los tiempos de los semforos.
Por ltimo en las ciudades de porte medio implementar centrales de control de trfico.
Es importante y ayudara mucho en la seguridad vial, que las ciudades vayan
implementando la fiscalizacin electrnica del trfico, por ejemplo, dispositivos que
detectan los vehculos que no se detienen en la luz roja o aquellos conductores que
invaden el crucero peatonal cuando se detienen en la interseccin.
Respecto a los contadores de cuenta regresiva que se estn popularizando, es
conveniente que se empleen nicamente para los semforos peatonales, para que el
viandante sepa si debe cruzar o no una calle, si tiene el tiempo suficiente para hacerlo.
Colocar estos contadores en los semforos vehiculares, induce a algunos conductores a
acelerar el vehculo cuando percibe que le queda pocos segundos para cruzar la
interseccin. Con esto, cualquier incremento en la velocidad en las intersecciones
aumenta el riesgo de colisiones o accidentes.
Adems, estos contadores de cuenta regresiva, muchas veces no permiten que los
sensores de trfico de las intersecciones cumplan sus funciones a cabalidad.
Semforos sincronizados
La sincronizacin de las intersecciones semaforizadas es vital y es tan importante como
la colocacin de los mismos semforos. Cuando las intersecciones semaforizadas no
estn coordinadas entre s, ocasionan demoras innecesarias en el trfico, es decir, crean
congestin artificial. Esto produce estrs en los conductores y pasajeros y, en muchos
casos, obliga a los conductores a evitar los cruces semaforizados, invadiendo calles
locales que de por s deben ser vas lentas y de poco trfico.
Es importante aadir que, en varios casos, no es necesario tener sistemas sofisticados
como centrales de control para realizar sincronizaciones, por ejemplo en vas principales
de una ciudad.
Una de las primeras intersecciones de Lima y del pas, en que se emplearon mtodos de
ingeniera de trnsito de manera adecuada es la interseccin de la Av. 28 de julio con la
Av. Reducto, en Miraflores, hace ms de 10 aos. En esta interseccin se construyeron
carriles de volteo a la izquierda y se program los ciclos de los semforos para que
permita este giro a la izquierda de manera simultnea. Fue la primera interseccin con
este modo de circulacin en intersecciones.
En el Per, por lo general los ciclos semafricos slo cuentan con dos fases, cuando se
podran implementar 3 o ms fases, de manera de desbloquear los atracos y nudos de
trfico que se producen en las intersecciones cuando se voltea a la izquierda.
CONCLUCIONES