You are on page 1of 23

SINCRONIZACIÓN DE

PROCESOS

FALICITADOR:

PROF. EDISON PEREZ RAMIREZ.


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.
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.
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.
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.
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.
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
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:


SOLUCIÓN DE PETERSON
 La estructura del proceso Pi
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
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.
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.
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:
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).
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.
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.
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
 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
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.
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.
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).
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).

You might also like