Concurrencia PDF
Concurrencia PDF
Concurrencia PDF
mutua y sincronizacion
Multiprogramacion: Es la gestion de varios procesos dentro de un sistema
monoprocesador
Multiproceso: Es la gestion de varios procesos dentro de un sistema
multiprocesador.
Proceso distribuido: Es la gestion de varios procesos que ejecutan en sistemas de
computadores multiples y remotas.
Un ejemplo sencillo
Considerese el siguiente procedimiento:
procedure echo;
var sal, ent: caracter;
begin
entrada (ent, teclado); sal ent;
salida (sal, terminal)
end.
La leccion que hay que aprender de este ejemplo es que es necesario proteger las
variables globales compartidas (y otros recursos globales compartidos) y que la
unica forma de hacerlo es controlar el codigo que accede a la variable. Si se
impone la norma de que solo un proceso puede acceder a echo en cada instante y
que, una vez en echo, el procedimiento debe ejecutar hasta el final antes de estar
disponible para otro proceso, no se producira el tipo de error expuesto antes.
El tema principal de este capitulo es como imponer esta norma.
PROCESO P1 PROCESO P2
_ _
entrada (ent, teclado) _
entrada (ent, teclado)
sal := ent sal := ent
salida (sal, terminal)
_ salida (sal, terminal)
_
Tiempo de procesador:.
• Memoria: La mayoria de los sistemas operativos emplean esquemas de memoria
vir-tual.
• Archivos:
• Dispositivos de E/S:
3. El sistema operativo debe proteger los datos y los recursos fisicos de cada
proceso contra injerencias no intencionadas de otros procesos. Esto supone
emplear tecnicas relativas a la memoria, archivos y dispositivos de E/S
4. Los resultados de un proceso deben ser independientes de la velocidad relativa
a la que se realiza la ejecucion con respecto a otros procesos concurrentes.
• Los procesos tienen un conocimiento directo de los otros: Los procesos son
capaces de comunicarse con los demas por el nombre y estan disenados para
trabajar conjuntamente en alguna actividad. Estos procesos tambien muestran
cooperacion.
Los procesos concurrentes entran en conflicto cuando compiten por el uso del
mismo recurso. Basicamente, es posible describir esta situacion como sigue. Dos
o mas procesos necesitan acceder a un recurso durante el curso de su ejecucion.
Cada proceso no es consciente de la existencia de los otros y no se ye afectado
por su ejecucion. De aqui se obtiene que cada proceso debe dejar tal y como este
el estado de cualquier recurso que utilice. Como ejemplos de recursos se tienen a
los dispositivos de E/S, la memoria, el tiempo de procesador y el reloj.
program ExclusionMutua;
const n =…; (* nurnero de procesos *)
procedure P(i: entero);
begin
repeat
entrada _ critica (R);
<seccion critica>;
salida _ critica (R);
<resto>
forever
end;
P1: a := a + 1;
b := b + 1;
P2: b := 2*b;
a := 2*a;
Si al principio el estado es consistente, cada proceso por separado dejara los
datos cornpartidos en un estado consistente. Considerese ahora la siguiente
ejecucion concurrente, en la que los dos procesos respetan la exclusion mutua
para cada dato individual (a y b):
a := a + 1;
b := 2 * b;
b := b + l;
a := 2 * a;
En los dos primeros casos expuestos, cada proceso posee su propio entorno
aislado, que no incluye a los otros procesos. Las interacciones entre los procesos
son indirectas. En ambos casos, existe comparticion. En caso de competencia, los
procesos estan compartiendo recursos sin tener conocimiento de la existencia de
otros procesos. En el segundo caso, estan compartiendo valores y, aunque cada
proceso no tiene conocimiento explicito de los otros, si es consciente de la
necesidad de conservar la integridad de los datos. Cuando los procesos cooperan
por comunicacion, en cambio, los distintos procesos participan en una labor
comun que une a todos los procesos. La comunicacion es una manera de
sincronizar o coordinar las distintas actividades.
Como ejemplo de interbloqueo, dos procesos pueden estar bloqueados, cada uno
esperando una comunicacion del otro. Como ejemplo de inanicion, considerense
tres procesos, P1, P2 y P3, que muestran el comportainiento siguiente. P1 intenta
comunicar repetidas veces bien con P2 o con P3 y tanto P2 como P3 intentar
comunicar con P1. Puede surgir una secuencia en la que P1 y P2 intercambien
informacion repetidamente, mientras P3 esta bloqueado esperando una
comunicacion desde P1.
No hay interbloqueo porque P1 permanece activo, pero P3 sufre de inanicion.
1. Debe cumplirse la exclusion mutua: Solo un proceso, de entre todos los que
poseen secciones criticas por el mismo recurso u objeto compartido, debe
tener permiso para entrar en ella en un instante dado.
Hay varias formas de satisfacer los requisitos de exclusion mutua. Una manera es
dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente.
Asi pues, tanto si son programas del sistema como de aplicacion, los procesos
deben coordinarse unos con otros para cumplir la exclusion mutua, sin ayuda por
parte del lenguaje de programacion o del sistema operativo. Estos metodos se
conocen como soluciones por software. Aunque las soluciones por software son
propensas a errores y a una fuerte carga de proceso, resulta util estudiar estos
metodos para tener un mejor entendimiento de la complejidad del proceso
concurrente.Un segundo metodo propone el uso de instrucciones de la maquina a
tal efecto. Estas tienen la ventaja de reducir la sobrecarga pero, sin embargo, se
vera que no son interesantes. El tercer metodo consiste en dar algun tipo de
soporte en el sistema operativo.