Problemas Sincronizacion
-
Upload
lizz-chandi-argoti -
Category
Documents
-
view
69 -
download
2
Transcript of Problemas Sincronizacion
![Page 1: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/1.jpg)
Lizz Chandi Argoti
Isaac Naranjo
Iván Ortega
Gaby Roldán
ESCUELA POLITÉCNICA DEL EJÉRCITOCIENCIAS DE LA COMPUTACIÓN
SISTEMAS E INFORMÁTICASISTEMAS OPERATIVOS
![Page 2: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/2.jpg)
INTRODUCCIÓN SINCRONIZACIÓN
![Page 3: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/3.jpg)
• Se habla de sincronización cuando determinados fenómenos ocurran en un orden predefinido o a la vez.
¿QUÉ ES SINCRONIZACIÓN?
![Page 4: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/4.jpg)
• 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 cooperación de otros procesos.
• Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente
![Page 5: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/5.jpg)
• Dentro de los Sistemas Operativos los procesos que se ejecutan son muy variados.
• Realiza lectura de memoria.
• Modifica los datos que leen.
SINCRONIZACIÓN DE PROCESOS
![Page 6: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/6.jpg)
• Pues es aquí en donde el caos podría entrar,
• Información modificada.
• Bloqueos Mutuos
• Solución
• Algoritmos de control de los procesos o hilos
• Semáforos.
• Monitores.
![Page 7: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/7.jpg)
• Semáforos�• Monitores�• Paso de mensajes�
ALTERNATIVAS DE SINCRONIZACIÓN
![Page 8: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/8.jpg)
PROBLEMAS CLÁSICOS DE SINCRONIZACIÓN
• BUFFER LIMITADO
• LECTORES Y ESCRITORES
• FILOSOFOS COMENSALES
![Page 9: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/9.jpg)
BUFFER LIMITADO
![Page 10: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/10.jpg)
Buffer limitado / Productor – Consumidor
Dos procesos comparten un almacén (buffer) de tamaño fijo. Uno de ellos, el productor, coloca información en el almacén (buffer) mientras que el otro, el consumidor, la obtiene de él.
ProcesoProductor
ProcesoConsumidor
Flujo de datos
Mecanismo de Comunicación
![Page 11: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/11.jpg)
Si el productor desea colocar un nuevo elemento, y el almacén se encuentra lleno, este deberá irse a ‘dormir’.
El consumidor despertara al productor cuando elimine un elemento del almacén. De forma análoga, si el almacén esta vacío y el consumidor desea eliminar un elemento del almacén, este debe ‘dormirse’ hasta que el productor coloque algo en el almacén
![Page 12: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/12.jpg)
Mecanismo de Comunicación
• Cuando se llene Productor bloqueado
• Cuando esté vacío Consumidor bloqueado
• Buffer
Solución SemáforosValor máximo Tamaño del bufferValor mínimo Cero
![Page 13: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/13.jpg)
Si ambos el productor y el consumidor intentan actualizar el buffer concurrentemente, las proposiciones de lenguaje assembler pueden intercalarse.
La intercalación depende de como los procesos productor y consumidor son agendados.
![Page 14: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/14.jpg)
Suponga que counter es inicialmente igual a 5. Una intercalación 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)
productor: counter = register1 (counter = 6)
consumidor: counter = register2 (counter = 4)
El valor de count puede ser o bien 4 o 6, donde el
resultado correcto debe de ser 5.
![Page 15: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/15.jpg)
CODIGO
![Page 16: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/16.jpg)
int N = 100; /*Número máximo en el buffer*/ int count = 0; /*Número de elementos en el buffer*/
void productor( ){ if (buffer == lleno) then dormir(); else { añadir nuevo elemento a la lista; incrementar count; verificar estado consumidor;}}
![Page 17: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/17.jpg)
void consumidor( ){ if (buffer == vacío) then dormir(); else { eliminar elemento de la lista; decrementar count; verificar estado productor;}}
![Page 18: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/18.jpg)
RESUMEN
![Page 19: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/19.jpg)
![Page 20: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/20.jpg)
LECTORES Y ESCRITORES
![Page 21: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/21.jpg)
LECTORES Y ESCRITORES ( COURTOIS ET AL., 1971)
Un objeto se va a compartir entre varios usuarios, algunos solo quieren leer el contenido ( lectores ), otros quieren actualizarlo (escritores)
Lector Lector Escritor Lector Escritor
Recurso
![Page 22: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/22.jpg)
Restricciones
• Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo. Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni escritor podrá acceder a él.
• Se permite que múltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo
![Page 23: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/23.jpg)
Problemas
• Primer Problema : No se debe tener a ningún lector en espera a menos que el escritor tenga el permiso del uso del objeto
• Segundo Problema : Si un escritor
• está esperando acceder al objeto,
• ningún otro lector puede comenzar
• a leer.
![Page 24: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/24.jpg)
CLÁSICO EJEMPLO
Imaginemos una enorme base de datos, como por ejemplo un sistema de reservaciones de en una línea aérea, 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 demás procesos
deberá tener acceso a esta, ni
siquiera los lectores.
El problema es como programar a los lectores y escritores.
![Page 25: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/25.jpg)
RESUMEN
![Page 26: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/26.jpg)
![Page 27: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/27.jpg)
FILÓSOFOS COMENSALES
![Page 28: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/28.jpg)
FILÓSOFOS COMENSALES ( DIJKSTRA, 1965 )
Necesidad de asignar varios recursos entre varios procesos sin que haya
bloqueos mutuos ni inanición
![Page 29: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/29.jpg)
CLÁSICO EJEMPLO
Cinco filósofos se sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Si cualquier filósofo 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.
![Page 30: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/30.jpg)
Si dos filósofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condición de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer.
Si todos los filósofos cogen el tenedor que está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo hará porque todos se encuentran en la misma situación (esperando que alguno deje sus tenedores). Entonces los filósofos se morirán de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock.
El problema consiste en encontrar un algoritmo que permita que los filósofos nunca se mueran de hambre.
![Page 31: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/31.jpg)
Primera Solución
• Representar cada palillo con un semáforo
• Un filósofo trata de tomar un palillo ejecutando una operación espera con ese semáforo, y suelta sus palillos ejecutando la operación señal con los semáforos apropiados.
var palillo: array [0..4] of semáforo;
• Inicialmente todos los elementos de palillo están en 1
![Page 32: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/32.jpg)
• Garantiza que dos vecinos no estarán comiendo simultáneamente
• Posibilidad de bloqueo mutuo
• Suponga que los cinco filósofos sienten hambre simultáneamente y cada uno toma su palillo izquierdo
![Page 33: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/33.jpg)
Posibles soluciones al problema de bloqueos
• Permitir que como máximo filósofos se sienten a la mesa cuatro filósofos
• Sólo permitir que un filósofo tome sus palillos si ambos están disponibles ( dentro de la sección crítica )
![Page 34: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/34.jpg)
Solución asimétrica Un filósofo impar toma primero su palillo izquierdo y luego el derecho, mientras que un filósofo par toma primero su palillo derecho y luego el izquierdo.
![Page 35: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/35.jpg)
Cualquier solución satisfactoria deberá evitar la posibilidad que uno de los filósofos muera de hambre.
Una solución libre de bloqueos mutuos no elimina necesariamente la posibilidad de inanición
![Page 36: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/36.jpg)
Solución por monitores
Distinguir entre los tres estados en los que podría estar un filósofo Pensando
Hambriento
Comiendo
Definir el estado del mismo filósofo
![Page 37: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/37.jpg)
RESUMEN
![Page 38: Problemas Sincronizacion](https://reader033.fdocument.pub/reader033/viewer/2022061516/557202c54979599169a40f22/html5/thumbnails/38.jpg)