310 likes | 463 Views
Interacci ó n entre Tareas. Dr. Pedro Mejía Alvarez Secci ó n de Computaci ó n. CINVESTAV-IPN. Indice. Comunicación y Sincronizacion Comunicación con datos comunes Comunicación mediante mensajes Problemas en la Interacción entre tareas. Inversión de Prioridad
E N D
Interacción entre Tareas Dr. Pedro Mejía Alvarez Sección de Computación. CINVESTAV-IPN
Indice • Comunicación y Sincronizacion • Comunicación con datos comunes • Comunicación mediante mensajes • Problemas en la Interacción entre tareas. • Inversión de Prioridad • Protocolos.
Interacción entre tareas • En la mayoría de los sistemas de interés práctico las • tareas interaccionan mediante • datos comunes (protegidos) • mensajes • señales • La interacción puede darse entre tareas con distintas prioridades. • El acceso a datos comunes debe protegerse. • El uso de mensajes se produce a traves de buzones. • El uso de señales se produce a traves de semáforos • En todos estos casos puede ocurrir que una tarea • tenga que esperar un suceso de otra menos • prioritaria
Comunicación y Sincronización • Raras veces los procesos de un sistema son independientes unos de otros. Mas a menudo, cooperan para un fin común o compiten por la utilización de los recursos. • Para ello, es necesario realizar operaciones de comunicación y sincronización entre procesos. • Dos procesos se comunican cuando hay una transferencia de • información de uno a otro. • Dos procesos estan sincronizados cuando hay restricciones • en el orden en que se ejecutan sus acciones. • Los dos conceptos estan relacionados. • Hay distintas formas de abordar el problema: • Datos comunes. • Mensajes.
Comunicacion con datos comunes • En un sistema monoprocesador, la forma mas directa de comunicación entre dos o mas procesos consiste en compartir datos comunes. • El acceso incontrolado a variable comunes • Puede producir resultados anomalos. • Se dice que hay una condicion de carrera cuando • el resultado de la ejecucion depende del orden en • que se intercalan las instrucciones de dos o mas • procesos. • Se trata de una situacion que hay que evitar
Ejemplo: A B Incrementar Contador LDA contador INC STA contador Incrementar Contador LDA contador INC STA contador Contador = 0 • El resultado final puede ser 1 o 2 • Depende de las velocidades relativas de los procesos. • Para evitar este problema hay que asegurar que las • Operaciones con variable comunes sean atómicas. • Deben de usarse mecanismos de exclusión mutua (p.ej. Semàforos)
Comunicacion mediante mensajes • Las tareas se pueden comunicar y sincronizar mediante mensajes. • Esta forma de comunicacion no necesita de memoria comun. • Es posible utilizar buzones como mencanismo de comunicación. • Hay tres aspectos de interes: • Sincronizacion. • Identificacion del proceso emisor y receptor. • Estructura de los mensajes
Diagrama de secuencia de mensajes • Representan la interacción • entre procesos mediante • el intercambio de mensajes • El tiempo va hacia abajo B A B send receive Buzón
Sincronización en el envío de mensajes • El proceso receptor siempre espera si el mensaje no ha llegado todavia. • Para el proceso emisor hay tres modelos basicos: • Comunicación asíncrona: el emisor continua su ejecución. • Comunicación síncrona (cita): el emisor espera a que • el receptor reciba el mensaje. • Invocación remota (cita extendida): el emisor espera a que • el receptor reciba el mensaje, y la respuesta de éste.
Comunicación Asíncrona • El numero de mensajes que • pueden enviarse depende del • tamaño del buzón. • El emisor puede saturar el • buzón (si no hay receptcion) y • hasta entonces bloquearse. • El receptor puede bloquearse si • el buzón se encuentra vacio. A B send Buzón receive
Comunicación Síncrona • El buzón acepta solo un mensaje • Al enviar un mensaje el emisor • espera (bloqueado) hasta que el • receptor ha recibido el mensaje. • Lo mismo ocurre cuando el • receptor ejecuta el receive primero. A B send Buzón receive mensaje A send(m); receive (ack); B receive(m); send (ack);
Invocación Remota • El buzón acepta solo un mensaje • Al enviar un mensaje el emisor • espera (bloqueado) hasta que el • receptor ha recibido el mensaje. • Lo mismo ocurre cuando el • receptor ejecuta el receive primero. A B send mensaje receive bloqueo reply A s_send(m); s_receive (ack); B s_receive(m); preparar reply s_send(r);
Estructura de los mensajes • El mensaje podria llevar los siguentes campos: • Encabezado. • Identificador del emisor. • Identificador del receptor. • Longitud del mensaje • Mensaje. • Campo de ack. • Campo de seguridad • El contenido del mensaje deberia poder ser de cualquier tipo.
Identificación del emisor y el receptor • Identificación directa o indirecta: • Directa: el emisor identifica explicitamente al receptor • send mensaje to proceso • Indirecta: se utiliza un intermediario (buzón, canal, • tubería, etc) • send mensaje to buzón • Simetria: • Comunicacion simétrica: el emisor identifica al receptor • y viceversa. • send mensaje to proceso (buzón) • receive mensaje from proceso (buzón) • Comunicacino Asimétrica: el receptor acepta mensajes • de cualquier emisor o buzón.
Problemas con la Interacción entre tareas • Cuando dos o mas tareas comparten datos, sen envian mensajes o se sincronizan entre si, 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 1 X Y
Ejemplo 1: 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
Herencia de prioridad • Una forma de reducir la duración de los bloqueos es • variar dinámicamente la prioridad de las tareas • Cuando una tarea está bloqueando a otra más • prioritaria, hereda la prioridad de está • La prioridad dinámica de una tarea es el máximo de • su prioridad básica • las prioridades de todas las tareas bloqueadas por ella • La herencia de prioridad es transitiva
Ejemplo 1: herencia de prioridad a1 ax ay a2 b1 by by b2 c1 d1 dx dx d2 0 2 4 6 8 10 12 14 16 18
Duración máxima de bloqueo • Con el protocolo de herencia de prioridad, una tarea • se puede bloquear como máximo • una vez por cada sección crítica • una vez por cada tarea de prioridad inferior • La duración total máxima de los bloqueos es • donde • K es el número de recursos compartidos • C es el tiempo durante el cual la tarea j accede al • recurso K(=0 si no usa el recurso) j,k
Ejemplo 1: cálculo de bloqueo • B = C + C = 2+4=6 • B = C = 4 • B = C = 4 • B = 0 • Una tarea puede bloquearse por recursos a los que no • accede (por ejemplo, 2) • Una tarea puede sufrir bloqueo aunque no acceda a • recursos compartidos (por ejemplo, 3) • La tarea de menor prioridad ( 4) no sufre bloqueo 1 2,Y 4, X 2 4, X 4, X 3 4
Tiempo de respuesta con bloqueos • Cuando hay bloqueos, la ecuación del tiempo de • respuesta queda así: La solución se obtiene mediante la relación de recurrencia
Protocolos de techo de prioridad • El techo de prioridad de un recurso es la máxima • prioridad de las tareas que lo usan • El protocolo del techo de prioridad consiste en: • la prioridad dinámica de una tarea es el máximo de su • prioridad básica y las prioridades de las tareas a las que • bloquea • una tarea sólo puede usar un recurso si su prioridad • dinámica es mayor que el techo de todos los recursos en • uso por otras tareas
Ejemplo 1: techo de prioridad a1 ax ay a2 by b1 by b2 c1 d1 dx dx dx d2 0 2 4 6 8 10 12 14 16 18
Propiedades • Cuando se usa el protocolo del techo de prioridad en • un sistema monoprocesador, • Cada tarea se puede bloquear una vez, como máximo, en • cada ciclo • No puede haber interbloqueos • No puede haber bloqueos encadenados • Se consigue la exclusión mutua sin mecanismos de • protección adicionales • La duración máxima del bloqueo es ahora • B = maxC • lc(i)es el conjunto de recursos que pueden bloquear i j,k felp(f),k lc(i)
Protocolo del techo de prioridadinmediato • Con este protocolo, una tarea que accede a un • recurso hereda inmediatamente el techo de prioridad • del recurso • la prioridad dinámica de una tarea es el máximo de su • prioridad básica y los techos de prioridad de los recursos • que usa • Las propiedades son las mismas que las del • protocolo del techo de prioridad, y además, • si una tarea se bloquea, lo hace al principio del ciclo • Es más fácil de implementar que el protocolo básico • Es más eficiente ( menos cambios de contexto )
Ejemplo 1: techo de prioridadinmediato a1 ax ay a2 b1 by b2 c1 d1 dx d2 0 2 4 6 8 10 12 14 16 18
Resumen • Un método de planificación tiene dos partes: • un algoritmo de reparto de recursos • un método de análisis del comportamiento temporal • El método clásico se basa en un ejecutivo cíclico • el análisis es inmediato (por construcción) • es poco flexible y de bajo nivel • Un método mejor se basa en el uso de prioridades fijas • las prioridades se asignan por orden de período, plazos o de • forma arbitraria • se puede analizar el tiempo de respuesta de las tareas • se pueden analizar tareas con interacción si se usa un protocolo • de herencia o techo de prioridad