Sincronización de procesos

Documentos relacionados
Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

Estados de un proceso

ISO Tema 8,

SISTEMAS OPERATIVOS:

Concurrencia. Primitivas IPC con bloqueo

Sistemas Operativos Tema 6. Concurrencia

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Unidad 1: Gestión de Procesos

7. Programación Concurrente

Acceso coordinado a recursos compartidos

*** SOLUCIONES *** SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Concurrencia Condiciones de Carrera. Guillermo Román Díez

Sincronización de Procesos

SINCRONIZACIÓN DE PROCESOS

Sistemas operativos. Comunicación y sincronización de procesos

PROGRAMACIÓN CONCURRENTE

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Concurrencia: Exclusión mutua y Sincronización

Secciones críticas y exclusión mutua

Sistemas Operativos Tema 3. Concurrencia Conceptos generales Sincronización con semáforos

MECANISMOS PARA SINCRONIZACIÓN. Semáforos

Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales.

Concurrencia de Procesos

Unidad 2: Gestión de Procesos

Concurrencia Monitores. Guillermo Román Díez

Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia

Programación Concurrente y Paralela. Unidad 1 Introducción

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Lección 6: Ejemplos de programación con semáforos

SISTEMAS OPERATIVOS:

Ejercicios con Monitores

Comunicación y sincronización

Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización. Slides de Samuel Oporto Díaz

Uso de recursos compartidos

Porque desarrolló el concepto de lista de tareas (pool de Job) que podía ser gestionada de acuerdo a políticas distintas a la FIFO.

Lección 10: Ejemplos de programación con semáforos

SOLUCIONES. DURACIÓN: Dispones de dos horas para realizar el examen. Lee las instrucciones para el test en la hoja correspondiente.

CONCURRENCIA. Sincronización. Sistemas Operativos y Distribuidos. Prof. Javier Echaiz 1. Material Adicional (SOSD Mod 4)

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

Lección 5: Sincronización de procesos mediante semáforos

El problema de los Filósofos

Tema 1: Programación Multiproceso. Curso

Teoría de Sistemas Operativos Sincronización Procesos

FUNDAMENTOS BÁSICOS DE LOS SISTEMAS OPERATIVOS Fe de Erratas Actualizada a 12 de septiembre de 2018

SEMAFOROS. if hay procesos suspendidos en este semáforo then despertar a uno de ellos else S = S + 1

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Sincronización de Procesos. Módulo 6. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur. Sincronización de Procesos

SIMULACIÓN GRÁFICA DE EVENTOS PARALELOS EN TIEMPO REAL SINCRONIZADOS CON MENSAJES. Dr. Maximino Peña Guerrero Ing. José de Jesús Negrete Redondo

TEMA 2: PROCESOS E HILOS: CONCURRENCIA, SINCRONIZACIÓN Y COMUNICACIÓN

DE SISTEMAS CONCURRENTES

Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA.

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

UNIDAD 3 MEMORIA COMÚN. El problema de exclusión mutua

Sistemas Operativos. Concurrencia. Concurrencia de procesos. Concurrencia de procesos. Ejecución simultánea de procesos.

Práctico 2. Sincronización

Interbloqueo. Concurrencia: Interbloqueo e Inanición

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos

Programación Concurrente Recopilación de teoría referente a la materia

Sistemas multiprogramados

Unidad 2: Gestión de Procesos

Concurrencia entre Procesos.

Lección 13: Introducción a los sistemas de tiempo real

Modelo de Cómputo. Programación concurrente

Sistemas Operativos Tema 7. Concurrencia

Plataformas de Tiempo Real

Biblioteca de sistema

Introducción a los Sistemas Operativos S.O.

SISTEMAS OPERATIVOS, 10 de septiembre de 2009 Examen Convocatoria Extraordinaria

Sentencias de control de flujo

Sobre la programación concurrente

Simultaneidad + Sincronización

El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante.

Manipulación de procesos

SISTEMAS OPERATIVOS Manejo de procesos

Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1

Tipos de Diseño. Ing. Elizabeth Guerrero V.

Sistemas Operativos. Paso de Mensajes. Direccionamiento de Mensajes. Sincronización de mensajes. Mensajes permiten: Paso de Mensajes

Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Introducción a los Sistemas Operativos

Sistemas Operativos. Introducción. Tema 6

Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Hilos y mecanismos de comunicación y sincronización

Guillermo Román Díez

Ejercicios sobre tuberías

Concurrencia. Guillermo Román Díez

Tema 3: Concurrencia de procesos

PROBLEMAS CLÁSICOS DE LA COMUNICACIÓN N ENTRE PROCESOS

Sincronización de Threads

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

Sistemas Operativos INF - 151

Por ejemplo, el siguiente error conduce inmediatamente a un deadlock:

TEMA 3: MP DE MEMORIA COMPARTIDA (I)

Sistemas Operativos (Parte 2)

Concurrencia. Primitivas IPC con bloqueo

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Transcripción:

Sincronización de procesos

Contenido Procesos concurrentes. El problema de la seccion critica Problemas clásicos de comunicación y sincronización. Mecanismos de comunicación y sincronización. DSO 2014 2 Sincronización

