22
SINCRONIZACIÓN DE PROCESOS

6 sincronizacion de_procesos

Embed Size (px)

DESCRIPTION

Sincronizacion de procesos Sistemas operativodss

Citation preview

Page 1: 6 sincronizacion de_procesos

SINCRONIZACIÓN DE PROCESOS

Page 2: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

Cada proceso tiene un

segmento de código, llamado

sección crítica, en el que el

proceso puede modificar

variables comunes, actualizar

una tabla, escribir en un

archivo, etc.

Dos procesos no pueden

ejecutar su sección crítica al

mismo tiempo.

Page 3: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

Cualquier solución a este problema deberá tener

3 requisitos:

Exclusión mutua. Si el proceso P está

ejecutándose en su sección crítica, los demás

procesos no pueden estar ejecutando sus

secciones críticas.

Page 4: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

Progreso. Si ningún proceso está ejecutando

su sección crítica y algunos procesos desean

entrar en sus correspondientes secciones

críticas, sólo aquellos procesos que no estén

ejecutando sus secciones restantes pueden

participar en la decisión de cuál será el

siguiente que entre en su sección crítica, y esta

selección no se puede posponer

indefinidamente.

Page 5: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

Espera limitada. Existe un límite en el

número de veces que se permite que otros

procesos entren en sus secciones críticas

después de que un proceso haya hecho una

solicitud para entrar en su sección crítica y

antes de que la misma haya sido concedida.

Page 6: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

En un instante pueden estar activos varios procesos en modo kernel en el sistema, pudiendo producir posibles condiciones de carrera.

Se usan dos métodos generales para gestionar las secciones críticas en los sistemas operativos, cuando se encuentran ejecutando en modo kernel:

Kernels apropiativos. Un kernel apropiativo permite que un proceso sea desalojado mientras se está ejecutando. Debe ser diseñado para asegurar que los datos compartidos del kernel no se vean afectados por posibles condiciones de carrera de los procesos.

Page 7: 6 sincronizacion de_procesos

EL PROBLEMA DE LA SECCIÓN CRÍTICA

Kernels no apropiativos. Un kernel no apropiativo

no permite que un proceso que se esté ejecutando en

modo kernel sea desalojado; se ejecutará hasta que

salga de dicho modo, hasta que se bloquee o hasta

que ceda voluntariamente el control de la CPU.

Ejemplos:

No apropiativos: Windows XP, 2000, UNIX

tradicional, Linux versiones previas a 2.6

Apropiativos: Linux a partir de 2.6, SOLARIS

Page 8: 6 sincronizacion de_procesos

SOLUCIÓN DE PETERSON

No hay garantías de que la solución de Peterson

funcione correctamente en arquitecturas

informáticas modernas.

La solución de Peterson se restringe a dos

procesos que van alternando la ejecución de sus

secciones críticas y de sus secciones restantes: Pi,

Pj.

Esta solución requiere 2 estructuras de datos:

Page 9: 6 sincronizacion de_procesos

SOLUCIÓN DE PETERSON

La estructura del proceso Pi

Page 10: 6 sincronizacion de_procesos

SOLUCIÓN DE PETERSON

Para demostrar que esta solución es correcta, se

tiene que cumplir que:

La exclusión mutua se conserva.

El requisito de progreso se satisface.

El requisito de espera limitada se cumple

Page 11: 6 sincronizacion de_procesos

HARDWARE DE SINCRONIZACIÓN

Las regiones críticas deben protegerse mediante

cerrojos.

Un proceso debe colocar un cerrojo antes de

entrar en sección crítica y liberarlo cuando salga

de la misma.

Se deben implementar funciones a nivel de

instrucciones de máquina que cumplan con los 3

requisitos para resolver el problema de la sección

crítica.

Page 12: 6 sincronizacion de_procesos

SEMÁFOROS

Son herramientas más simples de implementar que

los cerrojos por instrucciones de hardware.

Un semáforo es una variable entera a la que sólo se

puede acceder por 2 operaciones: wait() y signal().

Pueden ser semáforos binarios (cerrojos mútex) o

