Вы находитесь на странице: 1из 5

bandera

Variables
compartida
cerrojo Variable
con valor de
RV interna
0 o 1de
Variable con
*lock TSL al
referencia
cerrojo
Funciones
TSL(bool Función que activa el cerrojo para poder entrar en
*lock) la sección critica
Procesos Prioridad Condición de ejecución
Siempre se busca
A Máxima
Menor que ejecutar cuando este listo
B
A
Planificador Iteración Quien se ejecuta Que hace? Espera? Cerrojo
- 0 - cerrojo = 0 - 0
TSL(&cerroj
A esta Listo
o)
RV = 0
*lock = 1 1
1 A return RV
while(0)
entra en NO
región
critica= 0
cerrojo 0
TSL(&cerroj
B esta Listo
o)
RV = 0
*lock = 1 1
B
return RV
while(0)
entra en NO
A esta Listo 2 región
TSL(&cerroj
critica 1
o)
RV = 1
A *lock = 1
return RV
while(1) SI

Ningún proceso
se planifica ya
que el proceso 3 -- -- -- -- --
A sigue
ejecutandose.
Descripción
-
Entramos en
TSL

Salimos de TSL

funcionó como
se espera el
Entramos
TSL en
TSL

Salimos de TSL
B no salio de su
Se produce
región critica
espera
indefinida, y B
Ynunca termina
una inversión
su ejecución.
de prioridad de
A
Ademas
también se
produce un
interbloqueo
porque el
planificador no
puede
planificar mas,
mientras A se
este ejecutado.
bandera
Variables
compartida
cerrojo Variable
con valor de
RV interna
0 o 1de
Variable con
*lock TSL al
referencia
cerrojo
Funciones
TSL(bool Función que activa el cerrojo para poder entrar en la
*lock) sección critica
Procesos
Proceso con
A flujo
proceso
apropiado
B
extraño!
Descripció
Iteración Quien se ejecuta Que hace? Espera? Cerrojo
n
0 - cerrojo = 0 - 0 -
Entramos
TSL(&cerrojo)
en TSL
RV = 0
*lock = 1 1
Salimos de
A return RV
TSL
1 while(0) NO
entra en
región critica

Entramos
cerrojo = 0 0
en TSL
TSL(&cerrojo)
RV = 0

Al instante *lock = 1 1
que A esta Salimos de
return RV
en su TSL
sección
critica B se B while(0) NO
ejecuta ya
que proceso
B hizo una
trampa Ambos
colocando el entra en están en
cerrojo con región critica sección
el valor de critica!!!
0.
bandera
Variables
para ser
bandera
Clave
usada por
compartida
cerrojo swap
con valor de
Variable
*a 0o1
referenciada
Variable
*b
referenciada
Funciones
swap( *a, Función que activa el cerrojo para poder entrar en
*b) la sección critica
Procesos
Proceso con
A flujo con
Proceso
B apropiado.
flujo
apropiado.
Descripció
Iteración Quien se ejecuta Que hace? Espera? Cerrojo Clave
n
0 - cerrojo = 0 - 0 -
clave = 1 1
while(1 ==
SI Intercambio
1)
swap(&cerro
A 1 0 cerrojo por
jo, &clave)
while(0==
entra en1) NO clave
región
crítica
clave =1 1
while(1 == Espera
SI Intercambio
1)
B se ejecuta durante la swap(&cerro hasta que
1 1 cerrojo por
sección crítica de A jo, &clave) cerrojo este
while(1== 1) SI clave
1 en 0,
Aejecutando
continúa y
termina
swap la
utilización
indefinidam
A cerrojo = 0 0
de la
ente.
sección
while(1== 1) SI crítica.
swap(&cerro
1 0
jo, &clave)
while(0 ==
B continúa su ejecución entra NO 1
1) en
región
crítica= 0
cerrojo

Вам также может понравиться