Vous êtes sur la page 1sur 38

ESCUELA POLITCNICA DEL EJRCITO CIENCIAS DE LA COMPUTACIN SISTEMAS E INFORMTICA SISTEMAS OPERATIVOS

Lizz Chandi Argoti Isaac Naranjo Ivn Ortega Gaby Roldn

INTRODUCCIN SINCRONIZACIN

QU ES SINCRONIZACIN?

Se habla de sincronizacin cuando determinados fenmenos ocurran en un orden predefinido o a la vez.

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

Semforos onitores M de mensajes Paso

PROBLEMAS CLSICOS DE SINCRONIZACIN

BUFFER LIMITADO

LECTORES Y ESCRITORES
FILOSOFOS COMENSALES

BUFFER LIMITADO

Buffer limitado / Productor Consumidor


Dos procesos comparten un almacn (buffer) de tamao fijo. Uno de ellos, el productor, coloca informacin en el almacn (buffer) mientras que el otro, el consumidor, la obtiene de l.
Proceso Productor Proceso Consumidor

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.

La intercalacin depende de como los procesos productor y consumidor son agendados.

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)

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.

CODIGO

int N = 100; int count = 0;

/*Nmero mximo en el buffer*/ /*Nmero de elementos en el buffer*/

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

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

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

est esperando acceder al objeto,


ningn otro lector puede comenzar

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

FILSOFOS COMENSALES ( DIJKSTRA, 1965 )

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.

Primera Solucin Representar cada palillo con un semforo

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;

Inicialmente todos los elementos de palillo estn en 1

Garantiza que dos vecinos comiendo simultneamente Posibilidad de bloqueo mutuo

no

estarn

Suponga que los cinco filsofos sienten hambre simultneamente y cada uno toma su palillo izquierdo

Posibles soluciones al problema de bloqueos


Permitir que como mximo filsofos se sienten a la mesa cuatro filsofos Slo permitir que un filsofo tome sus palillos si ambos estn disponibles ( dentro de la seccin crtica )

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.

Una solucin libre de bloqueos mutuos no elimina necesariamente la posibilidad de inanicin

Solucin por monitores Distinguir entre los tres estados en los que podra estar un filsofo Pensando

Hambriento
Comiendo

Definir el estado del mismo filsofo

RESUMEN

Vous aimerez peut-être aussi