12.07.2015 Views

1x1 - Escuela Superior de Informática (UCLM)

1x1 - Escuela Superior de Informática (UCLM)

1x1 - Escuela Superior de Informática (UCLM)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaÍndice●Introducción● Concurrencia en Ada 95●●Objetos protegidosMonitoresF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 2


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaIntroducción●Los semáforos:– Son variables globales– Son engorrosos●En algunas implementaciones usan espera activa– Conceptualmente <strong>de</strong> bajo nivel●●●El paso <strong>de</strong> mensajes:FlexiblesEscalan mal y son fuente <strong>de</strong> problemas– No mo<strong>de</strong>la, <strong>de</strong> forma natural, el acceso a un recursocompartidoF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 3


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaIntroducción●●●●Semáforos, segmentos <strong>de</strong> memoria compartida, paso<strong>de</strong> mensajes, son llamadas al sistema operativoExisten lenguajes que no necesitan <strong>de</strong>l sistemaoperativo y que implementan nuevos mecanismosExisten mecanismos más avanzados y <strong>de</strong> alto nivelEn este tema, vamos a estudiar:– Ada 95 y su mo<strong>de</strong>lo <strong>de</strong> tareas– Objetos protegidos– MonitoresF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 4


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaAda95●Diseñado para construir sistemas <strong>de</strong> tiempo realcríticos muy fiables– Estructuras propias <strong>de</strong>l lenguaje para:●Concurrencia●Sincronización●Tiempo Real● Tres versiones 83, 95 y 2005– Introducen necesida<strong>de</strong>s expresadas por la industria– Se evalúa el lenguaje cada 10 años aproximadamenteF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 5


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaTareas●Una tarea es un proceso con interfaz y se <strong>de</strong>clara:task type T;task body T isa:Duration := Duration(4);ID_T:Task_Id := Null_Task_Id;beginID_T := Current_Task;loop<strong>de</strong>lay a;Put("Soy la tarea ");Put_Line(Image(ID_T));end loop;end T;F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 6


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaLanzamiento●●●Para <strong>de</strong>finir una nueva tarea, basta con <strong>de</strong>finir unavariable <strong>de</strong>l tipo tareaSe activa <strong>de</strong> forma automática al llegar al comienzo<strong>de</strong>l procedimiento don<strong>de</strong> se <strong>de</strong>claraEl procedimiento espera a sus tareaswith Ada.Text_IO; use Ada.Text_IO;with Ada.Task_I<strong>de</strong>ntification;use Ada.Task_I<strong>de</strong>ntification;procedure tareas is–- Aquí va la <strong>de</strong>finición <strong>de</strong> la transparencia anteriorF:T; -- variable <strong>de</strong> tipo T tarea nuevaX:T; -- Otra tareabeginnull;end tareas;F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 7


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaTareas●●●Se pue<strong>de</strong>n crear tareas dinámicas mediante punteros(access) y la sentencia newExisten atributos asociados a las tareas, entre otros– Variable_Tarea'Callable indica falso si la tarea estácompletada o terminada, en otro caso (ejecutándose osuspendida), verda<strong>de</strong>ro.– Variable_Tarea'Terminated indica verda<strong>de</strong>ro si la tareaha terminado.Para terminar abortF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 8


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaSincronización entre tareas, citas●●●●Se <strong>de</strong>clara en la especificación:task T isentry E(N: Integer);end;Llamada <strong>de</strong>s<strong>de</strong> otra tarea:T.E(6);Bloqueante tanto en llamada como en ejecución.Hay que <strong>de</strong>finir el cuerpo <strong>de</strong> la entrada (accept) en elcuerpo <strong>de</strong> la tarea. Cuando la tarea llega a ese punto,se bloquea hasta que alguien la llame.accept E (N: Integer) do-- Secuencia <strong>de</strong> sentencias.end E;Punto <strong>de</strong> entrada,con argumentos comoun procedimientoF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 9


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaBuffertask Buffer isentry Escribir (Elem: TElemeto);entry Leer (Elem: out TElemento);end Buffer;task body Buffer isEvita que nosque<strong>de</strong>mos bloqueadosen un sólo acceptElemLocal: TElemento;beginloopselectaccept Escribir (Elem: TElemento) doElemLocal:= Elem; -- Guarda el elemento.end Escribir;oraccept Leer (Elem: out TElemento) doElem := ElemLocal; -- Devuelve el elemento.end Escribir;end select;end loop;end Buffer;F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 10


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaBuffer N elementosselectwhen nDatos < N =>accept escribir(D: in Dato) doX(i) := D;end escribir;i := i mod N+1;nDatos := nDatos + 1;orwhen nDatos > 0 =>accept leer(D: out Dato) doD := X(j);end leer;j := j mod N+1nDatos := nDatos – 1end selectFuente: http://webdiis.unizar.es/~ezpeleta/lib/exe/fetch.php?media=misdatos:pc:introada.pdfF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 12


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaObjetos protegidos●●●Tipo específico <strong>de</strong> Ada:– Permite <strong>de</strong>finir estructuras complejas privadas– Que se acce<strong>de</strong>n mediante procedimientos, funciones oentradas.Se pue<strong>de</strong>n <strong>de</strong>finir guardas o barreras en las<strong>de</strong>finiciones <strong>de</strong> las entradas– Más fáciles <strong>de</strong> enten<strong>de</strong>r e implementarUna guarda o barrera es una condición que se <strong>de</strong>becumplir para que el proceso entre en el procedimiento– Exclusión mutua en la llamada al procedimiento– Bloqueos en la guarda.F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 13


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaObjetosprotegidos: Ada 95●Implementación en Ada– Procedimientos, funciones y entradas– Son elementos <strong>de</strong>l lenguaje, no llamadas al sistemaoperativo.– Procedimientos proporcionan exclusión mutua– Funciones permiten acceso concurrente●●Para operaciones <strong>de</strong> sólo lecturaMantienen la exclusión mutua con los procedimientos– E.j. leo <strong>de</strong> forma concurrente pero la escritura enexclusión mutua.– Entradas son procedimientos con barreras booleanas●Exclusión mutua y a<strong>de</strong>más la condición <strong>de</strong> la barreraF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 14


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaFilósofos con objetos protegidosFuente: http://es.wikibooks.org/wiki/Programacion_en_Ada/Tareas/EjemplosF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 15


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaTipo protegido Cubierto: <strong>de</strong>claraciónpackage Cubiertos isEncapsulacióntype Cubierto is limited private;procedure Coger(C: in out Cubierto);procedure Soltar(C: in out Cubierto);Procedimientospúblicosprivatetype Status is (LIBRE, OCUPADO);protected type Cubierto(Estado_Cubierto: Status := LIBRE) isentry Coger;entry Soltar;privateEstado: Status := Estado_Cubierto;end Cubierto;end Cubiertos;TipoprotegidoFuente: http://es.wikibooks.org/wiki/Programacion_en_Ada/Tareas/EjemplosF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 16


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaTipo protegido Cubierto: cuerpopackage body Cubiertos isprocedure Coger (C: in out Cubierto) isbeginC.Coger;end Coger;procedure Soltar (C: in out Cubierto) isbeginC.Soltar;end Soltar;protected body Cubierto isentry Coger when Estado = LIBRE isbeginEstado := OCUPADO;end Coger;entry Soltar when Estado = OCUPADO isbeginEstado := LIBRE;end Soltar;Tipo protegidoend Cubierto;end Cubiertos;F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 17


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaFilósofo-- Esto es un puntero en Ada 95type Pcubierto is access Cubiertotask type TFilosofo(Id: Character;Cubierto1: PCubierto;Cubierto2: PCubierto);task body TFilosofo isprocedure Comer isbeginCoger(Cubierto1.all);Coger(Cubierto2.all);Put(Id & "c ");<strong>de</strong>lay 1.0; -- Comiendo...Soltar(Cubierto2.all);Soltar(Cubierto1.all);end Comer;El objeto protegidose encarga <strong>de</strong> la gestión<strong>de</strong> concurrenciaF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 18


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaFilósofoprocedure Pensar isbeginPut(Id & "p ");<strong>de</strong>lay 3.0; -- Pensando...end Pensar;beginloopComer;Pensar;end loop;end TFilosofo;F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 19


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaMo<strong>de</strong>lado <strong>de</strong>l problemabeginPut("Introduce el numero <strong>de</strong> cubiertos: ");Get(Num_Cubiertos); New_line;<strong>de</strong>claretype PTFilosofo is access TFilosofo;P: PTFilosofo;C: Character := 'A';Cuberteria: array (1..Num_Cubiertos) of PCubierto;beginfor i in 1..Num_Cubiertos loopCuberteria(i) := new Cubierto;end loop;for i in 1..Num_Cubiertos-1 loopP := new TFilosofo(C, Cuberteria(i),Cuberteria(i+1));C := Character'Succ(C);end loop;P := new TFilosofo(C, Cuberteria(1),Cuberteria(Num_Cubiertos));end;end Problema_Filosofos;Creamos loscubiertosCreamos losfilósofosF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 20


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaLas barreras booleanas●¿Cuándo se evalúa una barrera para saber si se hacambiado su estado?– Importante para saber si se <strong>de</strong>sbloquean las tareasbloqueadas en ella.– Se evalúan siempre que:➢●●Una nueva tarea evalúa la barrera y ésta hacereferencia a una variable o atributo que podríahaber cambiado <strong>de</strong>s<strong>de</strong> que la barrera fue evaluadapor última vez.Una tarea abandona un procedimiento o entrada yhay tareas bloqueadas en barreras que referencian avariables o atributos que podrían haber cambiado<strong>de</strong>s<strong>de</strong> que la barrera fue evaluada por última vez.No se pue<strong>de</strong>n usar variables globales en las barrerasF.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 21


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaMonitores●●Un monitor es un conjunto <strong>de</strong> procedimientos queproporciona acceso a un recurso compartido enexclusión mutua.– Los programadores que utilizan el monitor no sepreocupan <strong>de</strong> forma directa <strong>de</strong> la exclusión mutua.Cada monitor tiene una cola asociada:– Cuando dos procesos invocan un mismo método <strong>de</strong>lmonitor,●●El código <strong>de</strong> acceso <strong>de</strong>l monitor bloquea uno <strong>de</strong> ellos– Generalmente siguiendo una política FIFOLos procesos en espera se bloquean.– No hay espera activa.F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 22


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaMonitores●Sólo un proceso pue<strong>de</strong> estar activo en cada momento– La exclusión mutua la genera el compilador●●Generalmente mediante semáforos.A veces es necesario que un proceso se bloquee<strong>de</strong>ntro <strong>de</strong>l monitor.– Ejemplo: Productor/Consumidor●●Productor inserta un elemento pero el buffer estállenoCon la semántica anterior se produciría uninterbloqueo ya que los consumidores no pue<strong>de</strong>nacce<strong>de</strong>r al monitor.F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 23


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaMonitores: variables <strong>de</strong> condición●●Se <strong>de</strong>finen las variables <strong>de</strong> condición– Sobre las cuales los procesos realizan operaciones waity signal– Ejecuta wait sobre una variable <strong>de</strong> condición si ve queno pue<strong>de</strong> seguir, y se bloquea.– Otro proceso pue<strong>de</strong> entrar en el monitor.– El proceso se <strong>de</strong>sbloquea con con un signal sobre lavariable <strong>de</strong> condiciónSe asocia una variable <strong>de</strong> condición sobre cualquierseñal que nos permita bloquearnos/<strong>de</strong>sbloquearnos.– Por ejemplo, variable espacio_libre en el productorconsumidor.F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 24


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaMonitores●●●●Se pue<strong>de</strong> simular y encapsular su funcionamientomediante semáforos y/o paso <strong>de</strong> mensajes.Poco éxito en implementaciones nativas en lenguajes– Pascal concurrente, Modula-2, Modula-3 y JavaLas variables <strong>de</strong> condición presentan los mismos<strong>de</strong>fectos que los semáforosImplementaciones– Los objetos protegidos <strong>de</strong> Ada pue<strong>de</strong>n consi<strong>de</strong>rarsemonitores don<strong>de</strong> las variables <strong>de</strong> condición sólopue<strong>de</strong>n ser booleanas– Con mutex y variables <strong>de</strong> condición se pue<strong>de</strong> simularsu funcionamiento en POSIX usando pthreads.F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 25


<strong>Escuela</strong> <strong>Superior</strong> <strong>de</strong> InformáticaBibliografía● Tareas Ada (BURNS 7.3.6) (BURNS 9.3.2)● Monitores (BURNS 8.6)● Objetos Protegidos (BURNS 8.7)F.J. Villanueva Otros mecanismos <strong>de</strong> sincronizaciónPág 26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!