Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez...

34
Concurrencia Sem´ aforos Guillermo Rom´ an D´ ıez groman@fi.upm.es Universidad Polit´ ecnica de Madrid Curso 2017-2018 Guillermo Rom´ an, UPM CC: Sem´ aforos 1/11

Transcript of Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez...

Page 1: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

ConcurrenciaSemaforos

Guillermo Roman Dıez

[email protected]

Universidad Politecnica de Madrid

Curso 2017-2018

Guillermo Roman, UPM CC: Semaforos 1/11

Page 2: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Problemas de la espera activa

Los algoritmos de espera activa pueden garantizar la exclusionmutua, pero. . . :

Son difıciles de implementarSon difıciles de probar su correccionMalgastan CPUDependen de la arquitectura donde ejecutanSon difıciles de escalar a diferentes tipos de procesos. . .

Es necesario encontrar una solucion mejor para implementar la exclusionmutua

Guillermo Roman, UPM CC: Semaforos 2/11

Page 3: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Semaforos

Semaforo

“es un tipo abstracto de datos que permite detener o dejar “pasar” unproceso dependiendo del valor de su contador interno”

Detiene los threads (no hace espera activa)

Permite desbloquear uno de los hilos que se encuentrenbloqueados

Se basa en test and set

Es de mas alto nivel que la espera activa ⇒ simplifica losprotocolos de entrada y salida en la seccion crıtica

Resuelve facilmente la exclusion mutua

Permite verificar mas facilmente la correccion de lassoluciones propuestas

Guillermo Roman, UPM CC: Semaforos 3/11

Page 4: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Semaforos

Podrıamos ver cierta analogıa con un semaforo de trafico (unpoco lejana. . . )

Si esta “abierto” permite el paso del threadSi esta “cerrado” detiene el thread

Tiene 1 atributo contador de tipo entero

Se usa para decidir si un proceso puede “pasar” o noEl valor del contador se inicializa en el constructor

Se puede inicializar a cualquier valor mayor o igual que 0

Tiene 2 operaciones:

P() (await, acquire)

V() (signal, release)

Guillermo Roman, UPM CC: Semaforos 4/11

Page 5: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Operacion await

Semaphore s...

void await (){

if(s.contador >0)

s.contador --;

else

block(); // Duerme el thread actual

}

Cuando el contador tiene un valor mayor que 0, unicamente sedecrementa el contador

Cuando el contador vale 0 entonces el proceso se quedabloqueado

Guillermo Roman, UPM CC: Semaforos 5/11

Page 6: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Operacion signal

Semaphore s...

void signal (){

if(! procesos_bloqueados)

s.contador ++;

else

unblock(t); // Despierta un thread t

// que estuviera bloqueado

// (no-determinista)

}

Cuando no hay procesos bloqueados se incrementa el contador

Cuando hay procesos bloqueados se desbloquea uno de esosprocesos

Guillermo Roman, UPM CC: Semaforos 6/11

Page 7: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Justicia

La decision del thread que se despierta en un semaforo esno-determinista

Por esto, a nivel teorico podrıa darse el caso de que un threadsufra inanicion

En las implementaciones se suele hacer en orden de llegada

La implementacion de Java tiene un flag para garantizarjusticiaNuestra implementacion de cclib es “justa”

Para razonar sobre el comportamiento del semaforo debemossuponer que cualquier hilo que este bloqueado puede serdesbloqueado en un signal

Guillermo Roman, UPM CC: Semaforos 7/11

Page 8: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

Un semaforo se puede inicializar con un valor del contadornegativo

Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 9: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 10: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 11: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 12: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 13: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 14: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 15: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 16: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 17: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 18: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 19: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

X A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 20: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

X A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 21: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

X A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

X A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 22: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

X A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

X A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 23: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

¿Verdadero o falso?

X Un semaforo se puede inicializar con un valor del contadornegativo

X Un semaforo incializado con un valor mayor que 0 puede teners.contador < 0

X Si hay un thread bloqueado, entonces s.contador == 0

X Si s.contador == 0 implica que hay un thread bloqueado

X Si s.contador > 0 implica que no hay threads bloqueados

X A traves de un semaforo se puede bloquear un thread distintoal que esta ejecutando

X A traves de un semaforo se puede desbloquear un threaddistinto al que esta ejecutando

X El valor maximo de s.contador no esta acotado

Guillermo Roman, UPM CC: Semaforos 8/11

Page 24: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Deadlock

“Describe una situacion en la cual hay dos o mas procesos bloqueadosesperandose entre sı indefinidamente”

Hay mas de un proceso compitiendo por el mismo recurso yambos estan esperando a que el otro termine con el recurso, yninguno de ellos lo hace

Guillermo Roman, UPM CC: Semaforos 9/11

Page 25: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2

Guillermo Roman, UPM CC: Semaforos 10/11

Page 26: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2

Guillermo Roman, UPM CC: Semaforos 10/11

Page 27: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2 1) P1 adquiere R1

Guillermo Roman, UPM CC: Semaforos 10/11

Page 28: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2 1) P1 adquiere R1

2) P2 adquiere R2

Guillermo Roman, UPM CC: Semaforos 10/11

Page 29: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2 1) P1 adquiere R1

2) P2 adquiere R2

3) P1 solicita R2

Guillermo Roman, UPM CC: Semaforos 10/11

Page 30: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Interbloqueo (Deadlock)

Se pueden intentar detectar mediante un grafo donde:

Los recursos y los procesos son nodosCuando un proceso adquiere un recurso ⇒ arista del recurso alprocesoCuando un proceso solicita un recurso ⇒ arista del proceso alrecurso

P1 R1

R2 P2 1) P1 adquiere R1

2) P2 adquiere R2

3) P1 solicita R2

4) P2 solicita R1

Guillermo Roman, UPM CC: Semaforos 10/11

Page 31: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Filosofos Cenando (dining philosophers)

Guillermo Roman, UPM CC: Semaforos 11/11

Page 32: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Filosofos Cenando (dining philosophers)

F1

F4 F3

F5 F2

R1R5

R2R4

R3

Guillermo Roman, UPM CC: Semaforos 11/11

Page 33: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Filosofos Cenando (dining philosophers)

F1

F4 F3

F5 F2

R1R5

R2R4

R3

Guillermo Roman, UPM CC: Semaforos 11/11

Page 34: Concurrencia Sem aforos - Academia Cartagena99 · Concurrencia Sem aforos Guillermo Rom an D ez groman@ .upm.es Universidad Polit ecnica de Madrid Curso 2017-2018 Guillermo Rom an,

Filosofos Cenando (dining philosophers)

F1

F4 F3

F5 F2

R1R5

R2R4

R3

Guillermo Roman, UPM CC: Semaforos 11/11