1Presentacion2Nov2013 Concurrencia

También podría gustarte

Está en la página 1de 26

Concurrencia: exclusin mutua y

sincronizacin
Concurrencia
Se refiere a las situaciones en las que dos
o ms procesos puedan coincidir en el
acceso a un recurso compartido o bien,
que requieran coordinarse en su
ejecucin
Concurrencia
Comunicacin entre procesos.
Comparticin y competencia por los
recursos.
Sincronizacin de la ejecucin de varios
procesos.
Asignacin del tiempo de procesador a
los procesos.
Concurrencia
Mltiples aplicaciones:
Multiprogramacin.
Aplicaciones estructuradas:
Algunas aplicaciones pueden implementarse
eficazmente como un conjunto de procesos
concurrentes.
Estructura del sistema operativo:
Algunos sistemas operativos estn
implementados como un conjunto de procesos
o hilos.
Principios de la Concurrencia
Monoprocesador: Intercala los procesos
como si se estuvieran ejecutando todos al
mismo tiempo.

Multiprocesador: Superpone los procesos.


Dificultades con la
concurrencia
Compartir recursos globales.
Gestionar la asignacin ptima de
recursos.
Localizar un error de programacin.
Un ejemplo sencillo
void echo()
{
ent = getchar();
sal = ent;
putchar(sal);
}
Un ejemplo sencillo
Proceso P1 Proceso P2
. .
ent = getchar(); .
. ent = getchar();
sal = ent; sal = ent;
putchar(sal); .
. putchar(sal);
. .
Labores del sistema operativo
Seguir la pista de los distintos procesos
activos.
Asignar y retirar los recursos:
Tiempo de procesador.
Memoria.
Archivos.
Dispositivos de E/S.
Proteger los datos y los recursos fsicos.
Los resultados de un proceso deben ser
independientes de la velocidad relativa a la que
se realiza la ejecucin de otros procesos
concurrentes.
Interaccin entre procesos
Los procesos no tienen conocimiento de
los dems.
Los procesos tienen un conocimiento
indirecto de los otros.
Los procesos tienen un conocimiento
directo de los otros.
Competencia entre procesos
por los recursos
Exclusin mutua
Secciones crticas:
Slo un programa puede acceder a su seccin
crtica en un momento dado.
Por ejemplo, slo se permite que un proceso
enve una orden a la impresora en un momento
dado.
Interbloqueo.
Inanicin.

Cooperacin entre procesos
por compartimiento
Las operaciones de escritura deben ser
mutuamente excluyentes.
Las secciones crticas garantizan la
integridad de los datos.
Cooperacin entre procesos
por comunicacin
Paso de mensajes:
No es necesario el control de la exclusin
mutua.
Puede producirse un interbloqueo:
Cada proceso puede estar esperando una
comunicacin del otro.
Puede producirse inanicin:
Dos procesos se estn mandando mensajes
mientras que otro proceso est esperando
recibir un mensaje.
Requisitos para la exclusin
mutua
Slo un proceso debe tener permiso para
entrar en la seccin crtica por un
recurso en un instante dado.
Un proceso que se interrumpe en una
seccin crtica debe hacerlo sin interferir
con los otros procesos.
No puede permitirse el interbloqueo o la
inanicin.
Requisitos para la exclusin
mutua
Cuando ningn proceso est en su
seccin crtica, cualquier proceso que
solicite entrar en la suya debe poder
hacerlo sin dilacin.
No se deben hacer suposiciones sobre la
velocidad relativa de los procesos o el
nmero de procesadores.
Un proceso permanece en su seccin
crtica slo por un tiempo finito.
Primer intento
Espera activa:
Un proceso siempre est esperando a entrar
en su seccin crtica.
Un proceso no puede hacer nada productivo
hasta que obtiene permiso para entrar en su
seccin crtica.
Segundo intento
Cada proceso puede examinar el estado del
otro pero no lo puede alterar.
Cuando un proceso desea entrar en su seccin
crtica comprueba en primer lugar el otro
proceso.
Si no hay otro proceso en su seccin crtica
fija su estado para la seccin crtica.
Este mtodo no garantiza la exclusin mutua.
Cada proceso puede comprobar las seales y
luego entra en la seccin crtica al mismo
tiempo.

Tercer intento
Dar valor a la seal para entrar en la seccin
crtica antes de comprobar otros procesos.
Si hay otro proceso en la seccin crtica
cuando se ha dado valor a la seal, el proceso
queda bloqueado hasta que el otro proceso
abandona la seccin crtica.
Se provocar un interbloqueo cuando dos
procesos den valor a sus seales antes de
entrar en la seccin crtica. Entonces cada
proceso debe esperar a que el otro abandone la
seccin crtica.
Una solucin correcta
Cada proceso tiene un turno para entrar
en la seccin crtica.
Si un proceso desea entrar en la seccin
crtica, debe activar su seal y puede que
tenga que esperar a que llegue su turno.

Exclusin mutua: soluciones
por hardware
Inhabilitacin de interrupciones:
Un proceso continuar ejecutndose hasta que
solicite un servicio del sistema operativo o
hasta que sea interrumpido.
Para garantizar la exclusin mutua es suficiente
con impedir que un proceso sea interrumpido.
Se limita la capacidad del procesador para
intercalar programas.
Multiprocesador:
Inhabilitar las interrupciones de un
procesador no garantiza la exclusin mutua.

Exclusin mutua: soluciones
por hardware
Instrucciones especiales de mquina:
Se realizan en un nico ciclo de instruccin.
No estn sujetas a injerencias por parte de
otras instrucciones.
Leer y escribir.
Leer y examinar.
Instrucciones de mquina y
exclusin mutua
Ventajas:
Es aplicable a cualquier nmero de procesos
en sistemas con memoria compartida, tanto
de monoprocesador como de
multiprocesador.
Es simple y fcil de verificar.
Puede usarse para disponer de varias
secciones crticas.
Instrucciones de mquina y
exclusin mutua
Desventajas:
La espera activa consume tiempo del
procesador.
Puede producirse inanicin cuando un
proceso abandona la seccin crtica y hay
ms de un proceso esperando.
Interbloqueo:
Si un proceso con baja prioridad entra en su
seccin crtica y existe otro proceso con mayor
prioridad, entonces el proceso cuya prioridad es
mayor obtendr el procesador para esperar a
poder entrar en la seccin crtica.

Semforos
Para la sealizacin se utiliza una
variable especial llamada semforo.
Si un proceso est esperando una seal,
el proceso es suspendido hasta que tenga
lugar la transmisin de la seal.
Las operaciones wait y signal no pueden
ser interrumpidas.
Se emplea una cola para mantener los
procesos esperando en el semforo.

Semforos
Un semforo es una variable que tiene
un valor entero:
Puede iniciarse con un valor no negativo.
La operacin wait disminuye el valor del
semforo.
La operacin signal incrementa el valor del
semforo.
Anlisis
Cinco filsofos se sientan alrededor de una
mesa y pasan su vida cenando y pensando. Cada
filsofo tiene un plato de fideos y un tenedor a
la izquierda de su plato. Para comer los fideos
son necesarios dos tenedores y cada filsofo
slo puede tomar los que estn a su izquierda y
derecha. Si cualquier filsofo toma un tenedor y
el otro est ocupado, se quedar esperando, con
el tenedor en la mano, hasta que pueda tomar el
otro tenedor, para luego empezar a comer.

También podría gustarte