Iet110 sistemas operativos
Download
1 / 28

IET110 Sistemas Operativos - PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on

IET110 Sistemas Operativos. P04: Exclusión Mutua. Slide: 1. Prof. Jonathan Makuc. Sistemas Operativos: Exclusión Mutua. Temario ://. Comunicación entre procesos Conflicto de recursos entre procesos Conceptos de Exclusión mutua (race condicion, atomicidad, etc)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'IET110 Sistemas Operativos' - clarissa


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Iet110 sistemas operativos

IET110Sistemas Operativos

P04: Exclusión Mutua

Slide: 1

Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

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 – ICC243 [ 2 ] Prof. Jonathan Makuc


P

R

P

Q

IPC (A)

IPC

Q

Sistemas Operativos: Exclusión Mutua

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

  • Indirecto:

  • Send(A, mensaje)

  • Recieve(A, mensaje)

  • Directo:

  • Send(Q, mensaje)

  • Recieve(P, mensaje)

Sistemas Operativos – ICC243 [ 3 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

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 – ICC243 [ 4 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

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 – ICC243 [ 5 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Conceptos ://

  • Condiciones de una buena solución Mutex:

  • No puede haber más procesos de los establecidos, ejecutando una sección crítica

  • No se puede hacer suposiciones sobre la velocidad o cantidad de CPU

  • Ningún proceso fuera de su sección crítica puede bloquear otros procesos

  • 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 – ICC243 [ 6 ] Prof. Jonathan Makuc


Proc A

Proc B

Inicio

Inicio

Sistemas Operativos: Exclusión Mutua

Race Conditon ://

Suponga que la salida de B depende del resultado de A

A no alcanza a terminar a tiempo

Se requiere del resultado de A

Sistemas Operativos – ICC243 [ 7 ] Prof. Jonathan Makuc


Región Critica

Sistemas Operativos: Exclusión Mutua

Región Critica y Atomocidad ://

global contador;

char a;

while(1) {

a = getChar();

if(char != ‘ ‘) {

contador++;

char = ‘ ’

}

else {

contador--;

}

}

Debe ser atómica

Sistemas Operativos – ICC243 [ 8 ] Prof. Jonathan Makuc


Disco

Duro

Señal I/O

(Interrupcion)

Tarjeta de Red

Sistemas Operativos: Exclusión Mutua

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.

Time Slice

Proc6

Proc1

CPU1

Proc7

Proc8

Sistemas Operativos – ICC243 [ 9 ] Prof. Jonathan Makuc


Time Slice

Proc2

Int off

Proc1

CPU1

Proc3

Proc4

Disco

Duro

Señal I/O

(Interrupcion)

Tarjeta de Red

Sistemas Operativos: Exclusión Mutua

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.

  • Útil para permitir al Sistema Operativo realizar operaciones atómicas

Sistemas Operativos – ICC243 [ 10 ] Prof. Jonathan Makuc


Proc6

Proc2

Int off

Proc1

Proc5

CPU1

CPU2

Proc7

Proc3

Memoria

Compartida

Proc8

Proc4

Sistemas Operativos: Exclusión Mutua

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.

  • Útil para permitir al Sistema Operativo realizar operaciones atómicas

Sistemas Operativos – ICC243 [ 11 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 12 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

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

B

while(1) {

while(testAndSet(c, 1));

RegionCritica();

c = 0;

}

global int c = 0;

A

while(1) {

while(testAndSet(c, 1));

RegionCritica();

c = 0;

}

Sistemas Operativos – ICC243 [ 13 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • TestAndSet

  • Ejemplo: escriba 2 programas que se alternen una Región crítica utilizando test and set.

B

while(1) {

while(testAndSet(p, 0)); while(testAndSet(c, 1));

RegionCritica();

c = 0;

p = 1;

}

global p = 1;

global c = 0;

A

while(1) {

while(testAndSet(c, 1)); while(testAndSet(p, 1));

RegionCritica();

p = 1;

c = 0;

}

Sistemas Operativos – ICC243 [ 14 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • TestAndSet

  • Ejemplo: escriba 2 programas que se alternen una Región crítica utilizando test and set.

B

while(1) {

while(testAndSet(p, 1));

RegionCritica();

c = 0;

}

global p = 1;

global c = 0;

A

while(1) {

while(testAndSet(c, 1));

RegionCritica();

p = 0;

}

Sistemas Operativos – ICC243 [ 15 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

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.

while(1) {

if(lock == 1) {

lock = 0;

regionCritica();

lock = 1;

}

}

Sistemas Operativos – ICC243 [ 16 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

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.

while(1) {

while(turno != 1);

regionCritica();

turno = 0;

RegionNoCritica();

}

while(1) {

while(turno != 0);

regionCritica();

turno = 1

regionNoCritica();

}

Espera innecesaria producto de que el otro proceso es mucho mas lento

Sistemas Operativos – ICC243 [ 17 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • Solución de Peterson - enter_region, leave_region

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

Inconveniente: solución solo para 2 procesos

Sistemas Operativos – ICC243 [ 18 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 19 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 20 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • Semáforos – Ejemplo Básico

  • Utilice semáforos para proveer exclusión mutua a la llamada regionCritica().

  • Solución:

  • mutex = new Semaforo(1);

while(1) {

mutex.p();

regionCritica();

mutex.v();

}

Sistemas Operativos – ICC243 [ 21 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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);

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();

}

Sistemas Operativos – ICC243 [ 22 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

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.

Variables Condición

wait()

signal()

Si no existen procesos que hayan hecho wait(), el signal() se pierde irremediablemente

Semáforos

P() o down()

V() o up()

Acumulación de liberaciones para su uso posterior

Sistemas Operativos – ICC243 [ 23 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 24 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 25 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • Transferencia de Mensajes: Modus operandi

  • El consumidor envía N mensajes vacío al producto.

  • El productor cada vez que necesita enviar un mensaje toma uno de los mensajes vacíos y lo devuelve lleno.

  • 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 – ICC243 [ 26 ] Prof. Jonathan Makuc


Barrera

Barrera

Barrera

Sistemas Operativos: Exclusión Mutua

Implementación de Exclusión Mutua ://

  • 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 – ICC243 [ 27 ] Prof. Jonathan Makuc


Iet110 sistemas operativos1

IET110Sistemas Operativos

P04: Exclusión Mutua

Slide: 28

Prof. Jonathan Makuc


ad