La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1.

Presentaciones similares


Presentación del tema: "IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1."— Transcripción de la presentación:

1 IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1

2 Sistemas Operativos – ICC243 [ 2 ] Prof. Jonathan Makuc Temario :// Comunicación entre procesos Conflicto de recursos entre procesos Conceptos de Exclusión mutua (race condicion, atomicidad, etc) Implementación de Exclusión mutua (testAndSet, semaforos, etc) Soluciones Por Hardware Soluciones Por Software Sistemas Operativos: Exclusión Mutua

3 Sistemas Operativos – ICC243 [ 3 ] Prof. Jonathan Makuc Comunicación entre procesos (IPC) :// - Comunicación entre procesos sin la necesidad de compartir variables. - Operaciones: Envío de mensajes, recepción de mensajes - Permite la separación completa, reduciendo los errores, permitiendo que procesos que no pueden confiar uno del otro, cooperen Sistemas Operativos: Exclusión Mutua Directo: - Send(Q, mensaje) - Recieve(P, mensaje) Indirecto: - Send(A, mensaje) - Recieve(A, mensaje) IPC PQ IPC (A) P R Q

4 Sistemas Operativos – ICC243 [ 4 ] Prof. Jonathan Makuc Conflicto de Recursos entre procesos :// Problemas comunes: - Productor no termina de escribir mensaje y consumidor asume un largo incorrecto de mensajes - Dos o más productores envían mensajes simultáneamente intercalándose la información - Dos o más consumidores revisan la cola al mismo tiempo produciéndose una duplicación del proceso del mensaje Sistemas Operativos: Exclusión Mutua

5 Sistemas Operativos – ICC243 [ 5 ] Prof. Jonathan Makuc Conceptos :// Race Condition (Condición de competencia): falla en un sistema donde el resultado depende críticamente del orden relativo de los eventos. Atomicidad: operación que se realiza por completo o no tiene efecto alguno. Región (Sección) Crítica: porción de código que no puede ser ejecutada concurrentemente, de lo contrario el resultado es incierto. Algoritmos de Exclusión Mutua (MUTEX): usados para evitar el uso concurrente de un recurso que no se puede compartir. Deadlock: condición en la cual dos o más procesos se encuentran en un estado donde ninguno puede avanzar dado que otro proceso posee un recurso requerido y viceversa. Sistemas Operativos: Exclusión Mutua

6 Sistemas Operativos – ICC243 [ 6 ] Prof. Jonathan Makuc Conceptos :// Condiciones de una buena solución Mutex: 1.No puede haber más procesos de los establecidos, ejecutando una sección crítica 2.No se puede hacer suposiciones sobre la velocidad o cantidad de CPU 3.Ningún proceso fuera de su sección crítica puede bloquear otros procesos 4.Ningún proceso debería esperar por siempre para entrar a su región crítica “Si algo puede salir mal, SALDRA.” -- Ley de Murphay Sistemas Operativos: Exclusión Mutua

7 Proc B Inicio Sistemas Operativos – ICC243 [ 7 ] Prof. Jonathan Makuc Race Conditon :// Sistemas Operativos: Exclusión Mutua Suponga que la salida de B depende del resultado de A Se requiere del resultado de A A no alcanza a terminar a tiempo Proc A Inicio

8 Sistemas Operativos – ICC243 [ 8 ] Prof. Jonathan Makuc Sistemas Operativos: Exclusión Mutua Región Critica y Atomocidad :// global contador; char a; while(1) { a = getChar(); if(char != ‘ ‘) { contador++; char = ‘ ’ } else { contador--; } Región Critica Debe ser atómica

9 Sistemas Operativos – ICC243 [ 9 ] Prof. Jonathan Makuc Implementación de Exclusión Mutua :// Interrupciones Las Interrupciones son señales electricas que llegan de dispositivos de hardware, que provoca que el sistema operativo pase a modo kernel y atienda el evento. Esta acción suele provocar cambio de contexto. Sistemas Operativos: Exclusión Mutua CPU1 Proc1 Disco Duro Tarjeta de Red Señal I/O (Interrupcion) Time Slice Proc6 Proc7 Proc8

10 Sistemas Operativos – ICC243 [ 10 ] Prof. Jonathan Makuc Implementación de Exclusión Mutua :// Apagado de Interrupciones Se deshabilitan las interrupciones de la CPU permitiendo que complete su tarea atómicamente al impedir que se produzca cambio de contexto. Sistemas Operativos: Exclusión Mutua  Útil para permitir al Sistema Operativo realizar operaciones atómicas CPU1 Proc2 Proc1 Proc3 Proc4 Int off Disco Duro Tarjeta de Red Señal I/O (Interrupcion) Time Slice

