Académique Documents
Professionnel Documents
Culture Documents
INTRODUCCIN SINCRONIZACIN
QU ES SINCRONIZACIN?
Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes Independiente es aquel que ejecuta sin requerir la ayuda o cooperacin de otros procesos.
Los procesos son cooperantes cuando estn diseados para trabajar conjuntamente
SINCRONIZACIN DE PROCESOS
Dentro de los Sistemas Operativos los procesos que se ejecutan son muy variados. Realiza lectura de memoria. Modifica los datos que leen.
Pues es aqu en donde el caos podra entrar, Informacin modificada. Bloqueos Mutuos
Solucin
Algoritmos de control de los procesos o hilos Semforos. Monitores.
ALTERNATIVAS DE SINCRONIZACIN
BUFFER LIMITADO
LECTORES Y ESCRITORES
FILOSOFOS COMENSALES
BUFFER LIMITADO
Flujo de datos
Mecanismo de Comunicacin
Si el productor desea colocar un nuevo elemento, y el almacn se encuentra lleno, este deber irse a dormir.
El consumidor despertara al productor cuando elimine un elemento del almacn. De forma anloga, si el almacn esta vaco y el consumidor desea eliminar un elemento del almacn, este debe dormirse hasta que el productor coloque algo en el almacn
Mecanismo de Comunicacin
Cuando se llene Productor bloqueado Cuando est vaco Consumidor bloqueado Buffer
Solucin Semforos
Valor mximo Tamao del buffer Valor mnimo Cero
Si ambos el productor y el consumidor intentan actualizar el buffer concurrentemente, las proposiciones de lenguaje assembler pueden intercalarse.
Suponga que counter es inicialmente igual a 5. Una intercalacin de proposiciones es: productor: register1 = counter (register1 = 5) productor: register1 = register1 + 1 (register1 = 6) consumidor: register2 = counter (register2 = 5) consumidor: register2 = register2 1 (register2 = 4)
CODIGO
void productor( ){ if (buffer == lleno) then dormir(); else { aadir nuevo elemento a la lista; incrementar count; verificar estado consumidor; } }
void consumidor( ){ if (buffer == vaco) then dormir(); else { eliminar elemento de la lista; decrementar count; verificar estado productor; } }
RESUMEN
LECTORES Y ESCRITORES
Lector
Lector
Escritor
Lector
Escritor
Recurso
Restricciones
Slo se permite que un escritor tenga acceso al objeto al mismo tiempo. Mientras el escritor est accediendo al objeto, ningn otro proceso lector ni escritor podr acceder a l.
Se permite que mltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo
Problemas
Primer Problema : No se debe tener a ningn lector en espera a menos que el escritor tenga el permiso del uso del objeto Segundo Problema : Si un escritor
a leer.
CLSICO EJEMPLO Imaginemos una enorme base de datos, como por ejemplo un sistema de reservaciones de en una lnea area, con muchos procesos en competencia, que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo, pero si uno de los procesos est escribiendo, (es decir modificando) la base de datos, ninguno de los dems procesos deber tener acceso a esta, ni siquiera los lectores. El problema es como programar a los lectores y escritores.
RESUMEN
FILSOFOS COMENSALES
Necesidad de asignar varios recursos entre varios procesos sin que haya bloqueos mutuos ni inanicin
CLSICO EJEMPLO
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 coge un tenedor y el otro est ocupado, se quedar esperando, con el tenedor en la mano, hasta que pueda coger el otro tenedor, para luego empezar a comer.
Si dos filsofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condicin de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer. Si todos los filsofos cogen el tenedor que est a su derecha al mismo tiempo, entonces todos se quedarn esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo har porque todos se encuentran en la misma situacin (esperando que alguno deje sus tenedores). Entonces los filsofos se morirn de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock. El problema consiste en encontrar un algoritmo que permita que los filsofos nunca se mueran de hambre.
Un filsofo trata de tomar un palillo ejecutando una operacin espera con ese semforo, y suelta sus palillos ejecutando la operacin seal con los semforos apropiados.
var palillo: array [0..4] of semforo;
no
estarn
Suponga que los cinco filsofos sienten hambre simultneamente y cada uno toma su palillo izquierdo
Solucin asimtrica Un filsofo impar toma primero su palillo izquierdo y luego el derecho, mientras que un filsofo par toma primero su palillo derecho y luego el izquierdo.
Cualquier solucin satisfactoria deber evitar la posibilidad que uno de los filsofos muera de hambre.
Solucin por monitores Distinguir entre los tres estados en los que podra estar un filsofo Pensando
Hambriento
Comiendo
RESUMEN