Está en la página 1de 9
Unidad 1 PROGRAMACION CONCURRENTE 1.1 Introduccién sta unidad didéetica presenta el concopto, de programacién concurrente, pto- porcionando st definicign informal en Ya fan 12. La seccién 1.3 discute las principales ventajas ¢ inconvententes que ‘rece este tipo de programacion cuando PMcomparade frente « la programacion see Mteneial. Ademés, se presentan algu- wos ejemplos de aplicaciones que tipicamente ‘eran coneurrentes ¥ se discute POF ‘qué resulta ventajoso programarias de ese manor Por titimo, la seceion 1.4 ofrece dina primera introduccign 0 los meeanismos ine ‘orporados en él lenguaje Java para soportar la programacion concurrent 1.2 Definicion Lin programa secuenciat [Di7I] es quel en el ane set snstruceiones se van ejecutan= a rrmgrie, una tras otra, desde su inicio haste ef final, Por tanto, en un programa ae em asal solo existe una tinica actividad o hilo de tjecucién, Es la forma tradicio ve programar, pues 1 primeros ondenadores Solo tenian un procesador y los primeres sistemas operativos no proporcionsroR ‘soporte para miiltiples actividades dentro de un mismo proceso. Por el contrario, en un programa concurrent {Dij6s] $e Megardn a crear miltipios ror Gldades que progresardn de manera simulsénes: ‘Cada una de esas actividades seré secuencial pero ahora el programa: sno pwanzaré siguiendo wna snica secuencia Unidad 1. PROGRAMAG pues cada actividad pods seguir une serie de ines jones distinta y todas las put idaddes avanzan de manera simultdnes (0, al menos, Ja imagen que offe- actiiasnarig), Para que en un determinado proceso Pay muiltiples actividades, oer a de esas actividades estaré soportada por un hila de ejecucién. Para que ton eon unto ae actividades constituya. un programs ‘concurrente, todas ellas deben Gooperar extre st para realizar una tarea coma ara tstrar ol concepto do program o proceso coneurtente, oRaNOg rae agus de textos, Bxsten vases do ellos actuntente, MS Word, LibreOfice procesadn oe tage), ba mayor son eapacos de reais maps SY Wie minis ev ceribiendo (par ello nese 1 oy hilo se gu a dique cada una de ess eins, micas 0 jenda 0 Ge ei MMoteonada_ por el svat). Alguos ejemplos de ore realizadas aig son revision ramatcal del contenido de one grabacién det Dor esto gue manera priien pare evitar I perdi 9 de contenido nt J almentacin, actulinacion del wean ca 0 oe corte inva, eve. Como se obsorvn en ests ejemplo, cd ee PON Son por un slo Acero ejrutble) exten miles Wy de ejecncién y {ornate oar enre compares informe anc (1 docs nto {que estemos editando) Preventemos seguidamente un ejemplo de una eleeucion 09 concurrente. Asuma- tos que en una sesion de Jaboratorio abrimos varie ‘consolas de texto en Linux para realizar las acciones que nos pid alin ‘enunciado y probatlas. En este se nde caso, sexuiriamos utilizando tn nico prostate (un intérprote de drdenes sgh el bash) y tendriannos multiples actividades {es decir, habria varias activi: » oe Sleeutando ese nico programa), pero sas actividades ‘no colaborarian entre PG consola abiert la estariamos wtilizando para Waa? (tt serie distinta de 5 Jenus y las 6rdenes lanzadas des diferentes consolas 60 interactuarfan entre aricnrian aniltiplesinstancias de tn mistno programa ep Sher jn, generando un Se ajunto de procesos independientes. Se cjecutarian simultaneamente, pero cada eine de ellos Gependeria de los demas, Bs0 no es una ‘aplicacién concurrente: Po fa'que haya concurrencia debe haber cooperacion entre las actividades. Algo similar ocuricn sien lugar de lanzar mies ‘consolas hubiésemos lanzado tiple instancias del navegador, Cada ventana abier® Ta estariamos utilizando mara aceeder a una pagina distnta y no tendria Por We existir ningiin tipo de Piteraecion 0 cooperacion entre todos los procesos nave sgadores generados, fin ete seccién se ha asumido hasta el momento ave Para Butt tuna aplicacion i dtiea basta con un sinico progranna- Esto no tiene Pos SNe ‘or siempre asi vtevcho, algunas aplicaciones pueden estructurarse co 1 ‘conjunto de com- ponentes y cada uno de esos componentes puede eA implantado mediante un programa distinto. En general, cuando hablemos de una aplicacién concurrente proriremos que ests compuesta por un conjutnto do ‘actividades que cooperan et sent para realizar una Larea comin: Estas actividades podrin ser: miltiples hilos 1.2 Definesin en un mismo proceso, miiltiples procesos en una misma méquina o incluso miilti- ples procesos en méquinas distintas; pero en todos los casos existiré eooperacién entre las actividades. Por el contrario, en una aplicacién secuencial tinicamente existiré un solo proceso y en tal proceso solo habri un nico hilo de ejecucién Para soportar la concurrencia se tendré que ejecutar ese conjunto de actividades de manera simulténea o paralela, Para ello existen dos mecanistios: = Paralelismo real: Se dara cuando tengamos disponibles miiltiples procesado- res'de manera que ubicaremos a cada actividad en un procesador diferen- te’ En las arquitecturas modernas, los procesadores pueden tener miiltiples niicleos. En ese caso, basta con asignar un niieleo diferente a cada actividad. Todas ellas podrin avanzar simultsneamente sin ningin problema, Si solo disponemos de ordenadores con un solo procesador y un tinieo niicleo, podremos todavia lograr la concurrencia real utilizando miiltiples ordenado- res. En ese caso la apliqacién concurrente estard formada por miiltiples pro ccesos y estos cooperardn enitre sf intercambiando mensajes para comunicatse Paralelismo légico: Como los procesadores actugles son répidos y las ope- raciones de B/S suspencden temporalmente el avafice del hilo de ejecucién que las haya programado, se puede intercalar la ejecueién de méltiples ac tividades y ofrecer la imagen de que éstas progresan simulténeamente. Asi, mientras se sirve una operacién de B/S, el procesador queda libre y se puede clegir a otra actividad preparada para ejecutarla durante ese intervalo. Es te es el principio seguido para proporcionar mulfiprogramacién (técnica de multiplexacién que permite la ejecucién simultnea de miiltiples procesos en lun tinico procesacor, de manera que parece que todos los provesos se estén ejecutando a la vez, aunque hay un tinico proceso en el procesador en cada instante de tiempo). Por ello, el hecho de que tinicamente se disponga de un solo procesador en un determinado ordenador no supone ninguna restriceién que impida implantar aplicaciones concurrentes, El usuario seré incapaz de distinguir entre un sistema informético con un solo procesador y un solo miicleo de otro que tenga miiltiples procesadores, pues los sistemas operativos ocultan estos detalles. En cualquiera de los dos casos, el usuario percibe la imagen de que miiltiples actividades avanzan siinultémeamente. Ainbos tipos de paralelismo pueden combinarse sin ninguna dificultad. Por ello, si en un determinado ordenador tenemos un procesador con dos miicleos, el niimero de actividades que podremos soportar en una aplicacién concurrente que ejecutemos en él no tendré por qué limitarse a dos. Al combinar el paralelismo real con el légico podremos utilizar tantos hilos como sea necesaio en esa aplicaciéi Unidad 1. PROGRAMACION CONCURRENTE 1.3. Aplicaciones concurrentes Esta seccin estidia con mayor detenimiento algunos aspectos complements, de Te programacion concurrente, como son sus principales ventajat © Att yenientes, 1s Progra tos ejemplos de aplicaciones, tanto reales como académiens. tos alti ae atran algunas de Ins difcultades que encontraremos 2 la hora de desarrollar tuna aplicagiin concurrente. 1.3.1 Ventajas ¢ inconvenientes La programacién concurrente proporciona las siguientes ventajas «+ Hficiencia: El hecho de disponer de miltiples actividades dentro de la apli- are ermite que ésta pucla concluit st trabajo de manera més répida ti henko de que alguna actividad se suspenda al utilizar (p<) al acoder al dToce para leer parte de un fchero) o al soliitar (petal utiizar 12 Oper. cién P() sobre un seméforo) algin recurso no suspende a toda la aplicacion y conch esta dltima podré seguir avanzando, En wna aplicacion concutrente oe i cenillo que se tilicen miitiples recursos simultdneamente (icheros, semaforos, memoria, procesador, red,..). acalabitdad: Si una deverminada aplicacién puede disefiarse ¢ implantay aaeemo un conjunto de componentes que interactiien y colaboren enire sh enerando al menos tna actividad por cada componente, s fac ilitaré la dis ee acion de la aplicacién sobre diferentes ordenadores. Para ello bastarla cp inctalar cada componente en uit ordenador distinto, generando wn apli- con pn distribuida. De esta manera, la cantidad de recursos de cémputo ae we podrn utilizar simultdneamente se inerementarés Adonis, = el miimero. sr peuarios de esa aplicacién también se incromentara significativarment ° podrian utilizar tcnicas de replieacidn [Sch00, BMST92, ine srementando su apacidad de servicio. As{ mejora In escalabilidad de una aplicacn. Bin general, se dice que un sistema es escalable (BonO0] cuando es Ape Ue gestionar adecuadamente cargas crecientes de trabajo o cuando Wate la aemeidad para erecor y adaptarse a tales cargns. in el caso de Jas aplica- caecincarrentes ambas interprotaciones se pueden cumplir combinando Ia distribucién y replicacidn de componentes. Gestién de las comunicaciones: El nso eficionte de los recursos, ya comentado eae primera ventaja citada en este apartado, permite que aaueles tect, ee peadog con ka eomunicacion entre actividades sean explotados de Se ace geneila en una aplicacién concurrent. Si ja comonieaciin est be ada en el intercambio de mensajes a través de la'red, esta ‘comunicacion seimplicaré que toda la aplicaciin se detenge experando alguna resp Petpa at aso de mecanismos sinericog de comunicacién entre actividades 1.3 Aplicaciones concurrentes se puede integrar de manera natural en una aplicacién concurrente. En lo Unidad 8 se detallardn diferentes tipos de mecanismos de comunicaci6n. Fleribilidad: Las aplicaciones coneurrentes suelen utilizar un disefio modular y estructurado, en el que se presta especial atencién a qué es lo que debe hacer cada actividad, qué recursos requeriré y qué médulos del programa necesitaré ejecutar. Por ello, si los requisitos de la aplicacién cambiasen, resultaria relativamente sencillo identificar qué médulos tendrian que ser dlaptados para incorporar esas variaciones en la especificacién y a qué acti- vidades implicarian, Como resultado de este disefo estructurado y cuidadoso, se generardn aplicaciones flexibles y adaptables. Menor hueco seméntico: Un buen mimero de aplicaciones informiticas re- quieren el uso de varias actividades simulténeas (por ejemplo, en un v deojuego suele utilizarse un hilo por cada elemento mévil que haya en la pantalla; en una hoja deeéleulo tenemos un hilo para gestionar la entrada de datos,-otro para recélculo, otro para la gestién de los mentis, otro para Ia actualizacidn de las celdas visibles, ..). Si estas aplicaciones se implantan como programas concurrentes resulta sencillo stfdiseiio. Por el contrario, si se intentara implantarlas como un solo programa secuencial la coordinacién centre esas diferentes funcionalidades resultaria dificil No obstante, la programacién concurrente también presenta algunos inconvenientes {que conviene tener en cuenta: « Programacién delicada: Durante el desarrollo de aplicaciones concurrentes pueden llegar a surgir algunos problemas. El més importante se eonoce como ‘eondicién de carrera” (a estudiar en la unidad 2) y puede generar inconsis- tencias imprevistas en el valor de las variables o atributos compartidos entre las actividades, cuando éstas los modifiquen. Un segundo problema son los, interbloqueos [CEST1], que se analizarén en la Unidad 4. Por ello, deben co- nocerse los problemas potenciales que entrafia la programacién concurrente y deben tomarse las precauciones oportunas para evitar que aparezcan. Depuracién compleja: Una aplicacién concurrente, al estar compuesta por iniltiples actividades, puede intercalar de diferentes maneras en cada ejecu- cidn las sentencias que ejecuten cada una de sus actividades. Por ello, aunque se proporcionen las mismas entradas a la aplicacién, los resultados que ésta, sgenere pueden llegar a ser distintos en diferentes ejecuciones. Si alguno de es- tos resultados fuese incorrecto, resultaria bastante dificil la reproduecién de esa ejecucién. Ademés, como para depurar cualquier aplicaci6n informatica se suclen utilizar herramientas especializadas (diferentes tipos de depurado- res), la propia gestién del depurador podria evitar que se diera la traza que provoeé ese error, Esto ilustra que las aplicacionés concurrentes no tienen tuna depuracién sencilla y que los mecanisinos empleados en sus depuradores no siempre serén idénticos a los utilizados sobre aplicaciones secuenciales. unidad 1 pROGRAMACION CONCURRENTE snes existe un interés creciente el desarrollo de apli- Tpaena parte de tas aplicaciones actuales se estructural ee desplegados en ordenadon diferentes Sstribuidas cuyos comPOnennes Te wcesitam agave dela rede También ost aparociendo nvatiples dispos 12 Meptables y con diseos dusey cris flash com ae Fito elementos (ables, “petbooks” os gn tanto con si envorno com> St otros dispositivas moviles ¥ eS igen maples actividades > °° plieaciones, tal conmo suHiel™ io de programacion concurren® Au ver age aro que Jos procesadores riatos tanto en tos ordenador personales Meadivionales como en exe NEYO ponjunto de ordenadores ‘ligeros” dispongan de vaultiples nvicleos. Com ello era inconvensente taeeeuei™ ‘hoy en dia no supon* paraiela de multiples actividades, t wa Wogica como Teal [A pesar de estos inconvente caciones concurrentes: Une se nltiples componentes Ge ued oe edie, son apjaetones cOneUree intercomunicarse ‘Hoe moviles con procesador tivpeiente capacidad de almaccunhs strabooks”, wtéfonos inteligEDteS ) interac habitus! que anto de manet sales . 4.3.2 Aplicaciones re! ales. aplicaciones coneurrentes re mnceptas Pres rasta et momento cn esta Uni Had, pero también proporcion’ Tp, base para entender SlEuno® ide los aspectos dads pris en Las unidades Posters ven tas que presentaros Tos problemas que Ps af como los mecanismos necesao® para so vee Ta programacion concustent jemplos de algunos ei entados Pasemos a ver seguidamente ‘Estos ejemplos iustran 10s or plant Jcionatlos: {12793}. Los aceleradores Jerador lineal Therae-25 UI Je radioterapia PF control del acel wan en los tratarnientos d ara algunos tipos 4€ See clertos cases de radiacin {rndiacién de electro- ag, principalmente) & Tas oF ccancerigenas. El rador Lineal desarrollado entre 1976 y 1982, tomando eros accleradores més antiEue™ (et Therac-é ye ). Ea ot Therae-25 ee pode Meiizar dos tipos de radiacion (ae do un amplio intervalo de sntensidades. Bn Tos Siatemas de contsol por tarde porando et aceterador © in el software, 1. Programa de Jineales se util ceéncer, eliminando med wes, rayos X ¥ Fayos Bel ‘Pherac-25 fue un aceler ‘omno base los diseiios de ‘Therac-20) clectrones y gamsne! ‘modelos anteriores, pan cualquier tipo 4 En el Therac-25 esa gestion aba en una sale aisiad® ferador una ver el pacie Tipo de radiacion a utiliza | M70 sistema tardaba slgunos = ia ese tiempo, em? )) abarcan aijor disponia de fo disfuncidn ( 1 se integr6 € Eloperador del s inte estaviese prePar” a potencia a em sondos en pezaba el todos los a de ‘acelet® ‘ware que evitel caso de error) Bl tratamiento se reali ‘stema confi- gguraba adectiadament® ef ‘accl ado. Para ello se debia especificar plear, fa duracién de 3 sesidn, Meponder a esa confguracién Un Teatamniento. El programa de ‘control se ijl sistema: posicidn y offerte eign de Tos eseusdos de ater na ver transcur tneargaba de monivoriZat in det acelerador, porencl gran, far en Tos tipos de ‘eomponentes Ja radiacion, PO! acién (a utilia radiaci6n més intensa), ete, Si se detectaba algin error leve (como pueda ti ligero desenfoque), el sistema paraba y se avisaba sl operador que pode a ngigr el tratamniento una ver corregida la situaci6n de error. En caso de rsor rave (por ejemplo, una sobresiosis de radiacion) el sistema paraba por completo-y debfa ser reiniciado. iste pfograia de control era una aplicacién concurrente, compueste Por eritiblos actividades, gestionando cada una de ella un conjunto diferente de vaaveatos del sistema. Entre las actividades mas importantes cabria distin- guir: | Gestidn de entrada, Esta actividad monitorizaba la consola y reoogia caer in informacidn de configuracién establecida, por el operador. Se ‘lejaba indicado en upa variable global si el operador habia finalizado su introduceién de datos “Gestién de los imanes. Los componentes internos necesarios para I generacign dele radiacion necesitaban aproximadamente ocho segundos era porcionarse y aceptar la nuova especificacisn del tipo de radiacion any intensidad. Como el Therac-25 admitia dos tipos de radiacién, en tino de ellos se utilizaban escudos de atenuacion y en el otro no. ‘Pousa, Existia una tercera actividad que suspendia la gestién de entrada vpiontras se estirviese ejecutando la gestiGn de los imanes. Con ello se inentaba que la gestiOn de los imanes pudiera finalizar Jo antes posible Se suponfa que cualquier intento de reconfigurar el equipo durante est pausa seria atendido cuando la pause finalizara, justo antes de icine al Fratamiento, obligando en ese punto a reiniciar la gestion de los imanes. Lamentablemente, existia un error de programacién en Ja aplicacion conc: earner tems de suspender temporalmente la gestiOn de entrada, cuando Hatecka la actividad de “pasa” no se legaba a copsultar si el operador sorta golietado una modificacién de Ia configuracién del sistema, Ash et eperador observaba que la nueva confguracién apareeta en pantalla (¥ si: nia que habia sido aceptada), pero el sistema seguia teniendo sus Hanes peptados a la configuracién inicialmente introducida. Se habia dado una eondieign de carrera” y el estado real del sistema no concordabe con lo que aparecta en la pantalla del operador. Esto legé a tener consecueneiis fatidi- aon algunos tratamientos (en ellos s¢ leg a dat la radiacién de mayor toe ctidad sin la presencia de los escudos de atenuacién): entre 1085 y 1987 se dieron seis aceidentes de este tipo, causando tres muertes (LT93} Fate es uno de los ejemplos més relevantes de los problemas que puede legar fa causar una aplicacién concurrente con errores en su diseio. “Servidor web Apache [Apal2]. Apache es un servidor veb que emplea Progra” serrign concarrente. Bl objetivo de un servidor web es Ja gestion de cierto sratinto. de paginas web ubicadas en esp servidor. Dichas paginas reso conte bles utilizando el protocolo HTTP (0 Hypertext Transfer Protocol URRENTE - Unidad 1, PROGRAMACION CON ven reatizar peticiones 0 estos servidores Pa {FGM*99). Los navegadores deb nestran en sus ventanes: irobtener el contenido de las péinas que me Tin un servidor de este tipo ineresa tener mips hilos de ejecucién, de mar "oro de ellos pueda atender a un eliente chin paralelizando sips clientes, Para. que In propia gestion de Jos hilos apache utiliza un conjunto de hilos (9 “thread ‘adicional que atiende inictalmente fo cada. una de ellas a los hilos del 10 de hilos ya genera: iciar el era q asi Ia gestion de rho suponga un alto’ esfuerz0, oat") en espera, coordinaos por an HO Mee petciones que vayan Tlegando, asociand tonjunto que queden disponibles. Al tenet 6 conjunt

También podría gustarte