comunicacion e interbloqueo
TRANSCRIPT
1
Sistemas Operativos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 1
Tema 3Comunicación, Sincronización e
Interbloqueo
2
¿Qué aprenderemos en este tema?
Objetivo general
El alumno será capaz de
Identificar los problemas que plantea la existencia de varios procesos
ejecutándose a la vez en el sistema, compartiendo recursos, y las
herramientas que se utilizan para resolver esos problemas.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 2
herramientas que se utilizan para resolver esos problemas.
Analizar el problema que supone la aparición de interbloqueos en un
sistema informático, así como las técnicas apropiadas para tratarlo.
3
¿Qué aprenderemos en este tema?
Objetivos específicos (comunicación y sincronización de procesos)
Concepto base
• Comprender el concepto de procesos concucurrentes..
• Distinguir qué tipos de procesos pueden provocar problemas
durante su ejecución concurrente..
Modelos de procesos concurrentes
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 3
• Conocer qué “problemas tipo” podemos encontrarnos al trabajar
con procesos concurrentes.
Mecanismos IPC
• Conocer qué mecanismos existen para la comunicación y
sincronización de procesos y cómo funcionan.
• Ser capaces de aplicar los mecanismos IPC habituales a la
resolución de los “problemas tipo” de programación concurrente.
4
¿Qué aprenderemos en este tema?
Objetivos específicos (interbloqueo)
Concepto base
• Comprender el concepto de interbloqueo.
• Distinguir qué tipos de recursos pueden provocar problemas de
interbloqueo.
Representación del sistema
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 4
• Ser capaces de crear un modelo de sistema que pueda ser usado
para representar el estado del mismo, viendo los estados
problemáticos y cómo solucionarlos.
Tratamiento del interbloqueo
• Comprender las distintas técnicas que existen para tratar el
interbloqueo (Prevención, predicción, detección)
• Comprender las ventajas y desventajas de cada una de ellas.
5
Contenido
Parte I: Comunicación y sincronización de procesos (Tema 6)
1. Introducción a la programación Concurrente (6.1)
2. Modelos de Comunicación y Sincronización (6.2)
3. Mecanismos de sincronización y comunicación (6.3, 6.4 )
4. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Parte II: Interbloqueo
1. Introducción (7.1 y 7.2)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 5
1. Introducción (7.1 y 7.2)
2. Modelo del sistema. (7.3)
3. Condiciones para el interbloqueo. (7.4)
4. Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
5. Tratamiento del interbloqueo: Predicción (7.8)
6. Tratamiento del interbloqueo: Detección y recuperación. (7.6)
7. Aplicación a los Sistemas Operativos (7.9)
6
Parte I: Comunicación y sincronización entre procesos1.- Introducción a la programación Concurrente
Procesos (o hilos) concurrentes
– Aquellos que existen simultáneamente en el sistema y pueden tener que compartir recursos.
Concurrencia real (Paralelismo)– La ejecución de los procesos se realiza en diferentes procesadores– Modelos de
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 6
– Modelos de • Multiprocesador (una máquina con varios procesadores)• Multicomputadora (múltiples máquinas conectadas en red)
Concurrencia aparente
– La simultaneidad se simula. Los procesos intercalan su ejecución en el tiempo.
– Modelo con un único procesador
7
Parte I: Comunicación y sincronización entre procesos1.- Introducción a la programación Concurrente
Necesidad de la concurencia
– Acelera cálculo. • Dividir la tarea en procesos paralelos: (a+b)*(a-b) 3 procesos
– Posibilita el uso interactivo. • Múltiples usuarios que hacen consultas. (ej. a base de datos)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 7
• Múltiples usuarios que hacen consultas. (ej. a base de datos)• Se genera un proceso para cada uno
– Se aprovechan mejor los recursos de la máquina. • Ej. CPU
8
Parte I: Comunicación y sincronización entre procesos1.- Introducción a la programación Concurrente
Tipos de Procesos Concurrentes
Independientes
• Se ejecutan sin requerir la ayuda o cooperación de otrosprocesos
• En general la mayor parte de los procesos se ejecutanindependientemente de ningún otro.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 8
independientemente de ningún otro.
Cooperantes
• Diseñados para trabajar conjuntamente en alguna actividad.
• Deben ser capaces de comunicarse e interactuar entre ellos
9
Parte I: Comunicación y sincronización entre procesos1.- Introducción a la programación Concurrente
Interacciones entre procesos (de cualquier tipo)
– Comparten o compiten por el acceso a un recurso físico o lógico
• Ej. Dos procesos independientes pueden competir por el acceso adisco
• Ej. Dos procesos desean modificar el contenido de un registro de labase de datos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 9
base de datos
– Se comunican o sincronizan para alcanzar un objetivo común
• Ej. (a+b)*(a-b) El proceso que realiza el producto no puede empezar hasta que los que realizan la suma y resta no hayan acabado.
Necesidad de control por parte del Sistema operativo
Inclusión de servicios que permitan sincronización y comunicación (explícita).
10
Parte I: Comunicación y sincronización entre procesos1.- Introducción a la programación Concurrente
Problemas que presenta la concurrencia
– Condiciones de carrera: El resultado final de la ejecución de variosprocesos concurrentes depende de la secuencia de ejecución.
– Interbloqueo: bloqueo permanente de varios procesos que compiten porrecursos o se sincronizan entre sí.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 10
recursos o se sincronizan entre sí.
11
Contenido
Parte I: Comunicación y sincronización de procesos (Tema 6)
1. Introducción a la programación Concurrente (6.1)
2. Modelos de Comunicación y Sincronización (6.2)
3. Mecanismos de sincronización y comunicación (6.3, 6.4 )
4. Aspectos de diseño (6.5)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 11
5. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
12
Parte I: Comunicación y sincronización entre procesos
2.- Problemas clásicos: El problema de la sección crítica
void ingresar(char *cuenta, int cantidad) {
int saldo, fd;
fd = open(cuenta, O_RDWR);
read(fd, &saldo, sizeof(int));
saldo = saldo + cantidad;
lseek(fd, 0, SEEK_SET);
write(fd, &saldo, sizeof(int));
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 12
write(fd, &saldo, sizeof(int));
close(fd);
return; © J. Carretero, F. García, P. de Miguel, F. Pérez
}
• Si dos procesos ejecutan concurrentemente este código se puede perder algún ingreso.
• Solución: secciones críticas
13
Parte I: Comunicación y sincronización entre procesos2.- Problemas clásicos: Problema de la Sección Crítica. Definición
• Los procesos concurrentes suelen compartir recursos (periféricos, variables..)
• Puede ocurrir que se intente acceder al mismo recurso y que éste no pueda ser usado por varios procesos a la vez. (Ej. Impresora, saldo)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 13
Sección crítica
– Segmento de código de un programa que accede a recursos compartidos con otros procesos, siendo imprescindible un acceso exclusivo a dichos recursos.
14
Parte II: Comunicación y sincronización entre procesos2.- Problemas clásicos: Problema de la Sección Crítica
Mecanismo de protección de una sección crítica (Condiciones de
carrera)
– Cada proceso debe solicitar permiso a su sección crítica– Cuando un proceso sale de su sección crítica debe indicarlo
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 14
Estructura general del mecanismo
Entrada a la sección crítica
Código de la sección críticaSalida de la sección crítica
15
Parte II: Comunicación y sincronización entre procesos2.- Problema de la Sección Crítica. Solución al ejemplo
void ingresar(char *cuenta, int cantidad) {
int saldo, fd;
fd = open(cuenta, O_RDWR);
<Entrada en la sección crítica>
read(fd, &saldo, sizeof(int));
saldo = saldo + cantidad;
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 15
saldo = saldo + cantidad;
lseek(fd, 0, SEEK_SET);
write(fd, &saldo, sizeof(int));
<Salida de la sección crítica>
close(fd);
return; © J. Carretero, F. García, P. de Miguel, F. Pérez
}
16
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema del Productor-Consumidor
ProcesoProductor
ProcesoConsumidor
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 16
Mecanismo de comunicación
Flujo de datos
17
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema del Productor-Consumidor
• Uno o más procesos generan ciertos datos (producen)
• Uno o más procesos utilizan esos datos (consumen)• Ej: cadena de montaje• Ej: compilador: el productor genera código ensamblador. El
consumidor (ensamblador) transforma ese código en código máquina
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 17
• Se debe disponer de algún mecanismo de comunicación y de sincronización entre ambos.
– Se deben enviar datos del productor al consumidor– Si se llena el mecanismo el productor deberá esperar a que el
consumidor consuma
18
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema de los lectores-escritores
EscritorLector Lector Escritor Lector
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 18
Recurso
19
• Existe un recurso (fichero, registro, etc) que va a ser utilizado por una serie de procesos concurrentes
• Algunos procesos accederán sin modificarlo (lectores) y otros lo modificarán (escritores)
• Restricciones– Sólo se permite que un escritor tenga acceso al recurso al mismo
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema de los lectores-escritores
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 19
– Sólo se permite que un escritor tenga acceso al recurso al mismo tiempo (no habrá más escritores ni lectores)
– Se permite que múltiples lectores tengan acceso al recurso simultáneamente
• Es necesario disponer de servicios de sincronización que controlen el acceso
20
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema del Cliente-Servidor
Computador Computador
Petición
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 20
Procesocliente
S.O.
Respuesta
Procesoservidor
21
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema del cliente-servidor
• En el modelo cliente-servidor dos procesos se comunican para enviar petición (cliente) y devolver resultados (servidor)
• El cliente y servidor pueden estar en distintas máquinas (Ej: correo electrónico, transferencia de ficheros, etc)
• El SO debe ofrecer servicios que permitan comunicación entre estos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 21
• El SO debe ofrecer servicios que permitan comunicación entre estos procesos– Si los procesos están en la misma máquina
• Técnicas de memoria compartida o archivos– Si los procesos están en distintas máquinas
• Técnicas de envío de mensajes
22
9.- Mecanismos de comunicación y sincronización entre procesos2.- Problemas clásicos. Problema de recursos limitados. La cena de los filósofos
• Es una metáfora para representar a un conjunto de procesos que comparten un conjunto limitado de recursos.
• En un monasterio hay 5 filósofos que se pasan la vida pensando y
comiendo. Cuando necesitan comer, van a una mesa donde hay 5
platos y cinco tenedores. Para comer, necesitan dos tenedores.
• Hay que garantizar
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 22
• Hay que garantizar
– que todo filósofo pueda comer en un tiempo finito cuando tenga
hambre.
– que no se producen interbloqueos.
23
Contenido
Parte I: Procesos
Parte II: Comunicación y sincronización de procesos (Tema 6)
1. Introducción a la programación Concurrente (6.1)
2. Modelos de Comunicación y Sincronización (6.2)3. Mecanismos de sincronización y comunicación (6.3, 6.4 )
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 23
4. Aspectos de diseño (6.5)
5. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
24
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de Mecanismos
Mecanismos de comunicación
• Archivos
• Tuberías
Mecanismos de Sincronización
• Tuberías
• Señales
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 24
• Tuberías
• Memoria compartida
• Paso de Mensajes
• Señales
• Semáforos, mutex
• Paso de Mensajes
25
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Ficheros
• Los ficheros pueden utilizarse para compartición de datos por parte de varios procesos.
• Son fáciles de usar, al basarse la comunicación en las operaciones de leer y escribir.
• Pueden comunicar un número potencialmente ilimitado de procesos.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 25
• Pueden comunicar un número potencialmente ilimitado de procesos.
• Es poco eficiente, al ser operaciones lentas.
• Se necesita un mecanismo de sincronización para ordenar el acceso al fichero.
26
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Tuberías
Procesode Usuario
Procesode Usuario
SO
write read
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 26
pipe
SO
Flujo de datos © J. Carretero, F. García, P. de Miguel, F. Pérez
27
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Tuberías
• Es un mecanismo tanto de comunicación como de sincronización usado en el estándar Posix
• Se utilizan las mismas llamadas para leer y escribir que en ficheros. Ambas operaciones son atómicas.
• Es un fichero FIFO: cuando se lee un dato, se lee el que más tiempo lleva
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 27
en la tubería y este dato desaparece de la tubería.
• Si un proceso intenta leer de una tubería vacía, el S.O. duerme al proceso hasta que haya datos.
• Si la tubería está llena y se intenta escribir, el proceso se dormirá hasta que haya sitio.
• Puede ser utilizado por múltiples procesos, tanto leyendo o escribiendo.
28
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Señales
Envío de señales entre procesos
•Un proceso puede bloquearse (dormirse) hasta que reciba una señal (llamada pause).
• Un proceso puede despertar a otro enviando una señal (llamada kill).
Problemas del mecanismo
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 28
Problemas del mecanismo
• Un proceso puede recibir señales aunque no esté esperando por ellas (son asíncronas).
• Las señales no se encolan. Si hay una señal pendiente de tratar y se recibe otra del mismo tipo, sólo queda constancia de que ha llegado una señal.
29
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Semáforos
• (Dijkstra 1965)
• Estructura con tres operaciones definidas: Inicialización, wait, signal.
• Todas las operaciones son atómicas .
• Internamente constituido por un valor entero.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 29
wait (s)
{ s=s-1;
if (s<0)
dormir();
}
signal (s)
{ s=s+1;
if (s<=0)
Despertar a un proceso dormido sobre s;
}
30
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Semáforos
Solución a la sección crítica
wait (s);
SECCION CRÍTICA
signal(s);
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 30
• El valor de s debe ser inicializado a 1.
• La solución es válida para n procesos.
• No presenta espera activa (los procesos que esperan están dormidos).
31
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Semáforos
P0
Valor delsemáforo (s)
wait(s) wait(s)
wait(s)
1
0
-1
-2
P1 P2
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 31
© J. Carretero, F. García, P. de Miguel, F. Pérez
signal(s)
signal(s)
signal(s)
desbloquea
desbloquea
1
-1
0
Ejecutando código de la sección crítica
Proceso bloqueado en el semáforo
32
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Semáforos
(a)
Tabla de procesos
BCP1 BCP7BCP2 BCP8BCP3 BCP9BCP4 BCP10BCP5 BCP11BCP6 BCP12
1 90 56 11 87 0
Cola asociada al semáforo
7
Bloq. Ejec.EstadoPID
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 32
(a)
(b)
Tabla de procesos
BCP1 BCP7BCP2 BCP8BCP3 BCP9BCP4 BCP10BCP5 BCP11BCP6 BCP12
1 90 56 11 87
Bloq.EstadoPID
Bloq. Bloq.
0
Cola asociada al semáforo
7 11© J. Carretero, F. García, P. de Miguel, F. Pérez
33
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Paso de Mensajes
• Para comunicación entre procesos de distintas máquinas
• Los procesos envían y reciben mensajes para comunicarse y sincronizarse.
• Una implementación que se utiliza mucho son los Sockets. Los más utilizados en aplicaciones distribuidas
• Se utilizan dos operaciones básicas :
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 33
• Se utilizan dos operaciones básicas :
send(destino, mensaje) receive(origen, mensaje)
• Tipos de comunicación:
• Síncrona total (envío y recepción bloqueante): el emisor se duerme hasta que el receptor recibe el mensaje. El receptor se duerme si el mensaje no ha llegado.
•Síncrona intermedia (envío no bloqueante y recepción bloqueante): el emisor no se duerme pero el receptor se bloquea hasta que recibe el mensaje.
• Asíncrona (envío y recepción no bloqueante): Nadie espera.
34
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Paso de Mensajes
Modos de comunicación
1. Comunicación directa
Se envía el mensaje al proceso
2. Comunicación indirecta
Se envía el mensaje a una estructura de la que el proceso recoge la información
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 34
Se envía el mensaje a una estructura de la que el proceso recoge la información
• Colas de mensajes o buzones
• Puertos
Colas de mensajes. El destino y el origen identifican una entidad intermedia: un buzón. Puede haber múltiples emisores y múltiples receptores.
Puertos. Caso específico de un buzón, donde sólo hay un receptor, pudiendo haber múltiples emisores. El puerto suele pertenecer al proceso receptor:
35
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Paso de Mensajes
Proceso cliente Proceso clientesend
receiveProceso cliente Proceso cliente
Puertosend
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 35
Comunicación con puertosComunicación con colas de mensajes
mensaje
Cola de mensajes
mensaje
© J. Carretero, F. García, P. de Miguel, F. Pérez
36
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Memoria Compartida
Datos
Texto
Proceso A Proceso B
Texto
Datos
var1
var2
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 36
© J. Carretero, F. García, P. de Miguel, F. Pérez
PilaPilaSegmento
de memoriacompartida
2
37
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Memoria Compartida
• La memoria compartida se utiliza para comunicar (no para sincronizar) procesos dentro de la misma máquina.
• El sistema operativo permite a varios procesos acceder a la misma zona de memoria a través de llamadas al sistema específicas de creación de memoria compartida.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 37
• Los procesos que comparten memoria pueden utilizar esa zona para dejar datos que deben ser accesibles por todos ellos.
• En un sistema basado en hilos todos los hilos del mismo proceso comparten la memoria sin necesidad de intervención del S.O.
38
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Mutex y Variables condicionales
Mutex
• Mecanismo de sincronización para hilos.
• Se emplea para obtener acceso exclusivo a una sección crítica
• Operaciones básicas atómicas:
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 38
• Lock (m)
sección crítica
• Unlock (m)
•Equivalente a los semáforos pero de uso sobre los hilos
39
9.- Mecanismos de comunicación y sincronización entre procesos3.- Tipos de mecanismos: Variables condicionales
Variables condicionales
Variable asociada a un mutex que bloquea un hilo hasta que se produzca una condición.
Operaciones
1. c_wait. Bloquea al hilo que ejecuta la llamada y lo expulsa del
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 39
1. c_wait. Bloquea al hilo que ejecuta la llamada y lo expulsa del mutex dentro del cual se ejecuta, al que está asociado la variable condicional
2. c_signal. Desbloquea uno o varios hilos
Útil si un proceso dentro de una sección crítica debe bloquearse por otra causa. Con c_wait se bloquea y libera la sección crítica
40
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Productor-Consumidor
Productor
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 40Consumidor
41
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Productor-Consumidor
#define TAMAÑO_BUFFER 1024
Productor() /* codigo del productor */
{
int posicion = 0; /* posicion dentro del buffer */
for(;;) {
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 41
for(;;) {
producir dato
wait(huecos);
buffer[posicion] = dato;
posicion = (posicion + 1) % TAMAÑO_BUFFER;
signal(elementos); }
}
42
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Productor-Consumidor
Consumidor() /* codigo del Consumidor */
{
int posicion = 0;
for(;;) {
wait(elementos);
dato = buffer[posicion];
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 42
dato = buffer[posicion];
posicion = (posicion + 1) % TAMAÑO_BUFFER;
signal(huecos);
/* cosumir dato */
}
}
43
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema de los lectores-escritores
EscritorLector Lector Escritor Lector
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 43
Recurso
Puede haber varios
lectores
No puede haber
varios escritores
44
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema de los lectores-escritores
int dato = 5; /* recurso */int n_lectores = 0; /* numero de lectores */sem_t sem_lec; /* controlar el acceso n_lectores */sem_t mutex; /* controlar el acceso a dato */
void main(void){
pthread_t th1, th2, th3, th4;
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 44
pthread_t th1, th2, th3, th4;
sem_init(&mutex, 0, 1);sem_init(&sem_lec, 0, 1);
pthread_create(&th1, NULL, Lector, NULL);pthread_create(&th2, NULL, Escritor, NULL);pthread_create(&th3, NULL, Lector, NULL);pthread_create(&th4, NULL, Escritor, NULL);
45
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema de los lectores-escritores
pthread_join(th1, NULL);
pthread_join(th2, NULL);
pthread_join(th3, NULL);
pthread_join(th4, NULL);
/* cerrar todos los semaforos */
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 45
/* cerrar todos los semaforos */
sem_destroy(&mutex);
sem_destroy(&sem_lec);
exit(0);
}
46
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Cliente-Servidor
/* codigo del lector */void Lector(void) { /* codigo del lector */
sem_wait(&sem_lec); /* solo un lector puede entrar a la vez*/n_lectores = n_lectores + 1;if (n_lectores == 1)
sem_wait(&mutex);sem_post(&sem_lec); /sem_post es lo mismo que signal */
printf(``%d\n'', dato); /* leer dato */
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 46
printf(``%d\n'', dato); /* leer dato */
sem_wait(&sem_lec);n_lectores = n_lectores - 1;if (n_lectores == 0)
sem_post(&mutex);sem_post(&sem_lec);pthread_exit(0);
}
47
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Cliente-Servidor
/* código del escritor */
void Escritor(void) { /* codigo del escritor */
sem_wait(&mutex);
dato = dato + 2; /* modificar el recurso
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 47
dato = dato + 2; /* modificar el recurso */
sem_post(&mutex);
pthread_exit(0);
}
48
9.- Mecanismos de comunicación y sincronización entre procesos4.- Problemas clásicos. Problema del Cliente-Servidor
Ejercicio• Crea el seudocódigo de un proceso P1 que ejecute R1=(a+b)• Crea el seudocódigo de un proceso P2 que ejecute R2=(a-b) y luego
R1*R2.• ¿Qué mecanismos de comunicación y de sincronización podrías usar
si son procesos? ¿Y si son hilos? . Crea distintas versiones con diferentes mecanismos de sincronización. Indica cuales serían los
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 48
diferentes mecanismos de sincronización. Indica cuales serían los valores iniciales de estos mecanismos.
Ejercicio• Divide el código de P2 del ejercicio anterior en dos procesos
diferentes, uno que ejecute R2 y otro que haga R1*R2. Plantea diferentes mecanismos de sincronización para dar solución al problema (semáforos, pipes, y mensajes)
49
9.- Mecanismos de comunicación y sincronización entre procesos5.- Servicios Posix para Comunicación y Sincronización. Tuberías
• Crear una tubería sin nombre– int pipe(int fildes[2]);
• Crear una tuberías con nombre– int mkfifo(char *name, mode_t mode);
• Abrir una tubería con nombre– int open(char *fifo, int flag);
• Cerrar una tubería
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 49
• Cerrar una tubería– int close(int fd);
• Borrar una tubería con nombre– int unlink(char *fifo);
• Leer de una tubería– int read(fildes[0], buffer, n);
• Escribir en una tubería– int write(fildes[1], buffer, n);
50
9.- Mecanismos de comunicación y sincronización entre procesos5.- Servicios Posix para Comunicación y Sincronización. Semáforos
• int sem_init(sem_t *sem, int shared, int val);
– Inicializa un semáforo sin nombre• int sem_destroy(sem_t *sem);
– Destruye un semáforo sin nombre• sem_t *sem_open(char *name, int flag, mode_t mode,
int val);
– Abre (crea) un semáforo con nombre.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 50
– Abre (crea) un semáforo con nombre.• int sem_close(sem_t *sem);
– Cierra un semáforo con nombre.• int sem_unlink(char *name);
– Borra un semáforo con nombre.• int sem_wait(sem_t *sem);
– Realiza la operación wait sobre un semáforo. • int sem_post(sem_t *sem);
– Realiza la operación signal sobre un semáforo.
51
9.- Mecanismos de comunicación y sincronización entre procesos5.- Servicios Win32 para Comunicación y Sincronización. Tuberías
• Crear una tubería sin nombre– BOOL CreatePipe(PHANDLE phRead, PHANDLE phWrite, LPSECURITY_ATTRIBUTES lpsa, DWORD cbPipe);
• Crear una tubería con nombre– HANDLE CreateNamedPipe (LPCTSTR lpszPipeName, DWORD fdwOpenMode, DWORD fdwPipeMode, DWORD nMaxInstances, DWORD cbOutBuf, DWORD cbInBuf, DWORD dwTimeOut,
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 51
DWORD cbOutBuf, DWORD cbInBuf, DWORD dwTimeOut, LPSECURITY_ATTRIBUTES lpsa);
• Abrir una tubería con nombre– HANDLE CreateFile(LPCSTR lpFileName, DWORD dwDesiredAccess,DWORD dwShareMode, LPVOID lpSecurityAttributes, DWORD CreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
52
9.- Mecanismos de comunicación y sincronización entre procesos5.- Servicios Win32 para Comunicación y Sincronización. Tuberías
• Cerrar una tubería con nombre– BOOL CloseHandle (HANDLE hfile);
• Leer de una tubería– BOOL ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nBytes, LPDWORD lpnBytes, LPOVERLAPPED lpOverlapped);
• Escribir en una tubería– BOOL WriteFile (HANDLE hFile, LPVOID lpBuffer, DWORD
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 52
– BOOL WriteFile (HANDLE hFile, LPVOID lpBuffer, DWORD nBytes, LPDWORD lpnBytes, LPOVERLAPPED lpOverlapped);
53
9.- Mecanismos de comunicación y sincronización entre procesos5.- Servicios Win32 para Comunicación y Sincronización. Semáforos
• Crear un semáforo– HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpsa,
LONG cSemInitial, LONG cSemMax, LPCTSTR lpszSemName);
• Abrir un semáforo– HANDLE OpenSemaphore(LONG dwDesiredAccess, LONG BinheritHandle, lpszName SemName);
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 53
BinheritHandle, lpszName SemName);• Operación wait
– DWORD WaitForSingleObject(HANDLE hSem, DWORD dwTimeOut);
• Operación signal
– BOOL ReleaseSemaphore(HANDLE hSemaphore,LONG cReleaseCount, LPLONG lpPreviousCount);
54
Contenido
Parte I: Comunicación y sincronización de procesos (Tema 6)
1. Introducción a la programación Concurrente (6.1)
2. Modelos de Comunicación y Sincronización (6.2)
3. Mecanismos de sincronización y comunicación (6.3, 6.4 )
4. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Parte II: Interbloqueo
1. Introducción (7.1 y 7.2)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 54
1. Introducción (7.1 y 7.2)
2. Modelo del sistema. (7.3)
3. Condiciones para el interbloqueo. (7.4)
4. Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
5. Tratamiento del interbloqueo: Predicción (7.8)
6. Tratamiento del interbloqueo: Detección y recuperación. (7.6)
7. Aplicación a los Sistemas Operativos (7.9)
55
IntroducciónDefinición de Interbloqueo
Interbloqueo
• Es una anomalía que se produce cuando un proceso se encuentra esperando a un suceso que no puede ocurrir.
• La causa fundamental es el uso exclusivo de recursos compartidos por varios procesos. En el interbloqueo suele haber
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 55
compartidos por varios procesos. En el interbloqueo suele haber implicados conjuntos de procesos.
• No hay que confundirlo con inanición o aplazamiento indefinido. Este problema se da por una mala política de asignación de recursos.
56
IntroducciónEjemplos de Interbloqueo
De un solo proceso
1. El proceso espera por un evento que no va a ocurrir. Por ejemplo, dormir hasta que sean las 12.00 del 1 de enero de 2000.
De un dos procesos
Proceso 1 Proceso 2
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 56
Proceso 1
Solicitar Cinta
Solicitar Impresora
USAR
Liberar Impresora
Liberar Cinta
Proceso 2
Solicitar Impresora
Solicitar Cinta
USAR
Liberar Cinta
Liberar Impresora
57
IntroducciónEjemplos de Interbloqueo
De un dos procesos. Sea un sistema con 200 KB de memoria
Proceso 1
Solicitar 80 KB
…
Solicitar 60 KB
Proceso 2
Solicitar 70 KB
…
Solicitar 80 KB
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 57
Solicitar 60 KB
…
Liberar 140 KB
Solicitar 80 KB
…
Liberar 150 KB
• Los procesos pueden quedar bloqueados si se atiende la primera petición de cada proceso.
58
IntroducciónTipos de recursos
• Los interbloqueos se producen al compartir recursos por parte de los procesos. Los recursos pueden ser tanto físicos (Hardware) como lógicos. Los recursos podemos clasificarlos en:
– Reutilizables o consumibles: los recursos reutilizables siguen existiendo después de haber sido utilizados. Los consumibles desaparecen después de que un proceso los utilice.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 58
desaparecen después de que un proceso los utilice.
– Compartibles o de uso exclusivo: los primeros pueden ser utilizados a la vez por varios procesos, mientras que los segundos no.
– Con un único ejemplar o con varios: De un recurso puede haber una sola copia o varias.
– Apropiables (o expropiables) o no apropiables. Los primeros no se les puede quitar al proceso que los tiene asignados.
59
IntroducciónTipos de recursos
Van a ser problemáticos los recursos reutilizables de uso exclusivo no
apropiables.
Los recursos compartibles no presentan problemas de interbloqueo.
Los recursos apropiables no presentan problemas de interbloqueo.
Los recursos consumibles pueden dar problemas de interbloqueo, pero
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 59
Los recursos consumibles pueden dar problemas de interbloqueo, pero son específicos y no los vamos a estudiar.
60
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 60
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
61
2.- Modelo del SistemaIntroducción
• Un modelo de un sistema informático es una representación del mismo, donde sólo aparece aquello que es necesario para estudiar el problema de que se trate.
• En este caso, nos interesa un modelo que se centre en aquellos aspectos que influyen en el interbloqueo, para poder así estudiarlo en detalle.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 61
• El resto de elementos del sistema no serán representados, al carecer de interés.
62
2.- Modelo del SistemaIntroducción
Los elementos que contendrá nuestro modelo del sistema será:
• Un conjunto de procesos.
• Un conjunto de recursos reutilizables de uso exclusivo no apropiables.
• Un conjunto de relaciones (proceso, recurso) que indique qué recursos tiene asignado cada proceso.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 62
• Un conjunto de relaciones (proceso, recurso) que indique qué solicitudes sobre recursos tiene cada proceso pendientes de ser satisfechas por el sistema.
El número de recursos asignados de cada recurso debe de ser menor o igual que el número de unidades existente de ese tipo.
La suma de las unidades asignadas y las solicitadas para un recurso concreto por parte de cada proceso debe ser menor o igual que el número de unidades existentes de ese tipo.
63
2.- Modelo del SistemaIntroducción
Finalmente, se va disponer de dos primitivas abstractas que podrán utilizar todos los procesos cuando requieran más recursos o cuando quieran liberarlos:
• Solicitud: S(R1[U1], R2[U2], …, Rn[Un])
•Liberación: L(R1[U1], R2[U2], …, Rn[Un])
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 63
•Liberación: L(R1[U1], R2[U2], …, Rn[Un])
Las dos primitivas se suponen bloqueantes y del tipo todo-nada (el proceso se duerme hasta que se puedan atender todas sus solicitudes y hasta que eso no ocurra no se le asigna ninguno de los recursos solicitados).
64
2.- Modelo del SistemaGrafo de asignación de recursos
• Se utiliza un grafo con dos tipos de nodos:
– Uno que representa a los procesos (P). Se usarán círculos para su representación gráfica.
– Uno que representa a los recursos (R). Se usarán cuadrados para su representación gráfica. Cada recurso tendrá asociado un valor que representa el número de unidades de ese recurso que hay (se dibujará con tantos círculos dentro
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 64
número de unidades de ese recurso que hay (se dibujará con tantos círculos dentro del cuadrado como unidades haya).
• El grafo tendrá también dos tipos de aristas:
– (Ri, Pj), indica que el proceso j tiene asignado una unidad del recurso i.
– (Pi, Rj), indica que el proceso i está esperando la asignación de una unidad del recurso j.
65
2.- Modelo del SistemaRepresentación matricial
• Se utiliza un conjunto de matrices para representar el grafo anteriormente descrito.
• Se utilizan, al menos, tres matrices (p=número de procesos; r=número de recursos):
• A: Matriz de asignación (p x r). A[i,j]=unidades del recurso j asignadas al proceso i
• S: Matriz de solicitud (p x r). S[i,j]=unidades del recurso j por las que está esperando el proceso i.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 65
esperando el proceso i.
• E: Recursos existentes (r). R[j]=unidades del recurso j que hay en el sistema
• Con este tipo de representación pueden formularse matemáticamente las restricciones antes vistas.
• Puede utilizarse esta representación para implementar los algoritmos que se verán posteriormente.
66
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 66
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
67
3 Condiciones para el interbloqueo
Existen 4 condiciones necesarias para que exista interbloqueo
1. Exclusión mutua
Los procesos exigen un control exclusivo de los recursos2. Retención y espera
Los procesos retienen recursos ya asignados mientras esperan por recursos adicionales
3. No apropiación
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 67
3. No apropiación
Los recursos no pueden arrebatarse a los procesos que ya los tienen asignados hasta que acaben de usarlos
4. Espera circular
Existe una cadena circular de procesos en la que cada proceso tiene uno o más recursos que necesita el siguiente proceso de la cadena
68
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 68
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
69
4. Tratamiento del interbloqueo
1. Prevención
Se elimina cualquier posibilidad de que ocurra2. Evitación (predicción)
El bloqueo se evita cuando está a punto de suceder3. Detección
Se permite el bloqueo y se detecta
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 69
Se permite el bloqueo y se detecta4. Recuperación
Se permite el bloqueo, se detecta y se recupera automáticamente
70
4. Tratamiento del interbloqueo: PrevenciónIntroducción
• Para asegurarse de que nunca existirá interbloqueo basta con asegurarse de que no se cumpla alguna de las condiciones para el interbloqueo
• Existen 3 estrategias para ello– Negación de la retención y espera– Negación de la no apropiación
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 70
– Negación de la no apropiación– Negación de la espera circular
71
4. Tratamiento del interbloqueo: Prevención Negación de la retención y espera
• Evitar la espera de recursos adicionales
• Para ello el proceso deberá pedir todos los recursos a la vez. O los tiene todos o no tiene ninguno.
• Inconvenientes– Infrautilización de recursos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 71
72
4. Tratamiento del interbloqueo: Prevención Negación de la no apropiación
• Se permite arrebatar recursos a los procesos
• Si un proceso que tiene recursos pide un recurso y no se le concede porque está siendo utilizado por otro, entonces debe liberar los recursos retenidos y pedirlos después junto a los nuevos
• Inconvenientes– Pérdida de trabajo realizado
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 72
– Pérdida de trabajo realizado– Posibilidad de aplazamiento indefinido
73
4. Tratamiento del interbloqueo: Prevención Negación de la espera circular
• Evitar que se produzcan esperas circulares
• Para ello– Se numeran los recursos– Se obliga a que los procesos pidan los recursos en orden lineal.
Por tanto si un proceso necesita 3 recursos deberá pedirlos por orden según la numeración de los mismos.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 73
orden según la numeración de los mismos. • Inconvenientes
– Se cogen recursos antes de que se necesiten. Infrautilización
74
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 74
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
75
5. Evitación del interbloqueo
• No se impide la posibilidad de que se den las 4 condiciones para el interbloqueo
• Se evita el interbloqueo con una asignación de recursos adecuada
• Uso del algoritmo del Banquero para la evitaciónAlgoritmo del banquero (eqivalencias)
– Banquero Sistema Operativo
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 75
– Banquero Sistema Operativo– Capital Recursos– Clientes Procesos– Préstamo Asignación de recursos– Devolución Liberación de recursos– Bancarrota Interbloqueo
76
5. Evitación del interbloqueo
• Los procesos que consiguen todos los recursos que necesitan podrán finalizar y por tanto devolver todos los recursos que pidieron
• Los procesos que se quedan bloqueados a la espera de recursos no devolverán nunca los recursos asignados.
• Modo de trabajo (algoritmo)– El banquero sólo presta dinero si está seguro de que va a poder
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 76
– El banquero sólo presta dinero si está seguro de que va a poder recuperar la totalidad de su capital.
– Cuando un proceso pide un recurso el sistema sólo se lo concede si su asignación conduce a un Estado Seguro
• Estado seguro– El sistema se encuentra en un estado seguro si se sabe que todos
los procesos pueden terminar en un tiempo finito (pueden satisfacer todas sus peticiones).
77
5. Evitación del interbloqueo
Algoritmo de comprobación de estado seguro
Repetir hasta que no haya procesos con petición pendiente• Buscar un proceso al que se le puedan asignar todos los recursos
pendientes• Añadir a los recursos libres los prestados a ese proceso y eliminar
procesoSi al final se consigue eliminar todos los procesos el estado es
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 77
Si al final se consigue eliminar todos los procesos el estado es seguro
Inconvenientes• Necesidad de conocer a priori las necesidades de cada proceso
• Sobrecarga
78
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 78
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
79
6. Detección y recuperación del interbloqueo
• Se comprueba periódicamente la existencia de interbloqueo en el sistema, obteniendo los procesos y recursos implicados
• Para ello se determina si existe espera circular mediante el uso de las gráficas de asignación de recursos
• El mecanismo consiste en intentar reducir las gráficas eliminando las flechas existentes entre procesos y recursos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 79
flechas existentes entre procesos y recursos• Si una gráfica se puede reducir para todos los procesos
El sistema no presenta interbloqueo• El orden de reducción es indiferente
• Una vez detectado, se avisa al administrador para que tome medidas
80
6. Detección y recuperación del interbloqueo
Una vez detectado el interbloqueo, se intenta recuperar el sistema automáticamente
Para ello es preciso eliminar una de las cuatro condiciones del interbloqueo.
Posibilidades– Matar procesos
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 80
– Matar procesos– Suspender procesos
ProblemasDecidir qué proceso matar o suspender (prioridad, arbitrario, etc)Pérdida de trabajo realizadoNecesidad de puntos de verificación/reinicio (en suspensión)
81
Tabla de contenidos
Parte II: Interbloqueo
• Introducción (7.1 y 7.2)
• Modelo del sistema. (7.3)
• Condiciones para el interbloqueo. (7.4)
• Tratamiento del interbloqueo: Prevención (7.5 y 7.7)
• Tratamiento del interbloqueo: Predicción (7.8)
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 81
• Tratamiento del interbloqueo: Detección y recuperación. (7.6)
• Aplicación a los Sistemas Operativos (7.9)
82
7. Aplicación a los Sistemas Operativos
• A la hora de considerar el alcance del problema del interbloqueo en los Sistemas Operativos, hay que considerar dos tipos de recursos:– Los internos del Sistema, que serán utilizados desde el código del
propio Sistema Operativo.– Los recursos que usan las aplicaciones del usuario, desde el
código de éstas.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 82
código de éstas.• En el primer caso es muy problemático, dado que puede afectar a la
estabilidad de todo el sistema. Puede ser complicado incluso la recuperación del mismo.
• El segundo sólo es problemático para las aplicaciones que usen esos recursos. Es más “fácil” de solventar
83
7. Aplicación a los Sistemas Operativos
• La mayor parte de los sistemas operativos actuales no tratan el problema del interbloqueo en general, por el coste que supone y la baja probabilidad de que se produzca.
• Sólo suelen tratar de prevenir el interbloqueo para recursos internos del sistema mediante una programación adecuada.
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 83
84
Ejemplos
Sea un sistema con 5 procesos y 3 tipos de recursos. La situación actual del sistema es la que se muestra a continuación. Está en un estado seguro?
A B C
p1 0 1 0
A B C
p1 7 5 3
Asignación Máximo Disponibles
A B C
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 84
p1 0 1 0
p2 2 0 0
p3 3 0 2
p4 2 1 1
p5 0 0 2
p1 7 5 3
p2 3 2 2
p3 9 0 2
p4 2 2 2
p5 4 3 3
3 3 2
85
Ejemplos
1.- Calculamos las necesidades pendientes, (Máximo – Asignación)
A B C
p1 0 1 0
p2 2 0 0
A B C
p1 7 5 3
p2 3 2 2
Asignación Máximo Pendientes Disponibles
A B C
3 3 2
A B C
p1 7 4 3
p2 1 2 2
Asignatura: Sistemas OperativosTema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 85
p2 2 0 0
p3 3 0 2
p4 2 1 1
p5 0 0 2
p2 3 2 2
p3 9 0 2
p4 2 2 2
p5 4 3 3
p2 1 2 2
p3 6 0 0
p4 0 1 1
p5 4 3 1
2.- Buscamos una secuencia segura: <p4, p2, p5, p1, p3>