Procesos concurrentes Los procesos llevan a cabo tareas para lograr un objetivo comun. Interaccionan entre ellos para: Competir por recursos Compartir recursos ES NECESARIA LA COMUNICACION y LA SINCRONIZACION (orden) ENTRE ELLOS DSO 2014 3 Sincronización

Procesos concurrentes El método mas sencillo de comunicación entre los procesos de un programa concurrente, es el uso común de unas variables de datos. Sin embargo el uso de este mecanismo puede hacer que la ejecución de un proceso interfiera en las acciones del otro. DSO 2014 4 Sincronización

Ejemplo Procesador 1 Procesador 2 PID = 500 Lee PID Registro o posición de memoria PID = 500 Incrementa y asigna PID Lee PID PID = 500 PID = 501 Escribe PID PID = 501 Incrementa y asigna PID PID = 501 PID = 501 Escribe PID DSO 2014 5 Sincronización

DSO 2014 6 Sincronización

Código del productor El productor no puede escribir en el buffer si está lleno Comparte con el consumidor: el buffer y el contador do {... ( elemento_p ) produce un nuevo elemento... while (contador == MAX_ELEMENTOS) haz_nada; buffer[indice_p] = elemento_p; indice_p = (indice_p + 1) % MAX_ELEMENTOS; contador = contador + 1; } while (TRUE); DSO 2014 7 Sincronización

Código del consumidor El productor no puede leer del buffer si está vacío Comparte con el consumidor: el buffer y el contador do { while (contador == 0) haz_nada; elemento_c = buffer[indice_c]; indice_c = (indice_c + 1) % MAX_ELEMENTOS; contador = contador - 1;... ( elemento_c ) consume el elemento... } while (TRUE); DSO 2014 8 Sincronización

Condiciones de carrera El código anterior no funciona por existir condiciones de carrera al actualizar el contador Veamos qué ocurre al ejecutar la sentencia: contador = contador + 1; Productor Consumidor load r0, contador load r0, contador add r0, 1 sub r0, 1 store contador, r0 store contador, r0 Problema: la modificación del contador no es atómica DSO 2014 9 Sincronización

Atomicidad Una operación se dice que es atómica (en un sistema uniprocesador) cuando se ejecuta con las interrupciones deshabilitadas Las referencias y las asignaciones son atómicas en la mayoría de los sistemas. Esto no es siempre cierto para matrices, estructuras o números en coma flotante Si el HW no proporciona operaciones atómicas, éstas no pueden construirse por SW DSO 2014 10 Sincronización

DSO 2014 11 Sincronización

Cuál es el problema planteado? Alguien necesita leche, pero no tanta Exclusión mutua: es el mecanismo que asegura que sólo un proceso está haciendo algo en un instante determinado Sección crítica: es la sección de código, o colección de operaciones, en el que se actualizan variables comunes o se ejecuta código común. Cuando un proceso está ejecutando código de su SC, ningún otro proceso puede estar en su SC DSO 2014 12 Sincronización

Seccion Critica Para evitar este tipo de errores, hay que identificar las regiones de los procesos en donde se acceden a recursos compartidos y dotarlas de la posibilidad de ejecucion como si fueran una única instruccion DSO 2014 13 Sincronización

Seccion Critica Seccion Critica: Aquellas partes de los procesos concurrentes que no pueden ejecutarse de forma concurrente. Los procesos deben de acceder en Exclusion Mutua DSO 2014 14 Sincronización

Problema de la Sección Critica Sistema compuesto por n procesos Cada uno tiene un (mismo) fragmento de código: sección crítica Sólo uno de los procesos en cada instante puede ejecutar en la sección crítica Cuando un proceso está ejecutando en la sección crítica, ningún otro puede hacerlo DSO 2014 15 Sincronización

Problema de la Sección Critica Para conseguir dicha exclusión mutua se deben de implementar protocolos software o hardware que impidan o bloqueen el acceso a una SC mientras está siendo utilizada por otro proceso. Solución general: do { protocolo de entrada sección crítica protocolo de salida resto de la sección } while (TRUE); DSO 2014 16 Sincronización

Problema de la sección crítica Toda solución debe cumplir tres condiciones Exclusión mutua Progreso Espera limitada DSO 2014 17 Sincronización

