Anda di halaman 1dari 3

INGENIERÍA EN CIENCIAS DE LA COMPUTACIÓN

FUNDAMENTOS DE SISTEMAS OPERATIVOS

Nombre: Pablo Andrés Laverde C. Fecha: 20 de diciembre de 2017


Grupo: 2 Tema: Procesos e Interbloqueos

SINCRONIZACIÓN DE PROCESOS E INTERBLOQUEOS

Los avances en el funcionamiento de procesos hacen que el despliegue de

arquitecturas de sistemas distribuidos sea cada vez más popular, a veces incluso una opción

esencial. Las ventajas de las arquitecturas de sistemas distribuidos incluyen una mayor

disponibilidad general del sistema a través de una mejor tolerancia a fallas, la ejecución paralela

de una aplicación en múltiples hosts y una simplificación de la escalabilidad. La descripción

formal del mecanismo de sincronización hace que sea muy fácil demostrar que el búfer no se

desbordará, que los remitentes y receptores nunca operarán en el mismo marco de mensaje en

el búfer ni se encontrarán en un interbloqueo. Conceptualmente, hay dos formas principales de

sincronización en un sistema de procesos secuenciales que se ejecutan simultáneamente: uno

en nombre del acceso a datos compartidos y otro en nombre de la comunicación. Además,

cuando los procedimientos están diseñados para acceder a datos compartidos, los procesos

concurrentes no deben, en general, ser capaces de ejecutar dichos procedimientos

simultáneamente para preservar la integridad de los datos compartidos. La programación de los

procedimientos allí como secciones críticas logra la sincronización de los procesos de tal manera

que tales procedimientos solo se pueden ejecutar uno a la vez. El tamaño del buffer depende de

lo lejos que uno quiera permitir que los remitentes se adelantan a los receptores.

Los procesos se pueden ejecutar simultáneamente o en paralelo.

El CPU programador cambia rápidamente entre los procesos para proporcionar una

concurrente ejecución. Esto significa que un proceso solo puede completar parcialmente la

ejecución antes de que otro proceso esté programado. De hecho, un proceso puede ser
interrumpido en cualquier punto en su flujo de instrucciones, y el núcleo de procesamiento puede

ser asignado ejecutar instrucciones de otro procedimiento. Además, en la ejecución paralela, dos

flujos de instrucciones (que representan diferentes procesos) se ejecutan simultáneamente en

núcleos de procesamiento separados. Entonces, la ejecución simultánea o paralela puede

contribuir a problemas involucrando la integridad de los datos compartidos por varios procesos.

En un entorno de multiprogramación, varios procesos pueden competir por un número

finito de recursos. Un proceso solicita recursos; si los recursos no están disponibles en ese

momento, el proceso ingresa en estado de espera. A veces, el proceso de espera nunca más

puede cambiar el estado, porque los recursos que ha solicitado se llevan a cabo por otros

procesos de espera. Esta situación se llama interbloqueo. Los bloqueos pueden ocurrir con

muchos otros tipos de recursos disponibles en un sistema informático. Quizás la mejor ilustración

de un interbloqueo se puede extraer de una ley aprobada por la legislatura de Kansas a principios

del siglo XX. Decía, en parte: "Cuando dos trenes se aproximan en un cruce, ambos se detendrán

y ninguno comenzará de nuevo hasta que el otro se haya ido."

Dada una colección de procesos secuenciales cooperativos que comparten datos,

mutua debe proporcionarse la exclusión para garantizar que una sección crítica del código sea

utilizada por solo un proceso o hilo a la vez. Por lo general, el hardware de la computadora

proporciona varias operaciones que aseguran la exclusión mutua. Sin embargo, las soluciones

basadas son demasiado complicadas para la mayoría de los desarrolladores. Cerraduras Mutex

y los semáforos superan este obstáculo. Ambas herramientas se pueden utilizar para resolver

diversos problemas de sincronización y se pueden implementar de manera eficiente,

especialmente si soporte de hardware para operaciones atómicas está disponible.

Varios problemas de sincronización (como el problema del buffer delimitado, el

problema de los lectores-escritores, y el problema de los comedor-filósofos) son importantes

principalmente porque son ejemplos de una gran clase de control de concurrencia problemas.

Estos problemas se utilizan para probar casi todos los propuestos en un esquema de

sincronización. El sistema operativo debe proporcionar los medios para protegerse contra el
tiempo de errores, varios constructos de lenguaje han sido propuestos para tratar estos

problemas. Los monitores proporcionan un mecanismo de sincronización para compartir tipos de

datos abstractos. Una variable de condición proporciona un método por el cual un monitor la

función puede bloquear su ejecución hasta que se le indique que continúe.

Los sistemas operativos también brindan soporte para la sincronización. Por ejemplo,

Windows, Linux y Solaris proporcionan mecanismos como semáforos, mutex bloqueos, spinlocks

y variables de condición para controlar el acceso a los datos compartidos. Los Pthreads API

proporciona soporte para bloqueos mutex y semáforos, así como variables de condición varios

enfoques alternativos se centran en la sincronización para multinúcleo de sistemas. Un enfoque

utiliza memoria transaccional, que puede abordar sin problemas de cronometraje utilizando

técnicas de software o hardware. Otro enfoque utiliza las extensiones de compilador ofrecidas

por Open MP. Finalmente, funciones Los lenguajes de programación tradicionales abordan los

problemas de sincronización al no permitir mutabilidad. Se produce un estado de interbloqueo

cuando dos o más procesos esperan indefinidamente para un evento que solo puede ser

causado por uno de los procesos de espera. Hay tres métodos principales para lidiar con los

bloqueos:

• Usar algún protocolo para evitar o evitar interbloqueos, asegurando que el sistema nunca

entrará en un estado de estancamiento.

• Permitir que el sistema entre en un estado de bloqueo, lo detecte y luego se recupere.

• Ignorar el problema por completo y pretender que los bloqueos nunca se producen en el

sistema.

La tercera solución es la utilizada por la mayoría de los sistemas operativos, incluidos UNIX y

Windows. Un interbloqueo puede ocurrir solo si cuatro condiciones necesarias se mantienen

simultáneamente en el sistema: exclusión mutua, espera y espera, no preferencia, y circular

Para evitar interbloqueos, podemos asegurar que al menos uno de los las condiciones nunca se

cumplan.