Sistemas Operativos Tema 3 Comunicación, Sincronización e Interbloqueo Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 1
¿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 erram en as que se u zan para reso ver esos pro emas. Analizar el problema que supone la aparición de interbloqueos en un sistema informático, así como las técnicas apropiadas para tratarlo.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 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 erram en as que se u zan para reso ver esos pro emas. Analizar el problema que supone la aparición de interbloqueos en un sistema informático, así como las técnicas apropiadas para tratarlo.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 2
¿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
•
Conocer qué “problemas tipo” podemos encontrarnos e ncontrarnos 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.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 3
¿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
•
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. 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. e llas.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 4
Contenido Parte I: Comunicación y sincronización de procesos (Tema 6)
1. 2. 3. 4.
Introducción a la programación Concurrente (6.1) Modelos de Comunicación y Sincronización (6.2) Mecanismos de sincronización y comunicación (6.3, 6.4 ) Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Parte II: Interbloqueo
2. 3. 4. 5. 6. 7.
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) Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 5
Parte I: Comunicación y sincronización entre procesos 1.- 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 – • 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 6
Parte I: Comunicación y sincronización entre procesos 1.- 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últi les usuarios ue hacen consultas. e . a base de datos • Se genera un proceso para cada uno
– Se aprovechan mejor los recursos de la máquina. • Ej. CPU
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 7
Parte I: Comunicación y sincronización entre procesos 1.- Introducción a la programación Concurrente
Tipos de Procesos Concurrentes Independientes
• Se ejecutan sin requerir la ayuda o cooperación de otros procesos • En general la mayor parte de los procesos se ejecutan n epen entemente e n ng n otro. Cooperantes
• Diseñados para trabajar conjuntamente en alguna actividad. • Deben ser capaces de comunicarse e interactuar entre ellos
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 8
Parte I: Comunicación y sincronización entre procesos 1.- 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 a disco • Ej. Dos procesos desean modificar el contenido de un registro de la – 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). Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 9
Parte I: Comunicación y sincronización entre procesos 1.- Introducción a la programación Concurrente
Problemas que presenta la concurrencia
– Condiciones de carrera: El resultado final de la ejecución de varios procesos concurrentes depende de la secuencia de ejecución. – Interbloqueo: bloqueo permanente de varios procesos que compiten por
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 10
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) 5. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 11
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)); 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 12
Parte I: Comunicación y sincronización entre procesos 2.- 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)
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.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 13
Parte II: Comunicación y sincronización entre procesos 2.- 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 Estructura general del mecanismo Entrada a la sección crítica
Código de la sección crítica Salida de la sección crítica
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 14
Parte II: Comunicación y sincronización entre procesos 2.- 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); read(fd, &saldo, sizeof(int)); saldo = saldo + cantidad; lseek(fd, 0, SEEK_SET); write(fd, &saldo, sizeof(int)); close(fd); return; © J. Carretero, F. García, P. de Miguel, F. Pérez } Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 15
9.- Mecanismos de comunicación y sincronización entre procesos 2.- Problemas clásicos. Problema del Productor-Consumidor
Proceso Consumidor
Proceso Productor Flujo de datos
Mecanismo de comunicación Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 16
9.- Mecanismos de comunicación y sincronización entre procesos 2.- 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
• 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 17
9.- Mecanismos de comunicación y sincronización entre procesos 2.- Problemas clásicos. Problema de los lectores-escritores
Lector
Lector
Escritor
Lector
Escritor
Recurso Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 18
9.- Mecanismos de comunicación y sincronización entre procesos 2.- Problemas clásicos. Problema de los lectores-escritores
• 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 – o se perm e que un escr or enga acceso a recurso a m smo 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 19
9.- Mecanismos de comunicación y sincronización entre procesos 2.- Problemas clásicos. Problema del Cliente-Servidor
Computador
Computador Petición
Proceso cliente
Proceso servidor
S.O. Respuesta
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 20
9.- Mecanismos de comunicación y sincronización entre procesos 2.- 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) •
e e o recer serv c os que perm an comun cac n en re es os 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
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 21
9.- Mecanismos de comunicación y sincronización entre procesos 2.- 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.
– que todo filósofo pueda comer en un tiempo finito cuando tenga –
hambre. que no se producen interbloqueos.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 22
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 )
4. Aspectos de diseño (6.5) 5. Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 23
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de Mecanismos
Mecanismos de comunicación
Mecanismos de Sincronización
• Archivos
• Tuberías
• Tuberías
• Señales
• Memoria compartida
• Semáforos, mutex
• Paso de Mensajes
• Paso de Mensajes
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 24
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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. . • Es poco eficiente, al ser operaciones lentas. • Se necesita un mecanismo de sincronización para ordenar el acceso al fichero.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 25
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Tuberías
write
Proceso de Usuario
Proceso de Usuario
read
SO pipe Flujo de datos Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
© J. Carretero, F. García, P. de Miguel, F. Pérez
Página 26
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 27
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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 ). • 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 28
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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. wait (s)
signal (s)
{ s=s-1;
{ s=s+1;
if (s<0) dormir(); }
if (s<=0) Despertar a un proceso dormido sobre s; }
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 29
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Semáforos
Solución a la sección crítica
wait (s); SECCION CRÍTICA signal(s);
• 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). Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 30
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Semáforos
Valor del semáforo (s)
P0
P1
P2
1 0 -1
wait(s)
wait(s) wait(s)
-2
desbloquea
-1
signal(s)
desbloquea
0
signal(s) Ejecutando código de la sección crítica Proceso bloqueado en el semáforo
1
signal(s)
© J. Carretero, F. García, P. de Miguel, F. Pérez Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 31
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Semáforos Tabla de procesos BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Estado PID
Bloq. 7
0
Cola asociada al semáforo
6
1
Ejec. 11
5
0
8
9
7
a
Tabla de procesos BCP1 BCP2 BCP3 BCP4 BCP5 BCP6 BCP7 BCP8 BCP9 BCP10 BCP11 BCP12 Estado PID
Cola asociada al semáforo
0
Bloq. 7
7
6
1
Bloq. 11
Bloq. 5
0
8
9
11 © J. Carretero, F. García, P. de Miguel, F. Pérez
(b)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 32
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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 : 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ónMiguel no bloqueante): Nadie espera Asignatura: Sistemas Operativos R. Albizu / Marián D. Fondón Tema 3: Com., Sincr. e Interbloqueo EUITIO curso 2009-2010
Página 33
9.- Mecanismos de comunicación y sincronización entre procesos 3.- 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
•
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. 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:
Puertos.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 34
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Paso de Mensajes
Proceso cliente
Proceso cliente
send
Proceso cliente
Proceso cliente
receive send
Puerto
mensaje
mensaje Cola de mensajes
Comunicación con colas de mensajes
Comunicación con puertos © J. Carretero, F. García, P. de Miguel, F. Pérez
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 35
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: Memoria Compartida
Proceso A
Proceso B
Texto
Texto Datos var2
Datos var1
2
Pila
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Segmento de memoria compartida
Pila
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
© J. Carretero, F. García, P. de Miguel, F. Pérez
Página 36
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: mecanismos: Memoria Memoria Compartida
• La memoria memoria compartida compartida se utiliza utiliza para comunicar comunicar (no para sincronizar) sincronizar) procesos dentro de la misma máquina. • El sistema sistema operativo operativo permite permite a varios procesos procesos acceder acceder a la misma zona de memoria a través de llamadas al sistema específicas de creación de memoria compartida. • Los procesos procesos que comparten comparten memoria memoria pueden utilizar utilizar esa zona zona para dejar datos que deben ser accesibles por todos ellos. • En un sist sistem emaa bas basad adoo en en hilos todos los hilos del mismo proceso comparten la memoria sin necesidad de intervención del S.O.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 37
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: mecanismos: Mutex y Variables condicionales condicionales
Mutex
• Mecanism Mecanismoo de sincroniza sincronización ción para para hilos. hilos. • Se emplea emplea para obtener acceso acceso exclusivo exclusivo a una sección sección crítica crítica • Operaciones Operaciones básicas básicas atómicas: atómicas: • Lock (m) sección crítica • Unlock (m) •Equivalente a los semáforos pero de uso sobre los hilos Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 38
9.- Mecanismos de comunicación y sincronización entre procesos 3.- Tipos de mecanismos: mecanismos: Variables Variables condicionales
Variables condicionales condicional es
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
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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 39
9.- Mecanismos de comunicación y sincronización entre procesos 4.- Problemas clásicos. Problema del Productor-Consumidor
Productor
Consumidor Asignatura: Sistemas Operativos Tema 3: Com., Sincr. Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 40
9.- Mecanismos de comunicación y sincronización entre procesos 4.- Problemas clásicos. Problema del Productor-Consumidor
#define TAMAÑO_BUFFER 1024 Productor() /* codigo del productor */ { int posicion = 0; /* posicion dentro del buffer */ for(;;) { producir dato wait(huecos); buffer[posicion] = dato; posicion = (posicion + 1) % TAMAÑO_BUFFER; signal(elementos); } } Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 41
9.- Mecanismos de comunicación y sincronización entre procesos 4.- Problemas clásicos. Problema del Productor-Consumidor
Consumidor() /* codigo del Consumidor */ { int posicion = 0; for(;;) { wait(elementos); dato = buffer[posicion]; posicion = (posicion + 1) % TAMAÑO_BUFFER; signal(huecos); /* cosumir dato */ } } Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 42
9.- Mecanismos de comunicación y sincronización entre procesos 4.- Problemas clásicos. Problema de los lectores-escritores
Lector
Lector
Escritor
Lector
Escritor
Puede haber varios lectores No puede haber varios escritores Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Recurso Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 43
9.- Mecanismos de comunicación y sincronización entre procesos 4.- 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) { _ ,
,
,
sem_init(&mutex, 0, 1); sem_init(&sem_lec, 0, 1); pthread_create(&th1, pthread_create(&th2, pthread_create(&th3, pthread_create(&th4, Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
NULL, NULL, NULL, NULL,
Lector, NULL); Escritor, NULL); Lector, NULL); Escritor, NULL);
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 44
9.- Mecanismos de comunicación y sincronización entre procesos 4.- 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 */ sem_destroy(&mutex); sem_destroy(&sem_lec); exit(0); } Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 45
9.- Mecanismos de comunicación y sincronización entre procesos 4.- 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 */ ``
,
sem_wait(&sem_lec); n_lectores = n_lectores - 1; if (n_lectores == 0) sem_post(&mutex); sem_post(&sem_lec); pthread_exit(0); }
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 46
9.- Mecanismos de comunicación y sincronización entre procesos 4.- Problemas clásicos. Problema del Cliente-Servidor
/* código del escritor */ void Escritor(void) { */ sem_wait(&mutex); ato = ato + ; */ sem_post(&mutex);
/* codigo del escritor
mo
car e
recurso
pthread_exit(0); } Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 47
9.- Mecanismos de comunicación y sincronización entre procesos 4.- 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 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) Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 48
9.- Mecanismos de comunicación y sincronización entre procesos 5.- 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
– 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); Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 49
9.- Mecanismos de comunicación y sincronización entre procesos 5.- 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. • 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 50
9.- Mecanismos de comunicación y sincronización entre procesos 5.- 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 LPSECURITY_ATTRIBUTES lpsa);
• Abrir una tubería con nombre CreateFile(LPCSTR lpFileName, DWORD – HANDLE dwDesiredAccess,DWORD dwShareMode, LPVOID lpSecurityAttributes, DWORD CreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 51
9.- Mecanismos de comunicación y sincronización entre procesos 5.- 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 –
r
e
e
e,
p u
er,
nBytes, LPDWORD lpnBytes, LPOVERLAPPED lpOverlapped);
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 52
9.- Mecanismos de comunicación y sincronización entre procesos 5.- 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 l szName SemName Operación wait – DWORD WaitForSingleObject(HANDLE hSem, DWORD dwTimeOut); Operación signal ReleaseSemaphore (HANDLE – BOOL hSemaphore, LONG cReleaseCount, LPLONG lpPreviousCount);
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 53
Contenido Parte I: Comunicación y sincronización de procesos (Tema 6)
1. 2. 3. 4.
Introducción a la programación Concurrente (6.1) Modelos de Comunicación y Sincronización (6.2) Mecanismos de sincronización y comunicación (6.3, 6.4 ) Comu. y sincr. de procesos en POSIX y Windows (6.6 y 6.7)
Parte II: Interbloqueo
2. 3. 4. 5. 6. 7.
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) Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 54
Introducción Definició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 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.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 55
Introducción Ejemplos 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
Solicitar Cinta
Solicitar Impresora
Solicitar Impresora
Solicitar Cinta
USAR
USAR
Liberar Impresora
Liberar Cinta
Liberar Cinta
Liberar Impresora
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 56
Introducción Ejemplos de Interbloqueo De un dos procesos.
Sea un sistema con 200 KB de memoria
Proceso 1
Proceso 2
Solicitar 80 KB
Solicitar 70 KB
…
…
Solicitar 60 KB
Solicitar 80 KB
…
…
Liberar 140 KB
Liberar 150 KB
• Los procesos pueden quedar bloqueados si se atiende la primera petición de cada proceso. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 57
Introducción Tipos 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 desa arecen des ués de ue un roceso 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 58
Introducción Tipos 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 ueden dar roblemas de interblo ueo ero son específicos y no los vamos a estudiar.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 59
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 60
2.- Modelo del Sistema Introducció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. • El resto de elementos del sistema no serán representados, al carecer de interés.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 61
2.- Modelo del Sistema Introducció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. • 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 62
2.- Modelo del Sistema Introducció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 R U
R U
… 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). Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 63
2.- Modelo del Sistema Grafo 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 ue ha (se dibu ará con tantos círculos dentro del cuadrado como unidades haya). • El grafo tendrá también dos tipos de aristas: – (Ri, P j), indica que el proceso j tiene asignado una unidad del recurso i. – (Pi, R j), indica que el proceso i está esperando la asignación de una unidad del recurso j.
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 64
2.- Modelo del Sistema Representació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á esperan o e proceso . • 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. Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 65
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 66
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 recursos 2. Retención y espera
Los procesos retienen recursos ya asignados mientras esperan por recursos adicionales 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 67
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 68
4. Tratamiento del interbloqueo 1. Prevención
Se elimina cualquier posibilidad de que ocurra 2. Evitación (predicción)
El bloqueo se evita cuando está a punto de suceder 3. Detección
e perm e e
oqueo y se e ec a
4. Recuperación
Se permite el bloqueo, se detecta y se recupera automáticamente
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 69
4. Tratamiento del interbloqueo: Prevención Introducció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 espera circular
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 70
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 Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 71
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 – r a e ra a o rea za o – Posibilidad de aplazamiento indefinido
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 72
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 . • Inconvenientes – Se cogen recursos antes de que se necesiten. Infrautilización
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 73
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 74
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ón Algoritmo del banquero (eqivalencias)
– – – – – –
anquero Capital Clientes Préstamo Devolución Bancarrota
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
stema perat vo Recursos Procesos Asignación de recursos Liberación de recursos Interbloqueo Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 75
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) – anquero s o pres a nero s es seguro e que va a po er 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).
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 76
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 proceso
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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 77
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 78
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 • 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 79
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 – a ar procesos – Suspender procesos Problemas Decidir qué proceso matar o suspender (prioridad, arbitrario, etc) Pérdida de trabajo realizado Necesidad de puntos de verificación/reinicio (en suspensión) Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 80
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) ratam ento e nter oqueo: etecc n y recuperac n. . Aplicación a los Sistemas Operativos (7.9)
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 81
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 • 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 Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 82
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 Operativos Tema 3: Com., Sincr. e Interbloqueo
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 83
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? Asignación
p1 p2 p3 p4 p5
Máximo
A
B
C
0 2 3 2 0
1 0 0 1 0
0 0 2 1 2
p1 p2 p3 p4 p5
Asignatura: Sistemas Operativos Tema 3: Com., Sincr. e Interbloqueo
Disponibles
A
B
C
A
B
C
7 3 9 2 4
5 2 0 2 3
3 2 2 2 3
3
3
2
Miguel R. Albizu / Marián D. Fondón EUITIO curso 2009-2010
Página 84