Sincronización de Procesos

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS.
Advertisements

Concurrencia Exclusión mutua y sincronización
Tabla de Contenido Concurrencia.
TEMA 1 Introducción a la Programación Concurrente
Mecanismo de semáforos
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
ADA: lenguaje de programación concurrente
Administración de procesos y del procesador.
INTERPROCESS COMMUNICATIONS-1 Cátedra: Sistemas Operativos UTN-FRSF
Daniel Morillo Jorge Boscán Gregory Carrasco
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Conceptos de Concurrencia
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Integrantes: Karen Huaman Leva Nelly Quispe Troncoso
Programación Concurrente DAI - UNSAAC.
SISTEMAS OPERATIVOS UNIDAD 1..
7a.1 Silberschatz, Galvin y Gagne ©2003 Sistemas Operativos 6ª edición Capítulo 7: Sincronización de procesos parte a.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Deadlocks Abrazo Mortal Bloqueos mutuos
Concurrencia: Exclusión Mútua y Sincronización
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Cobol C Pascal Fortran 5. UNIDADES DE PROGRAMAS SmallTalk Java C++
PROGRAMACION CONCURRENTE
Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
Planificación Cíclica
Unidad III Administración de procesos
Análisis de Algoritmos
Profesor: Rodrigo Sanhueza Figueroa
Sistemas Concurrentes: programación concurrente
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.
Sistemas en tiempo real (STR)
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
PROGRAMACION CONCURRENTE
Planificación Dinámica de Tareas
 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 Conceptos Problema SC Soluciones Software Soluciones Hardware Emely Arráiz Ene-Mar 08.
Gestión de Procesos Gestión de Procesos Procesos Planificación CPU
Teoría – Alejandro Gonzalez
Programación secuencial vs programación concurrente
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.
Sincronización de Procesos
Tema 9.6: Sincronización de Procesos
Monitores Cabudare, noviembre de 2010 Universidad Fermín Toro
Sistemas operativos de tiempo Real Alejandro Celery RTOS - Sistemas Embebidos FI-UBA1.
Programación secuencial vs programación concurrente
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Dr. Pedro Mejía Alvarez Sistemas de Tiempo Real Transparencia 1 Planificación Cíclica Dr. Pedro Mejía Alvarez CINVESTAV-IPN, Departamento de Computación.
Planificación. Visión General El planificador del SO se construye a partir de un mecanismo para la conmutación de contexto y una política que determina.
Integrantes: Ma Carmen Zaragoza Santiago Leticia González Hernández Abraham Obispo Antonio Alexis González Ramírez Eduardo Hernández Tolentino.
Administrador de procesos
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Robiro A. Asuaje L.17/07/20151 Universidad Centro Occidental “Lisandro Alvarado“ Decanato de Ciencias COORDINACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS.
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de.
Teoría de Sistemas Operativos Sincronización Procesos
Tema 9: Gestión de Procesos. Tema 9: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Gestión de.
Unidad 2 – Gestión de Procesos
Se pueden incluir comentarios en cualquier parte de un programa pero deben delimitarse con llaves o con paréntesis y asterisco:
PROCESOS PROCESOS, HILOS, COMUNICACIÓN ENTRE PROCESOS Y PLANIFICACIÒN
UTFSM - Sistemas Operativos
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Introduccion a los Sistemas en Tiempo Real
Desarrollador Profesional de Juegos Programación III Unidad II Trabajando con bloqueo de datos.
Ciclos condicionales y exactos Estructura de control de ciclos
UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE SISTEMAS Unidad III: “PROGRAMACIÓN CONCURRENTE Y CONTROL.
SISTEMAS OPERATIVOS Sección Crítica.
Sincronización de Procesos
Transcripción de la presentación:

Sincronización de Procesos Dr. Pedro Mejía Álvarez CINVESTAV-IPN, Seccion de Computacion

Contenido Conceptos básicos El problema de la región crítica Hardware de sincronización Semáforos Problemas clásicos de sincronización Regiones críticas. Monitores Transacciones atómicas.

Conceptos Básicos El acceso concurrente a datos compartidos puede llevar a inconsistencias en los datos. El mantenimiento de la consistencia en los datos requiere mecanismos para asegurar la ejecución ordenada de procesos cooperativos. Los mecanismos de consistencia deben permitir la aplicación correcta de los algoritmos de planificación sin perjudicar a la predecibilidad.

Ejemplo: Proceso productor-consumidor Datos compartidos. type item = ... ; var buffer : array [0..n-1] of item; in, out: 0..n-1; counter:0..n; in:=0; out := 0; counter := 0; Proceso productor. Proceso Consumidor. repeat repeat produce un dato en nextp while counter = 0 do no-op; while counter = n do no-op; nextc:=buffer[out]; buffer[in] := nextp; out:=out+1 mod n; in := in+1 mod n counter:=counter-1; counter := counter + 1; consume the item in nextc until false; until false; Las operaciones: counter := counter + 1 y counter := counter - 1, deben ser atómicas.