semáforos contador.

Page 13: 6 sincronizacion de_procesos

SEMÁFOROS

Se puede usar semáforos binarios para abordar el

problema de la sección crítica en el caso de

múltiples procesos, usando un semáforo mútex,

inicializado con el valor 1 y cada proceso Pi se

organiza de esta forma:

Page 14: 6 sincronizacion de_procesos

SEMÁFOROS

Los semáforos contadores se pueden usar para

controlar el acceso a un recurso formado por un

número finito de instancias.

El semáforo se inicializa con el número de

recursos disponibles.

Cada proceso que desee usar el recurso ejecuta

una operación wait () en el semáforo

(decrementando la cuenta).

Page 15: 6 sincronizacion de_procesos

SEMÁFOROS

Cuando un proceso libera el recurso, ejecuta una

operación signal () (incrementando la cuenta).

Cuando la cuenta del semáforo llega a 0, todos las

instancias del recurso estarán en uso. Los

procesos que deseen usar una instancia del

recurso se bloquearán hasta que la cuenta sea

mayor que 0.

Page 16: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

Problema del buffer limitado

Problema de los lectores – escritores

Los procesos escritores tengan acceso exclusivo a la

base de datos compartida.

El primer problema de los lectores-escritores,

requiere que ningún lector se mantenga en espera a

menos que un escritor haya obtenido ya permiso.

Page 17: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

El segundo problema de los lectores-escritores

requiere que, una vez que un escritor está preparado,

dicho escritor realice la escritura tan pronto como sea

posible

Problema de la cena de los filósofos

Considere cinco filósofos que gastan sus vidas en

pensar y comer. Los filósofos comparten una mesa

redonda con cinco sillas, una para cada filósofo. En el

centro de la mesa hay una fuente de arroz y la mesa

se ha puesto con sólo cinco palillos

Page 18: 6 sincronizacion de_procesos

Cuando un filósofo piensa, no se relaciona con sus colegas. De vez en cuando, un filósofo siente hambre v trata de tomar los palillos más próximos a él (los palillos que se encuentran entre él y sus vecinos de la izquierda y la derecha).

Un filósofo sólo puede coger un palillo cada vez. Obviamente, no puede coger un palillo que esté en manos de un vecino de mesa.

Cuando un filósofo hambriento ha conseguido dos palillos, come sin soltar sus palillos. Cuando termina de comer, los coloca de nuevo sobre la mesa y vuelve a pensar

Page 19: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

Formas de corregir los problemas de sincronización.

Los monitores proporcionan mecanismos de sincronización

para compartir tipos abstractos de datos.

Las variables de condición proporcionan un método

mediante el que un procedimiento de un monitor puede

bloquear su ejecución hasta recibir la señal de que puede

continuar.

Solaris, Windows XP y Linux proporcionan mecanismos

como semáforos, mútex, bloqueos mediante bucles sin fin y

variables de condición para controlar el acceso a datos

compartidos.

Page 20: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

Transacciones atómicas

Una transacción es una unidad de programa que se debe

ejecutar atómicamente; es decir, todas las operaciones

asociadas con ella se ejecutan hasta completarse, o no se

ejecuta ninguna de las operaciones.

Para asegurar la atomicidad a pesar de los fallos del

sistema, podemos usar un registro de escritura anticipada.

Page 21: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

Todas las actualizaciones se escriben en el registro, que se

almacena en un medio de almacenamiento estable.

Si se produce un fallo catastrófico del sistema, la informa-

ción contenida en el registro se usa para restaurar el estado

de los elementos de datos actualizados (undo y redo).

Para disminuir el trabajo de buscar en el registro después

de haberse producido un fallo del sistema, podemos usar un

mecanismo de puntos de comprobación (checkpoint).

Page 22: 6 sincronizacion de_procesos

PRINCIPALES PROBLEMAS DE

SINCRONIZACIÓN

Los métodos más utilizados para el control de

transacciones concurrentes son:

Protocolos de bloqueo (uso de cerrojos)

Esquemas de ordenación mediante marcas temporales

(timestamp).