Introducion a las redes de petri
• PROCESOS CONCURRENTES.
• DEFINICIÓN DE LAS REDES DE PETRI.
• REPRESENTACIÓN DE LA RED.
• FUNCIONAMIENTO DE LA RED.
• APLICACIÓN PRACTICA.
o Problema de los filósofos.
o Problema de los fumadores de cigarrillos.
• BIBLIOGRAFÍA.
________________________________________
Debemos definir previamente a las redes de Petri lo que son los procesosconcurrentes y sus problemas para poder comprender y especificar posteriormente una red de Petri, los requisitos que debe cumplir y su funcionamiento.
PROCESOS CONCURRENTES.
Son los procesos lanzados en procesadores con múltiples unidades funcionales o múltiples CPU's. Pueden ejecutar varias instrucciones a la vez, además el hardware permite la existencia de varios procesos y el procesador puede conmutarentre ellos y ejecutar instrucciones de varios procesos saltando entre ellos.
Existen instrucciones en la programación concurrente de alto nivel, para que un proceso denominado padre cree uno o varios procesos denominados procesos hijo. El inconveniente de los procesos concurrentes es que hagan operaciones sobre variables comunes. Esto genera varios problemas que podemos observar en losejemplos.
Ejemplo: Lanzamiento de cinco procesos concurrentes que constan de una sola instrucción.
cobegin
P1: a:=4;
P2: b:=3;
P3: d:=a-b;
P4: d:=d+1;
P5: d:=d+1;
coend
Estos cinco procesos comparten las variables a, b y d. Si suponemos que el orden de la ejecución es el descrito, el valor de d es d=3. Evidentemente no podemos presuponer ningún orden en la ejecución. Supongamos la siguientesucesión de eventos:
Inicialmente {a=?, b=?, d=?}
P3: d:=a-b; {a=?, b=?, d=?}
Pl: a:=4; {a=4, b=?, d=?}
P2: b:=3; {a=4, b=3, d=?}
P4: d:=d+l; {a=4, b=3, d=?}
P5: d:=d+l; {a=4, b=3, d=?}
Al finalizar los procesos desconocemos el valor de d. Esto ocurre porque no se ha respetado la precedencia en la ejecución de los procesos. Supondremos que la sentencia "d:=d+1" se ejecutamediante tres instrucciones máquina independientes:
registroCPU:=d;
registroCPU:=registroCPU+ 1;
d:=registroCPU;
Supongamos ahora la siguiente sucesión de eventos:
Inicialmente {a=?, b=?, d=?}
P2: b:=3; {a=?, b=3, d=?}
Pl: a:=4; {a=4, b=3, d=?}
P3: d:=a-b; {a=4, b=3, d=l}
P4: registroCPU:=d; {a=4, b=3, d=l}
P4: registroCPU:=registroCPU+ 1; {a=4, b=3, d=l}
P5:registroCPU:=d; {a=4, b=3, d=l}
P5: registroCPU: =registroCPU+ 1; {a=4, b=3, d=l}
P5: d:=registroCPU; {a=4, b=3, d=2}
P4: d:=registroCPU; {a=4, b=3, d=2}
Se observa que el proceso P4 ha sido interrumpido mientras operaba sobre d. Los incrementos en d que deberían haber tenido como resultado d=3 han dado d=2.
Al recurso al que pueden acceder varios procesos concurrentes a la vez se le denominasección crítica.
Hemos observado dos errores en el ejemplo:
• No cumplimiento de la precedencia.
• Accesos múltiples a la región critica.
La solución a los problemas de sincronización y exclusión mutua se pueden resolver mediante la herramienta semáforo. Un semáforo S es una variable entera que posteriormente a su inicialización, sólo puede ser accedida por dos operaciones estándar eindivisibles denominadas P y V.
La definición clásica de P y V es:
P(S): if S>0 then S:=S-l
else Skip; /* espera activa */
V(S): if (hay procesos en cola) then liberar el primero
else S:=S+l;
Si suponemos semáforos binarios, semáforos que solo pueden tomar el valor 0 o 1, y los procesos concurrente son de la forma:
Pl:
P(S1);
a:=4;
V(S3);
P2:
P(S2);
b:=3;
V(S4);
P3:
P(S3);
P(S4);d:=a-b;
V(S5);
P4:
P(S5);
d:=d+ 1;
V(S6);
P5:
P(S6);
d:=d+l;
Inicialización de los semáforos y lanzamiento de los procesos concurrentes:
begin
S1:=1;
S2:=1;
S3:=0;
S4:=0;
S5:=0;
cobegin
Pl;
P2;
P3;
P4;
P5;
coend;
end
La modelización matemática que conllevan los procesos concurrentes, los problemas de precedencia y los problemas de exclusión mutua sobre secciones criticas...
Regístrate para leer el documento completo.