Tipos de soluciones Soluciones soft. basadas en variables de (.., DecKer,Peterson ) control Soluciones hw. basadas en instrucciones máquina específicas (test-and-set o ( swap Soluciones basadas en primitivas del SO ( 2007-2008 (impartido en ARCO Soluciones basadas en regiones críticas y monitores DSO 2014 18 Sincronización

Problemas clásicos de comunicación y sincronización El problema del productor-consumidor El problema de los lectores-escritores Comunicación cliente-servidor DSO 2014 19 Sincronización

Problema del productorconsumidor Proceso Productor Proceso Consumidor Flujo de datos Mecanismo de comunicación DSO 2014 20 Sincronización

El problema de los lectores-escritores Lector Lector Escritor Lector Escritor Recurso DSO 2014 21 Sincronización

Comunicación clienteservidor Computador Computador Petición Proceso cliente Proceso servidor S.O. Respuesta DSO 2014 22 Sincronización

Primitivas del SO para comunicación y sincronizacion

Primitivas del SO Mecanismos de comunicación Tuberías (pipes, FIFOS) Paso de mensajes Mecanismos de sincronizacion Servicios del sistema operativo: Señales (asincronismo) Tuberías (pipes, FIFOS) Semáforos Paso de mensajes Las operaciones de sincronización deben ser atómicas DSO 2014 24 Sincronización

Semáforos Introducidos por Dijkstra en los años 60 Es un tipo especial de variable que sólo puede ser accedida por dos primitivas P y V P (semáforo): operación atómica que espera hasta que la variable semáforo sea positiva, en este momento la decrementa en 1 V (semáforo): operación atómica que incrementa la variable semáforo en 1 Cómo quedaría el problema de la sección crítica con semáforos? DSO 2014 25 Sincronización

Operaciones sobre Semáforos Wait(s) { s = s - 1; if (s < 0) { <Bloquear al proceso> } } signal(s) { s = s + 1; ( 0 <= (s if <Desbloquear a un proceso bloqueado por la operacion wait> } } DSO 2014 26 Sincronización

Características de los semáforos Son independientes de la máquina Son simples Pueden trabajar con varios procesos Doble uso de los semáforos: Exclusión mutua Sincronización DSO 2014 27 Sincronización

Secciones críticas con semáforos Wait(s); /* P(s) entrada en la seccion critica */ < seccion critica > signal(s); /* V(S) salida de la seccion critica */ El semáforo debe tener valor inicial 1 DSO 2014 28 Sincronización

DSO 2014 29 Sincronización

Restricciones: Productor-consumidor El consumidor espera a que haya datos en el buffer El productor espera a que haya buffers vacíos Sólo un único proceso puede manipular el buffer a la vez Semáforos: smf_llenos, smf_vacíos y exmut Inicialización: smf_llenos = 0 smf_vacíos = número_de_buffers exmut = 1 DSO 2014 30 Sincronización

Productor Consumidor P (smf_vacíos); P (exmut); Produce un dato; V (exmut); V (smf_llenos); P (smf_llenos); P (exmut); Consume el dato; V (exmut); V (smf_vacíos); Por qué el productor hace P(smf_vacíos) y V(smf_llenos)? Es importante el orden en que se ejecutan las primitivas P y V? Cómo podemos extender el problema si hay dos consumidores? DSO 2014 31 Sincronización

Lectores-escritores Descripción: Los escritores acceden a la BBDD cuando no haya ningún otro escritor y ningún lector. Semáforo escribir Los lectores acceden cuando no haya ningún escritor accediendo o esperando. Semáforo leer Variables compartidas: LA, LE, EA, EE. A estas variables accederemos en exclusión mutua. Semáforo exmut DSO 2014 32 Sincronización

Iniciación leer = escribir = 0 exmut = 1 LA = EA = LE = EE = 0 Además: Los escritores tienen prioridad sobre los lectores DSO 2014 33 Sincronización

Lector Escritor P (exmut); if ((EA + EE) == 0) { V (leer); LA = LA + 1; } else { LE = LE + 1; } V (exmut); P (leer); Leemos los datos; P (exmut); LA = LA - 1; if (LA == 0 && EE > 0) { V (escribir); EA = EA + 1; EE = EE - 1; } P (exmut); if (( EA + LA + EE) == 0) { V (escribir); EA = EA + 1; } else { EE = EE + 1; } V (exmut); P (escribir); Escribimos los datos; P (exmut); EA = EA - 1; if (EE > 0) { V (escribir); EA = EA + 1; EE = EE - 1; } else while (LE > 0) { V (leer); LA = LA + 1; LE = LE - 1; } V (exmut); DSO 2014 34 Sincronización

Problema del barbero dormilón Problema: 1 barbero y N sillas de espera Si un cliente entra y no hay sillas, se va Semáforos: clientes: número de clientes en espera sin contar el que está en la silla del peluquero barberos: número de barberos inactivos exmut: exclusión mutua Variable compartida: esperando: número de clientes esperando Inicialmente: clientes=0 barberos=0 exmut=1 esperando=0 DSO 2014 35 Sincronización

Barbero Cliente do { P(clientes); P(exmut); esperando=esperando-1; V(barberos); V(exmut); /* Corta el pelo */ } while (TRUE); do { P(exmut); if (esperando < SILLAS) { esperando=esperando + 1; V(clientes); V(exmut); P(barberos); /* Se corta el pelo */ } else { V(exmut); } } while (PELOLARGO); DSO 2014 36 Sincronización

Problema del puente estrecho Por un puente sólo pueden pasar o coches que suben o coches que bajan. Solución: Variables compartidas: int contadorsubida = 0, contadorbajada = 0; semaforo exmut_s, exmut_b, puente; Iniciación: Los semáforos inicialmente deben valer 1 No se tratan los problemas de inanición DSO 2014 37 Sincronización