El problema de la región crítica n procesos compiten para utilizar algún dato compartido. Cada proceso tiene un segmento de código, llamado región crítica, en el cual son accesados los datos compartidos Problema - asegurar que cuando un proceso esta ejecutando en su región crítica, ningún otro proceso puede entrar en su región crítica. Estructura del proceso Pi repeat sección de entrada sección crítica sección de salida until false;

El problema de la región crítica La solución al problema de la región crítica debe satisfacer tres requisitos: Exclusión mutua. Si el proceso Pi esta ejecutando en su región crítica, ningún otro proceso puede estar ejecutándose en su región crítica. Progreso. Si en un momento dado no existe ningún proceso y se le concede la región a un proceso, la decisión de concederle la región a otro proceso que la solicite no puede posponerse indefinidamente Espera acotada. Debe existir una cota en el número de veces que otros procesos se les permite entrar en su región crítica, después de que un proceso ha hecho una petición para entrar y antes de que le sea concedida.

Algoritmo 1 Variables compartidas: var turn: (0,1); inicialmente turn = 0; si turn = i entonces Pi puede entrar en su región crítica. Proceso Pi repeat while turn  i do no-op; región crítica turn:=j; últimas instrucciones until false; *** satisface exclusión mutua pero no progreso.

Algoritmo 2 Variables compartidas: var turn: (0,1); flag: array[0..1] of boolean; inicialmente turn = 0, y flag[0], flag[1] = false; si turn = 1 entonces Pi puede entrar en su región crítica. Proceso Pi repeat flag[i]:=true; turn:=j; while (flag[j] and turn = j) do no-op; región crítica flag[i]:=flase; últimas instrucciones until false; *** satisface los tres requisitos.

Hardware de sincronización Prueba y modifica el contenido de un “word” automáticamente function test-and-set (var target:boolean):boolean; begin test-and-set:=target; target:=true; end; Algoritmo de exclusión mutua: Variables compartidas: var lock:boolean; lock:=false; Proceso Pi repeat while test-and-set(lock) do no-op;; región crítica lock:=false; últimas instrucciones until false;

Semáforo: Herramienta de sincronización Semáforo S variable entera S. solo puede ser accesada mediante dos operaciones atómicas: wait(S): S:= S-1; if S < 0 then block(S); signal(S): S:= S+1; if S  0 then wakeup(S); block(S) - provoca la suspensión de el proceso que la invoca. wakeup(S) - provoca que un proceso bloqueado siga con su ejecución.

Ejemplo de sección crítica con semáforos Variables compartidas: var mutex: semaforo; mutex:= 1; Proceso Pi repeat wait(mutex); sección crítica signal(mutex); sección siguiente until false;

Ejemplo de semáforo para sincronización El semaforo flag se inicializa a 0 P0 P1 ............ .......... A wait(flag) signal(flag) B Ejecuta B en P1 solo después de que A se ejecuta en P0

Deadlock dos o mas procesos están esperando indefinidamente por un evento que puede dispararse por uno de los procesos en espera. S y Q son 2 semáforos inicializados a 1. P0 P1 wait(S) wait(Q) wait(Q) wait(S) .......................................... signal(S) signal(Q) signal(Q) signal(S) Starvation - bloqueo indefinido: un proceso puede bloquearse en un semáforo y nunca salir de su cola.

Tipos de semáforos Semáforo contador- valor entero que puede variar en un dominio sin restricción. Semáforo Binario. valor entero que varia de 0 a 1. Implementación de ambos semáforos. Función como herramienta para implementar la sección crítica, y para sincronizar procesos.

Problemas clásicos de la sincronización Problema del buffer acotado. Problema de los escritores lectores. Problema de los filósofos comiendo. Monitores.

Interacción entre Tareas Raras veces las tareas de un sistema son independientes unos de otros. Frecuentemente, los procesos cooperan entre si, o compiten por algún recurso. Para esto es necesario realizar operaciones de comunicación y sincronización. Dos procesos se comunican cuando hay una transferencia de información de uno a otro. Dos procesos están sincronizados cuando hay restricciones en el orden en que ejecutan algunas de sus acciones. En la mayoría de los sistemas de tiempo real las tareas interaccionan mediante datos comunes (protegidos) mensajes

Interacción entre Tareas de Tiempo Real En todos estos casos puede ocurrir que una tarea tenga que esperar un suceso de otra menos prioritaria. Esta situación se denomina bloqueo, y produce una inversión de prioridad indeseable. La inversión de prioridad no se puede eliminar completamente, pero es posible limitar su duración

Ejemplo X Y

Ejemplo: Inversión de Prioridad bloqueo a1 ax ay a2 b1 by by b2 c1 d1 dx dx d2 0 2 4 6 8 10 12 14 16 18