Este documento se refiere al algoritmo de Dekker, un algoritmo de programación concurrente para exclusión mutua que permite a dos procesos o hilos de ejecución compartir un recurso sin conflictos. Presenta las cinco versiones del algoritmo de Dekker, describiendo sus características y funcionamiento. La quinta versión es considerada la óptima al garantizar exclusión mutua, progreso y espera limitada. El matemático holandés Edsger Dijkstra es reconocido por haber presentado este algoritmo.
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
l Administrador de Procesos trabaja junto con el Microkernel para proporcionar los servicios esenciales el sistema operativo. El Administrador de Procesos es responsable de la creación de nuevos procesos en el sistema y de la administración de los recursos más fundamentales asociados con un proceso. Estos servicios se proporcionan mediante mensajes.
Si un proceso quiere crear un nuevo proceso, simplemente ha de enviar un mensaje que contenga los detalles del nuevo proceso a crear. Además se puede crear un proceso en otro nodo fácilmente, enviando un mensaje de creación de proceso al Administrador de Procesos de la máquina remota.
En los sistemas multiprogramados se define el proceso como entidad representante de la ejecución de un programa en un determinado contexto; En general, un proceso es un flujo de ejecución, representado básicamente por un contador de programa, y su contexto de ejecución, que puede ser más o menos amplio.
1. Nereixi Bacilio
(1)
, Wellington Basilio
(2)
, Hector Quiroga
(3)
, Merly Vera
(4)
Kerly Villon
(5)
Facultad de Sistemas y Telecomunicaciones
Universidad Estatal Península de Santa Elena
La Libertad – Ecuador
Nere_bacilio_3@hotmail.com
(1)
, wellingtonbasilio@hotmail.com
(2)
,
Hector_quiroga@hotmail.es
(3)
, m_erlyvera@yahoo.es
(4)
kervill@hotmail.com
(5)
dquirumbay@upse.edu.ec
SISTEMAS OPERATIVOS
Algoritmos de Dekker
RESUMEN
Este documentode refiere aunalgoritmo comoun conjuntoordenadoyfinitode operaciones
que permite hallarlasoluciónde unproblema.Métodoynotaciónenlasdistintasfórmulasdel
cálculo.El algoritmoconstituye unmétodopararesolverunproblemamedianteunasecuencia
de pasos a seguir. Dichasecuenciapuede ser expresada en forma de diagrama de flujo con el
fin de seguirlo de una forma más sencilla.
Dijkstra presentó un algoritmo de exclusión mutua para dos procesos que diseñó el
matemáticoholandésDekker.SegúnDijkstra,lasoluciónse desarrollaporetapas.Este método
tiene la ventaja de ilustrar la mayoría de los errores habituales que se producen en la
construcción de programas concurrentes. El algoritmo de Dekker es un algoritmo de
programación concurrente para exclusión mutua, que permite a dos procesos o hilos de
ejecución compartir un recurso sin conflictos.
Las personas solemos pasar por alto muchas cosas que al parecer son tan simples que las
hacemosnaturalmente.Si yote digoque levantesunbrazolohacessin ninguna complicación,
inclusive aparentaque norequieresesforzarteenello,peroparaque lo logres tu cuerpo sigue
algoritmos biológicos tan rápidamente que no nos percatamos de cada paso que se sigue.
2. BIOGRAFÍA EDSGER DIJKSTRA
Se ha considerado la biografía porque ha
dado lamayor cantidadde solucionesen la
gestión de procesos en los sistemas
operativos.
Nació el 11 de mayo de 1930 fue un
científico de la computación de origen
Dijkstra estudió física teórica en la
Universidad. Trabajó como investigador
para BurroughsCorporationa principiosde
los años 1970. En la Universidad de
Texas en Austin, Estados Unidos, ocupó el
Schlumberger Centennial Chair in
Computer Sciences. Se retiró en 2000.
Entre sus contribuciones a la informática
está el algoritmo de caminos mínimos;
también conocido como Algoritmo de
Dijkstra. Recibió el Premio Turing en 1972.
Falleció el 6 de agosto de 2002
INTRODUCCIÓN
Algoritmo de dekker se basa en un
algoritmo de programación concurrente
para exclusión mutua, que permite a
dos procesos o hilos de ejecución
compartir un recurso sin conflictos de
ejecución
Fue uno de los primeros algoritmos de
exclusión mutua inventados,
implementado por Edsger Dijkstra.
Si ambos procesos intentan acceder a la
sección crítica simultáneamente, el
algoritmo elige un proceso según una
variable de turno. Si el otro proceso está
ejecutando en su sección crítica, deberá
esperar su finalización.
Los algoritmos de Dekker so los procesos
que comparten la variable recurso, y se
bebe evitar que mientras un proceso esté
accediendo a la variable, otro proceso la
esté modificando al mismo tiempo.
Mediante el algoritmo de DEKKER se
consigue:
Exclusión mutua con respecto al
recurso
Se concede a cada proceso el
acceso en un tiempo finito
Se libera el recurso en un tiempo
finito
Existe espera activa
Para el programa hemos elegido que el
númerode procesos sea cuatro, aunque el
número de ellos puede variar a
conveniencia,modificándoloenel #define.
ALGORITMO DE DEKKER
El algoritmode Dekkeresunalgoritmoque
da solución a la exclusión mutua ósea la
solución cuando dos o más procesos
tratan de acceder a un mismo recurso no
compartible.
El algoritmo de Dekker es un algoritmo de
programación concurrente para exclusión
mutua,que permite a dos procesos o hilos
de ejecución compartir un recurso sin
conflictos.
Edsger Dijkstra es uno de los grandes
matemáticos en la historia de la
matemática moderna.
3. Existen cinco versiones del algoritmo
Dekker,teniendociertosfalloslosprimeros
cuatro. La versión 5 es la que trabaja más
eficientemente, siendo una combinación
de la 1 y la 4.
Versión 1: Alternancia estricta.
Versión 2: Problema interbloqueo.
Versión 3: Colisión región crítica
Versión 4: Postergación indefinida.
Versión 5: Algoritmo Óptimo
Versión 1: alternancia estricta
La primer versión del algoritmo de Dekker
es Alternancia Estricta, es llamado de esta
manera ya que obliga a que cada proceso
tengaun turno,oseaque hay un cambiode
turno cada vez que un proceso sale de la
seccióncritica,por lotanto si un procesoes
lento atrasara a otros procesos que
son rápidos.
Características:
Garantiza la exclusión mutua
Su sincronización es forzada
Acoplafuertemente a los procesos
(procesos lentos atrasan a
procesos rápidos)
No garantiza la progresión, ya que
si un proceso por alguna razón es
bloqueado dentro o fuera de la
secciónpuede bloquear a los otros
procesos.
Algoritmo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int turno_proceso; //1 proceso 1, 2 proceso 2
Proceso1()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
while( turno_proceso == 2 ){}
[SECCION_CRITICA]
turno_proceso = 2;
[REALIZA_TAREAS_FINALES]
}
}
Proceso2()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
while( turno_proceso == 1 ){}
[SECCION_CRITICA]
turno_proceso = 1;
[REALIZA_TAREAS_FINALES]
}
}
iniciar(){
turno_proceso = 1;
Proceso1();
Proceso2();
}
Descripción del algoritmo
Cuando un proceso es ejecutado
verifica si es su turno, si no es su
turno se queda en espera por
medio de un ciclo while.(línea 7 y
19)
De lo contrario si es su turno
avanza a la sección crítica.
Cuando el proceso sale de la
sección crítica cambia de turno.
(línea 9 y 21).
Versión 2: problema
interbloqueo
Segunda versión del algoritmo de Dekker
es llamado Problema de Interbloqueo, su
nombre se debe a que si en cada ráfaga de
CPU, cada proceso queda en el mismo
estado,enel estadodonde se le asignaque
Ejemplocuandodos personas quieren
utilizar algún cajero automático la
persona2 tendrá que esperar su turno
para poder hacer uso de este.
4. puede entrar a la sección critica (línea 8
para el proceso 1 y línea 21 para el proceso
2). Entonces estando los dos procesos
con opción a entrar, a la siguiente ráfaga
de CPU ambos procesos verificaran si el
procesoalternopuede entrar(línea9 y 22),
viendo que el proceso alterno tiene
la opción de entrar, los procesos quedan
bloqueados ya que se quedaran en
ciclados bloqueándose mutuamente yaque
no podrán entrar nunca a la sección critica
Características:
Garantiza la exclusión mutua
No garantiza espera limitada
Algoritmo
Descripcióndel algoritmo
El proceso que es
ejecutado después de realizar sus
tareasiniciales,aeste procesose le
permite entrar (línea 8 y 21).
Cuando ya puede entrar verifica si
otro proceso tiene la opción de
poder entrar, si otro proceso
también tiene la opción de poder
entrar se da un interbloqueo.De lo
contrario el proceso avanza a la
sección crítica (línea 9 y 22).
Al salir de la sección crítica el
procesocambia su opción (línea 11
y 24). Y permite al otro proceso
avanzar a la sección crítica.
Versión 3 - Colisión región critica no
garantiza la exclusión mutua.
La Terceraversióndel algoritmode Dekker
es llamado Colisión región crítica no
garantiza la exclusión mutua, como su
nombre lo indica se da una colisión en la
región crítica por la forma en que son
colocados por así decirlo los permisos, ya
que primero se comprueba si otro proceso
está dentro y luego se indica que el
proceso en el que se está actualmente
cambia diciendo que está dentro. Y el
problema se da cuando los
procesos después de haber tenido sus
ráfagas de CPU pasan de la fase de
comprobación y se tiene libre el camino
para entrar a la región crítica, generando
esto una colisión.
Características
No garantizalaexclusiónmutua
Colisiónenlaregióncrítica
Algoritmo
boolean p1_esta_dentro, p2_esta_dentro;
Proceso1()
{
while( true )
[REALIZA_TAREAS_INICIALES]
while( p2_esta_dentro ){}
boolean p1_puede_entrar, p2_puede_entrar;
Proceso1()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p1_puede_entrar = true;
while( p2_puede_entrar ){}
[SECCION_CRITICA]
p1_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
Proceso2()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p2_puede_entrar = true;
while( p1_puede_entrar ){}
[SECCION_CRITICA]
p2_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
iniciar()
{
p1_puede_entrar = false;
p2_puede_entrar = false;
Proceso1();
Proceso2();
}
5. p1_esta_dentro = true;
[SECCIÓN_CRITICA]
p1_esta_dentro = false;
[REALIZA_TAREAS_FINALES]
}
}
Proceso2()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
while( p1_esta_dentro ){}
p2_esta_dentro = true;
[SECCIÓN_CRITICA]
p2_esta_dentro = false;
[REALIZA_TAREAS_FINALES]
}
}
iniciar()
{
p1_esta_dentro = false;
p2_esta_dentro = false;
Proceso1();
Proceso2();
}
Descripcióndel Algoritmo
Al ejecutarse el proceso y después
de realizar sus tareas iniciales,
verificasi otro proceso está dentro
de la sección critica (línea rojo).
Si el otro proceso está dentro
entonces espera a que salga de la
sección crítica. De lo contrario pasa
la fase de comprobación y cambia
su estado a que está dentro (línea
verde).
Luego de pasar la sección crítica
cambia su estado (línea azul),
termina sus tareas finales.
Versión 4 - Postergación Indefinida
Cuarta versión del algoritmo de Dekker es
llamado Postergación Indefinida, su
nombre se debe a que en una parte del
código es colocado un retardo con un
tiempo aleatorio, y el retardo puede ser
muy grande que no se sabe hasta cuándo
entrara a la sección critica.
Características
Garantiza laexclusiónmutua.
Un procesoo variosse quedan
esperandoaque sucedaun evento
que tal veznuncasuceda.
Algoritmo
boolean p1_puede_entrar, p2_puede_entrar;
Proceso1()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p1_puede_entrar = true;
while( p2_puede_entrar )
{
p1_puede_entrar = false;
retardo( tiempo_x ); //tiempo_x es un tiempo
Aleatorio
p1_puede_entrar = true;
}
[SECCION_CRITICA]
p1_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
Proceso2()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p2_puede_entrar = true;
while( p1_puede_entrar )
{
p2_puede_entrar = false;
retardo( tiempo_x ); //tiempo_x es un tiempo
aleatorio
p2_puede_entrar = true;
}
[SECCION_CRITICA]
p2_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
iniciar()
{
p1_puede_entrar = false;
p2_puede_entrar = false;
Proceso1();
Proceso2();
}
6. Descripcióndel algoritmo
Luego de realizar sus tareas
iniciales el proceso solicita poder
entrar en la sección crítica, si el
otro proceso no puede entrar
(línea rojo) ya que su estado es
falso entonces el proceso entra si
problema a la sección critica.
De lo contrario si el otro
proceso también puede entrar
entoncesse entra al ciclo donde el
proceso actual se niega el
paso así mismoy con unretardode
x tiempo siendo este aleatorio
(línea verde) se pausa el proceso,
para darle vía libre a los otros
procesos.
Luego de terminar su pausa
entonces el proceso actual
nuevamente puede entrar y
nuevamente si el otro proceso
puede entrar se repite el ciclo y si
no hay otro proceso, entonces el
procesopuede entraren la sección
critica.
Cambia su estado (línea azul) y
luego realiza sus tareas finales.
Versión 5- Algoritmo Optimo
Quinta versión del algoritmo de Dekker
Algoritmo Optimo, este algoritmo es una
combinación del algoritmo 1 y 4.
Características
Garantiza la exclusión mutua.
Progreso
Espera limitada
Algoritmo
boolean p1_puede_entrar, p2_puede_entrar;
int turno;
Proceso1()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p1_puede_entrar = true;
while( p2_puede_entrar )
{
if( turno == 2 )
{
p1_puede_entrar = false;
while( turno == 2 ){}
p1_puede_entrar = true;
}
}
[REGION_CRITICA]
turno = 2;
p1_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
Proceso2()
{
while( true )
{
[REALIZA_TAREAS_INICIALES]
p2_puede_entrar = true;
while( p1_puede_entrar )
{
if( turno == 1 )
{
p2_puede_entrar = false;
while( turno == 1 ){}
p2_puede_entrar = true;
}
}
[REGION_CRITICA]
turno = 1;
p2_puede_entrar = false;
[REALIZA_TAREAS_FINALES]
}
}
iniciar()
{
p1_puede_entrar = false;
p2_puede_entrar = false;
turno = 1;
Proceso1();
Proceso2();
}
Descripción
Se realizalastareas iniciales, luego
se verificasi hay otro procesos que
puede entrar, si lo hay se entra al
ciclo y si es el turno de algún otro
proceso (línea rojo) cambia su
estado a ya no poder entrar a la
sección crítica y nuevamente
verificasi es el turno de algún otro
proceso (línea verde) si lo es se
7. queda en ciclado hasta que se da
un cambio de turno, luego
nuevamente retoma su estado de
poder entrar a la sección critica,
regresaal cicloy verificasi hayotro
proceso que puede entrar
entonces nuevamente se en cicla,
de lo contrario entra a la sección
critica.
Al salir de la sección critica el
proceso cambia su turno, cambia
su estado y realiza sus tareas
finales.(línea azul)
Conclusión
Concluyo que este proceso de estudio de
Dijkstra ha hecho una muy buena
aportación en el proyecto que estamos
dando a conocer con un tema muy
importante que se utilizaenlainformática,
ya que esta lleva una secuencia de pasos a
seguir en el algoritmo de dekker
El algoritmo de dekker es el que da la
soluciónde problemas informáticos para y
permite utilizar varios procesos en a un
mismo recurso.
Referencias
AprendiendoSoftwareDate A Live
http://aprendiendo-
software.blogspot.com/2011/12/al
goritmo-de-dekker-version-1.html
Postedby: Juan Jose GrajedaCuesi
viernes,23de diciembre de 2011
Actualización:2015
AprendiendoSoftwareDate A Live
http://aprendiendo-
software.blogspot.com/2011/12/al
goritmo-de-dekker-version-2-
problema.html
Postedby: Juan Jose GrajedaCuesi
viernes,23de diciembre de 2011
Actualización:2015
AprendiendoSoftwareDate A Live
http://aprendiendo-
software.blogspot.com/2011/12/al
goritmo-de-dekker-version-3-
colision.html
Postedby: Juan Jose GrajedaCuesi
Viernes,23de diciembre de 2011
Actualización:2015
AprendiendoSoftwareDate A Live
http://aprendiendo-
software.blogspot.com/2011/12/al
goritmo-de-dekker-version-4.html
Postedby: Juan Jose GrajedaCuesi
Ultimoaccesosábado,24 de
diciembre de 2011 Actualización:
2015
AprendiendoSoftwareDate A Live
http://aprendiendo-
software.blogspot.com/2011/12/al
goritmo-de-dekker-version-5.html
Postedby: Juan Jose GrajedaCuesi
Sábado,24 de diciembre de 2011
Actualización:2015
Wikigote
https://es.wikiquote.org/wiki/Edsg
er_Dijkstra
Modificadapor últimavezel 26
abr 2014 a las21:40.