11 Sistemas Operativos – ICC243 [ 11 ] Prof. Jonathan Makuc Implementación de Exclusión Mutua :// Apagado de Interrupciones Se deshabilitan las interrupciones de la CPU permitiendo que complete su tarea atómicamente al impedir que se produzca cambio de contexto. Inconvenientes: - De permitir su uso por un proceso de usuario, este podría apagarlas y no reanudarlas, bloqueando completamente la CPU. - En sistemas multiprocesador, este método solo apaga las interrupciones del CPU que corría el proceso en cuestión. Otros procesos podrán acceder a la memoria compartida. Sistemas Operativos: Exclusión Mutua  Útil para permitir al Sistema Operativo realizar operaciones atómicas CPU2 CPU1 Proc2 Proc1 Proc3 Proc4 Proc5 Proc6 Proc7 Proc8 Memoria Compartida Int off

12 Sistemas Operativos – ICC243 [ 12 ] Prof. Jonathan Makuc TestAndSet El hardware proporciona un método que permite setear una variable atómicamente retornando el valor anterior de la misma. Si el valor difiere del seteado, entonces se ha logrado ingresar nuestro dato, de lo contrario esta la información de otro proceso. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

13 Sistemas Operativos – ICC243 [ 13 ] Prof. Jonathan Makuc TestAndSet Ejemplo Básico: un programa que permita que solo 1 proceso ingrese a la región crítica simultáneamente, sin importar si provoca starvation. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// global int c = 0; A while(1) { while(testAndSet(c, 1)); RegionCritica(); c = 0; } B while(1) { while(testAndSet(c, 1)); RegionCritica(); c = 0; }

14 Sistemas Operativos – ICC243 [ 14 ] Prof. Jonathan Makuc TestAndSet Ejemplo: escriba 2 programas que se alternen una Región crítica utilizando test and set. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// global p = 1; global c = 0; A while(1) { while(testAndSet(c, 1)); while(testAndSet(p, 1)); RegionCritica(); p = 1; c = 0; } B while(1) { while(testAndSet(p, 0)); while(testAndSet(c, 1)); RegionCritica(); c = 0; p = 1; }

15 Sistemas Operativos – ICC243 [ 15 ] Prof. Jonathan Makuc TestAndSet Ejemplo: escriba 2 programas que se alternen una Región crítica utilizando test and set. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// global p = 1; global c = 0; A while(1) { while(testAndSet(c, 1)); RegionCritica(); p = 0; } B while(1) { while(testAndSet(p, 1)); RegionCritica(); c = 0; }

16 Sistemas Operativos – ICC243 [ 16 ] Prof. Jonathan Makuc Implementación de Exclusión Mutua :// Variables Lock (Bloqueo) Se consulta una variable antes de entrar a la región crítica cambiando su valor para impedir que otro proceso entre. Inconveniente: - Se produce una condición de competencia entre el paso de verificación y seteo de la variable, antes de la región crítica. Sistemas Operativos: Exclusión Mutua while(1) { if(lock == 1) { lock = 0; regionCritica(); lock = 1; }

17 Sistemas Operativos – ICC243 [ 17 ] Prof. Jonathan Makuc Implementación de Exclusión Mutua :// Alternación estricta Se proporciona un método vía programación del usuario donde 2 o más procesos se turnan secuencialmente para entrar a sus regiones críticas. Inconveniente: poco recomendable cuando uno de los procesos es mucho mas lento que los otros, ya que este podría bloquear al resto estando fuera de su sección crítica. Sucede cuando el proceso lento da acceso al rápido a la RC, la ejecuta junto con su región no critica y espera a que el proceso lento termine con su región no critica. Sistemas Operativos: Exclusión Mutua while(1) { while(turno != 0); regionCritica(); turno = 1 regionNoCritica(); } while(1) { while(turno != 1); regionCritica(); turno = 0; RegionNoCritica(); } Espera innecesaria producto de que el otro proceso es mucho mas lento

18 Sistemas Operativos – ICC243 [ 18 ] Prof. Jonathan Makuc Solución de Peterson - enter_region, leave_region Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// Inconveniente: solución solo para 2 procesos La doble condición permite considerar el caso inicial cuando los 2 procesos entras simultáneamente y el segundo cambia “turn”, como el caso alternante donde se utiliza la variable de interés

19 Sistemas Operativos – ICC243 [ 19 ] Prof. Jonathan Makuc Dormir y despertar El proceso verifica si puede ingresar a la región critica, si no puede duerme y luego verifica nuevamente. Problema: - Si un proceso tiene clara preferencia de scheduling sobre otro, ocurrirá que aquel rezagado no pueda salir nunca de su sección crítica provocando una inversión de prioridad Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

