1 Tema 7: Concurrencia y Sincronización Sistemas Operativos.

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS.
Advertisements

Mecanismo de semáforos
Daniel Morillo Jorge Boscán Gregory Carrasco
Sincronización de procesos
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Concurrencia: Exclusión Mútua y Sincronización
Capítulo 3 Concurrencia: exclusión mutua y sincronización. Comunicación entre procesos.
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
Semáforos Cecilia Hernández
Unidad III Administración de procesos
Sincronización de procesos Mariano Gómez Plaza.  Mariano Gómez Plaza Sincronización de procesos 2 Tipos de procesos IndependientesCooperantes.
IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1.
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Sincronización de Procesos
Sincronización de Procesos
Tema 9.6: Sincronización de Procesos
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de.
1 Tema 8: Sincronización y Comunicación Sistemas Operativos.
AYUDANTÍA 2 Lenguaje Imperativo y Java. Punteros Dirección a memoria (puede apuntar a NULL). Permite trabajar con memoria (variables dinámicas de heap).
En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los.
Resumen de Sistemas Operativos I Msc./Ing. Antonio Mena.
Copias de Seguridad. Copia de Seguridad Utilidad export: este es un programa que realiza una copia binaria de los datos que solo puede ser leído por su.
Cruce de ferrocarril en Statecharts Introducción a la concurrencia Requisitos temporales simples.
ALGORITMOS DE PLANIFICACIÓN ADRIÁN MINGA BRYAN PIEDRA JEREMY CHAMBA.
MUTEX. QUE ES CONCURRENCIA - MUTEX  Son el mecanismo que nos ayuda en la sincronización para proteger una sección crítica en nuestro código.  Estas.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Semáforos y Comunicación entre Procesos
Proceso: Una instancia de un programa en ejecución
¿Cómo elaborar una Matriz de Resultados (MdR)?
Árboles binarios. Algoritmos básicos
CC Bases de Datos Primavera Clase 12: Implementación de ACID
Facultad de Ingeniería Mecánica y Eléctrica
SISTEMAS OPERATIVOS Sección Crítica.
Procesos Concurrentes
“POLIMORFISMO PARAMETRICO”
Métodos y parámetros.
Paul Leger Procesos (capitulo 2) Paul Leger
Paul Leger Procesos (capitulo 2) Paul Leger
Exclusión mutua de secciones
Tema 8: Sincronización y Comunicación
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Monitores Mecanismo sincronización de nivel más alto que semáforos Construcción a nivel de lenguaje de programación que controla el acceso a datos compartidos.
Listas Dinámicas.
Exígete mucho a ti mismo y espera poco de los demás.
Tema 7: Concurrencia y Sincronización
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Ayudantía 3: Procesos y threads
Introducción a las estructuras de datos
PROCESOS COMENZAR.
Sincronización de procesos
DISPOSITIVOS DE E/S IU Colegio Mayor del Cauca Sistemas operativos Popayán, mayo de 2015.
Sistemas Operativos Semáforos II.
PILAS Y COLAS INTEGRANTES: JAVIER GONZALEZ JORGE LUIS SOLIS ISAC FERNANDEZ.
COORDINACIÓN Y SINCRONIZACIÓN DE PROCESOS: 1.1. Concurrencia 1.2. Semáforos 1.3. Sección Critica 1.4. Bloqueos.
Manuel Montes y Gómez Laboratorio de Tecnologías del Lenguaje
Fundamentos de programación
GRAFOS ESTRUCTURAS DE DATOS.
EL TDA COLA Estructuras de Datos.
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Concurrencia: exclusión mutua y sincronización Capítulo 5.
NATURALEZA DE LOS DATOS Valores Numéricos Son los valores que se pueden hacer cálculos aritméticosritméticos Tipos de valores Entero Real Cadena ( “ h”
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
SISTEMAS OPERATIVOS JOSE ANGEL MORENO B. Ingeniero de Sistemas TP # Copnia Universidad Incca de Colombia CORPORACI Ó N UNIVERSITARIA REMINGTON.
Procesos Lic. Gonzalo Pastor.
Estructura de Sistemas Operativos
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
Transcripción de la presentación:

1 Tema 7: Concurrencia y Sincronización Sistemas Operativos

2 Índice: 1.Suspensión y Reanudación 2.Semáforos 3.Propiedades y Características de los Semáforos 4.Problemas Clásicos de Concurrencia 2 Tema 7: Concurrencia y Sincronización

3 Índice: 1.Suspensión y Reanudación 2.Semáforos 3.Propiedades y Características de los Semáforos 4.Problemas Clásicos de Concurrencia 3 Tema 7: Concurrencia y Sincronización

4 1. Suspensión y Reanudación Tema 7: Concurrencia y Sincronización  Primitivas más simples: sleep ()  Bloquea al proceso que la invoca wakeup (int pid)  Reanuda a proceso cuyo PID se indica  ¿Y si dicho proceso no está sleeping? La llamada a wakeup() no tiene efecto Se recuerda la llamada para que el próximo sleep() que haga el proceso no tenga efecto. Se trata como un error.

5 1. Suspensión y Reanudación Tema 7: Concurrencia y Sincronización  Implementación: ¡trivial! sleep ()  Nuevo estado proceso llamante: bloqueado  Insertar en lista de procesos bloqueados  Activar bit “sleeping” en PCB para indicar causa de bloqueo wakeup (int pid)  Nuevo estado proceso despertado: preparado  Quitar de lista de procesos bloqueados e insertar en preparados  Desactivar bit “sleeping” en PCB

6 1. Suspensión y Reanudación Tema 7: Concurrencia y Sincronización  Aplicando estas primitivas a resolver problemas en la vida real: productor/consumidor. while(true) { producir_elemento(); if (contador==N) sleep(); almacenar_elemento(); contador++; if (contador==1) wakeup(consumidor); } productor tabla N-1 ins ext contador=0 while(true) { if (contador==0) sleep(); retirar_elemento(); contador--; if (contador==(N-1)) wakeup(productor); usar_elemento(); } consumidor contador=1contador=2contador=3contador=N

7 1. Suspensión y reanudación Tema 7: Concurrencia y Sincronización  Problemas:  Suspensión es incondicional ¡No hay atomicidad comprobación-acción!  Procesos deben conocerse entre sí  Un único estado de espera por proceso Procesos están “o despiertos o dormidos” Si proceso está dormido, no hay vinculación alguna con la causa por la que está en dicho estado

8 Índice: 1.Suspensión y Reanudación 2.Semáforos 3.Propiedades y Características de los Semáforos 4.Problemas Clásicos de Concurrencia 8 Tema 7: Concurrencia y Sincronización

9 2. Semáforos Tema 7: Concurrencia y Sincronización 1.Concepto de semáforo 2.Implementación de semáforos 3.Semáforos en la práctica 4.Semáforos binarios

10 2. Semáforos Tema 7: Concurrencia y Sincronización 1.Concepto de semáforo 2.Implementación de semáforos 3.Semáforos en la práctica 4.Semáforos binarios

Concepto de semáforo Tema 7: Concurrencia y Sincronización  E. W. Dijkstra (1.965)  Semaforo = tipo abstracto de datos, que encapsula:  Un contador entero  Una lista de procesos bloqueados en el semáforo  Operaciones sobre semáforos:  down(s): si contador = 0, proceso se bloquea en semáforo decrementa contador  up(s): Incrementa contador Si había algún proceso bloqueado en semáforo, reanuda uno  ¡Ambas operaciones son atómicas!

Concepto de semáforo Tema 7: Concurrencia y Sincronización  Utilidad: proteger acceso a recursos compartidos  A cada recurso compartido, se asocia semáforo con valor inicial 1.  Secciones críticas asociadas al recurso: Protocolo de entrada: down(s) Protocolo de salida: up(s)  Ventajas:  Robustez Comprobación/Acción son atómicas  Procesos que se coordinan no necesitan conocerse entre sí Sólo necesitan conocer semáforos que comparten  Flexibilidad Tanto semáforos como recursos compartidos

13 2. Semáforos Tema 7: Concurrencia y Sincronización 1.Concepto de semáforo 2.Implementación de semáforos 3.Semáforos en la práctica 4.Semáforos binarios

14 void down(semaforo s) { if (s->contador>0) s->contador--; else { insertar_en_lista (&s->bloqueados, getpid()); sleep(); } } 2.2 Implementación de semáforos Tema 7: Concurrencia y Sincronización struct s_semaforo { int contador; listaproc bloqueados; } typedef s_semaforo *semaforo; struct nodoproc { PID proceso; struct nodoproc *sig; } typedef struct nodoproc *listaproc void up(semaforo s) { if (lista_vacia(s->bloqueados)) s->contador++; else { int pid=sacar_de_lista(s->bloqueados); wakeup(pid); } } semaforo CrearSemaforo(int valor); void DestruirSemaforo(semaforo s);

15 2. Semáforos Tema 7: Concurrencia y Sincronización 1.Concepto de semáforo 2.Implementación de semáforos 3.Semáforos en la práctica 4.Semáforos binarios

Semáforos en la práctica Tema 7: Concurrencia y Sincronización Productor/Consumidor con semáforos while(true) { producir_elemento(); down(vacias); down(excmut); almacenar_elemento(); up(excmut); up(llenas); } productor tabla N-1 ins ext contador=0 while(true) { down(llenas); down(excmut); retirar_elemento(); up(excmut); up(vacias); consumir_elemento(); } consumidor excmut=1 vacias=N llenas=0 down(excmut); down(vacias);

17 2. Semáforos Tema 7: Concurrencia y Sincronización 1.Concepto de semáforo 2.Implementación de semáforos 3.Semáforos en la práctica 4.Semáforos binarios

Semáforos binarios Tema 7: Concurrencia y Sincronización  Caso particular: semáforos con sólo dos estados:  Abierto (true, 1, …)  Cerrado (false, 0, …)  Operaciones sobre semáforos binarios:  down(s): si estado=cerrado, proceso se bloquea en semáforo estado=cerrado  up(s): estado=abierto Si había algún proceso bloqueado en semáforo, reanuda uno  ¿Son más potentes semáforos contadores que semáforos binarios?

19 void up(semaforo s) { down_b(s->exc); ++(s->contador); if (s->contador esp); up_b(s->exc); } void down(semaforo s) { down_b(s->blqd); down_b(s->exc); --(s->contador); if (s->contador >=0) up_b(s->exc); else { up_b(s->exc); down_b(s->esp); } up_b(s->blqd); } 2.4 Semáforos binarios Tema 7: Concurrencia y Sincronización struct s_semaforo { int contador; semaforo_b blqd; /* =abierto */ semaforo_b exc; /* =abierto */ semaforo_b esp; /* =cerrado*/ } typedef s_semaforo *semaforo;

20 Índice: 1.Suspensión y Reanudación 2.Semáforos 3.Propiedades y Características de los Semáforos 4.Problemas Clásicos de Concurrencia 20 Tema 7: Concurrencia y Sincronización

21 3. Propiedades y Características de los Sem. Tema 7: Concurrencia y Sincronización  Reglas generales:  Si un semáforo controla sección crítica, Cerrar lo más tarde posible Abrir tan pronto como sea posible  Secciones críticas anidadas: Evitar en la medida de lo posible down(a) y despues down(b)→ admisible si proceso que hace up(b) no hace down(a)  Selección proceso desbloqueado por up:  No especificado  Depende de implementación: FIFO, aleatorio, prioridad…  Los programas nunca deben depender de este detalle!

22 3. Propiedades y Características de los Sem. Tema 7: Concurrencia y Sincronización  Granularidad: nº de recursos controlados por cada semáforo  Granularidad fina: un recurso por semáforo  Granularidad gruesa: un semáforo para todos los recursos:

23 3. Propiedades y Características de los Sem. Tema 7: Concurrencia y Sincronización Granularidad fina:  Ventajas:  mayor grado de paralelismo P1 P2  Inconvenientes:  mayor número de semáforos  ¡Posibilidad de interbloqueo! Granularidad gruesa:  (inversa)

24 Índice: 1.Suspensión y Reanudación 2.Semáforos 3.Propiedades y Características de los Semáforos 4.Problemas Clásicos de Concurrencia 24 Tema 7: Concurrencia y Sincronización

25 4. Problemas Clásicos de Concurrencia Tema 7: Concurrencia y Sincronización Los Filósofos Comensales void filosofo (int i) { while(true) { pensar(); coger_tenedor(derecho(i)); coger_tenedor(izquierdo(i)); comer(); soltar_tenedor(derecho(i)); soltar_tenedor(izquierdo(i)); } }

26 4. Problemas Clásicos de Concurrencia Tema 7: Concurrencia y Sincronización void filosofo (int i) { while(true) { pensar(); down (s); coger_tenedor(derecho(i)); coger_tenedor(izquierdo(i)); comer(); soltar_tenedor(derecho(i)); soltar_tenedor(izquierdo(i)); up (s) } }  ¿Una posible solución?

27 4. Problemas Clásicos de Concurrencia Tema 7: Concurrencia y Sincronización excmut f[0]f[1] f[2] f[3]f[N] void filosofo (int i) { while(true) { pensar(); coger_tenedores(i); comer(); soltar_tenedores(i); } } void coger_tenedores(int i) { down(excmut); estado[i]= HAMBRIENTO; probar(i); up(excmut); down(f[i]); } void soltar_tenedores(int i) { down(excmut); estado[i]= PENSANDO; probar(izquierdo(i)); probar(derecho(i)); up(excmut); } void probar (int i) { if ((estado[i]==HAMBRIENTO) && (estado[izquierdo(i) != COMIENDO) && (estado[derecho(i)] != COMIENDO) { estado[i]= COMIENDO; up(f[i]) } }