20 Sistemas Operativos – ICC243 [ 20 ] Prof. Jonathan Makuc Semáforos Solución propuesta por Dijkstra en 1965 que sugiere el uso de un contador para las llamadas de liberación (ej: wakeup) y así guardarlas para un futuro. Un usuario no debe modificar este contador directamente y solo tiene acceso a los siguientes métodos atómicos: -P() o down(): verifica si el valor del contador. Si es mayor que cero, decrementa el valor y continua la ejecución. Si es cero se bloquea, no terminando la llamada P(). -V() o up(): aumenta el valor del contador en 1. Si existen procesos bloqueados, se escoge uno al azar y se le permite terminar la operación down(). Los semáforos deben ser implementados a nivel de sistema operativo, pues requieren del control de este para bloquear y desbloquear un proceso. Un caso especial es el de la JVM (Java Virtual Machine), la cual maneja las llamadas a semáforos que esta misma implementa; comportándose de esta forma como el SO de las aplicaciones java que corren sobre ella. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

21 Sistemas Operativos – ICC243 [ 21 ] Prof. Jonathan Makuc Semáforos – Ejemplo Básico Utilice semáforos para proveer exclusión mutua a la llamada regionCritica(). Solución: mutex = new Semaforo(1); Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// while(1) { mutex.p(); regionCritica(); mutex.v(); }

22 Sistemas Operativos – ICC243 [ 22 ] Prof. Jonathan Makuc Semáforos - Ejemplo Construya 3 programas A, B y C que generen la siguiente salida: > CBACBACBACBACBACBA… Solución: Semáforos a utilizar: a = new Semaforo(0); b = new Semaforo(0); c = new Semaforo(1); Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// A while(1) { a.p(); print(“A”); c.v(); } B while(1) { b.p(); print(“B”); a.v(); } C while(1) { c.p(); print(“C”); b.v(); }

23 Sistemas Operativos – ICC243 [ 23 ] Prof. Jonathan Makuc Semáforos v/s Variables Condición Las variables tienen un comportamiento idéntico a los semáforos, con la salvedad que estas NO acumulan ni cuentan llamadas de liberación. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// Semáforos P() o down() V() o up() Acumulación de liberaciones para su uso posterior Variables Condición wait() signal() Si no existen procesos que hayan hecho wait(), el signal() se pierde irremediablemente

24 Sistemas Operativos – ICC243 [ 24 ] Prof. Jonathan Makuc Monitores Solución implementada por un lenguaje de programación. Mediante la inclusión de palabras clave en el código, al momento de compilar el lenguaje incorpora las primitivas que considere adecuadas para proporcionar exclusión mutua. Ejemplo: Java – synchronized class Ejemplo { public void synchronized funcion1() { …. } public void synchronized funcion2() { …. } } En este ejemplo ambos métodos son excluyentes. Solo uno puede ser llamado simultáneamente Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

25 Sistemas Operativos – ICC243 [ 25 ] Prof. Jonathan Makuc Transferencia de Mensajes Este método de comunicación entre procesos utiliza 2 primitivas: Estilo CEstilo Java send(destino, &mensaje) send(destino, mensaje) recieve(origen, &mensaje) mensaje = recieve(origen) Las llamadas send y recieve bloquean (o retornan un mensaje de error) cuando no existe disponibilidad de envió o mensaje que leer. ítems importantes en un sistema de mensaje: - ACK (Acknowledge): acuse de recibe permite al emisor verificar la correcta recepción del mensaje. - Número de secuencia de mensaje: permite al receptor detectar mensajes repetidos. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

26 Sistemas Operativos – ICC243 [ 26 ] Prof. Jonathan Makuc Transferencia de Mensajes: Modus operandi 1. El consumidor envía N mensajes vacío al producto. 2. El productor cada vez que necesita enviar un mensaje toma uno de los mensajes vacíos y lo devuelve lleno. 3. El consumidor recibe y procesa el mensaje, reenviando al productor el mensaje vacío para obtener mas información. Variantes: -Sistema de buzón: espacio de memoria compartida que utilizan ambos procesos. Cuando el buzón detecta que esta vació, la llamada recieve bloquea. De la misma forma cuando el buzón esta lleno, send bloquea. -No buffers: si no se utilizan buffers, buzones o paso de mensajes vacíos, entonces se tiene una comunicación completamente sincrónica. Aquí si se ejecuta send antes que recieve, el productor bloquea hasta que el consumidor recibe correctamente, y viceversa. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua ://

27 Sistemas Operativos – ICC243 [ 27 ] Prof. Jonathan Makuc Barreras Primitiva pensada para grupos de procesos. Bloquea la ejecución de un conjunto, hasta que un número determinado esté esperando para liberarlos simultáneamente. Sistemas Operativos: Exclusión Mutua Implementación de Exclusión Mutua :// Barrera

28 IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 28


Descargar ppt "IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1."

Presentaciones similares


Anuncios Google