UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAM3551.pdf · 4 Disminuir el costo tan...

67

Transcript of UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAM3551.pdf · 4 Disminuir el costo tan...

Casa abierta al tiempo

UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA División de Ciencias Básica e Ingeniería

Dirección

LICENCIATURA EN COMPUTACION P R E S E N T E

En cumplimiento con los requisitos que establece la legislación de ésta Universidad para el procedimiento de titulación, autorizo la terminación efectiva del Proyecto de Investigación I y I1 cuyo título es SOLUCION A PROBLEMAS CLASICOS DE LA PROGRAMACION CONCURRENTE, para los fines que a Yolanda Núñez Vides y Alberto Ortiz Abasolo con Matrícula 92322853 y 91323267 correspondientemente convengan.

A T E N T A M E N T E

“CASA ABIERTA AL TIEMPO”

MEXICO, D.F., JULIO DE 1998.

A S E S O R

C.C.P. Dr. Octavio Arzate Soltero, Coordinador de Lic. Computación C.C.P. Biblioteca de la UAMI

Av. Michoacán y La Purísima, Col. Vicentina, Iztapalapa, D.F. C.P. 09340 Tel. 724-463-01 Fax: 612-24-79

INDICE

1.1 Objetivos ............................................................................................ ~4

1-2 Antecedentes de la programauitin concurre-p)te ................................. 4

1.3 Conceptos sobre programacih concurr~t e ..................................... 5 1 3 * 1 ~ ~ i ~ p r o ~ a c i ~ n ........................................................................ 5 1 ,3.2 Progrmacih multitarea .............................................................. 5 f.?.? Cuncwencia ................................................................................. 5 1.3.4 Si~cr~nizacih y Gomtmieacibn ................................................... 5 f 3 . 5 Proceso ........................................................................................ 5 f . 3.6 Mensaje ....................................................................................... 5

1.4 Conceptos de Hardware y LSQftWaPe .................................................. 5 1.4. f ~ ~ l ~ ~ ~ r ~ ~ e s ~ ~ ~ r e s ....................................................................... 5 1 -4.2 ~ u ~ t ~ c ~ ~ ~ L l t ~ . d O ~ a ~ ...................................................................... 5 t A.3 Genemion de mutticomputadoras .............................................. - 5 1 -4.4 Clasificaciun de Diseños .............................................................. 5

1 .4. 4.1 Taonomia de Flym ............................................................. 5 1.4.4.2 Taxonomía de l a s computadoras MlMD .............................. 5

2.1 Historia del garalefismo ..................................................................... 5

2-2 Arquitectura de paso de mensajes ..................................................... 5

2-3 L a estructura del proceso .................................................................. 5

2.4 Computadoras paraffas .................................................................... 5

2.5 Caracteristicas de lenguajes paralelos .............................................. 5

2-7 Lenguajes de Programaciitin de Datos Paratelos., ............................. 5 2. 7.1 Definicih de lenguajes de datos pardebs ................................... 5

2.8 Atributos de Lenguajes de Datos Paralelos ....................................... 5

?VIM ......................................................................................................................... 5

3.1 fatroducuos a PVM.** .L. 5

3.1 . f ¿Quk es PVM? ............................................................................. 5 3 . f . 2 Componentes de PVM ................................................................. 5 3.1.3 Historia de PVM .......................................................................... 5

. . ........................................................................

3. 2 Configuraaos L- T

3 2 1 Variables de arn~3ente .................................................................. 5 3.2.2 Gunsofa . de PYM ......................................................................... 5 3.2.3 Arquitectura de las máquinas ....................................................... 5 3.2.4 Opciones del Hostfile ................................................................... 5

.. .....................................................................................

3. 3 ReaIizaci6rm de aplicaciones en PVM ................................................. 5 3.3. d Como trabaja PV ........................................................................ 5 3.3.2 Estructtm de programas PVM ..................................................... 5 3.3.3 Paso de mensajes ......................................................................... 5

3.3 3 . f Envío de mensajes ............................................................... 5 3,3,3.2 Recepci6n de mensajes ........................................................ 5 3.3 . 3 . 3 Prueba de mensajes ............................................................. 5 3 . -3 3 . 4 Sincronizacidn ..................................................................... 5

3.3.4 Compilar aplicaciones PVM ........................................................ 5 3.3.5 Metodos de Depuracion ............................................................... 5

.. 4*1 Exdus30n IWZIEtUa* ................................................................................ 5 St . 1. t Sec.ci6n critica ......................................................................... 5 4.1.2 Ejemplo del Cajero automatico .................................................. 5

4 2 Sincroluzacrun entre fareaS. 1 5 * . r .............................................................. 4. 3 Ausencia de progreso .......................................................................... 5

4.5 Lectores y escritores .......................................................................... 5

4. 6 Ef b a r b o ..r.jl.n. .......................................................................... - 5

1 1 Objetivos

Nuestro objetivo es estudiar y dar sohciba a los problemas tipicos de la progralnacibn concurrente apoyándonos en un software Itanado PVM (el cual fue instalado en estaciones de trabajo W X ) , así como familiarimos con el uso de hcha plataforma, Ademis, daf a conocer una sol-ucibn de dgbn problema referente al tema.

1 2 Antecedentes de la programacidn concurrente

El gran avance tecnofbgico y científico que se ha presentado en las 61timas dkadas en todas las áreas del conocimiento hummo ha sido impresionante, y el irea de la computaciún no ha sido la excepeiún, pues es la que ha tenido los avances m& significativos y sobresalientes ; para damos una idea mas clara del tremendo desarroffo de la coinputacíbn, podemos hacer w a comparaciún entre la ingenieria mechica y la ciencia de la coxnputacibn, mencionando que: " Si la ingeniería mechica hubiera avanzado tanto corno la comgutaci6n, en la a c t d d a d tendriamos autom-irdes que nos podrim traslada a grandes chstmcias en tu1 periodo de tiempo muy pequefio por stifo atgcmos cuantos pesos".

4 Disminuir el costo tan elevado de los sistemas de cbmputo Obtener materides más resistentes y aptos para la elaboracibn de memorias de almacenamiento más eficaces

I Confiabilidad

cfistancia. f

Efemento

Datos compartidos

Dispositivos compartidos

Comunicacibn

Flexibilidad

Permiten que varios usuarios tengan acceso a una base de datos camirn.

I Elemento

I Sofkwaxe distribuidos en fa actualidad,

1 1 La red se puede saturar o causar otros 1 I Redes

Éste trabajo esta enfocado a los sistemas distribuidos, en los cuales se puede expresar paralelismo a través de aplicaciones simultheas de m a simple operación a un conjunto de datos. Debido a que pueda desconocerse cierta terminología en cumto al tema, en la siguiente seccibn daremos algunos conceptos básicos, ai COMO tanbikn ~ ~ Q ~ & E E R ~ S temas necesarios antes de introducirnos en el tema principal.

1.3 Conceptos sobre programaciún concurrente

Es ía ejecucih de varios proganas independientes en WI procesador, en m mismo periodo de tiempo, alternando los lapsos de procesamiento entre tos distintos pro-=.

í.S3 Concurrencia

La concmencia es utl odelo lo conceptual de descompssicicin de . u n

problema en tkrminos de entidades interactuando en: padelismo red (varios

Éste trabajo esta enfocado a los sistemas distribuidos, en los cuales se puede expresar pardelism a travks de aplicaciones simdtheas de rma simple operaci6n a un conjunto de datos. Debido a qtue pueda desconocerse cierta terminologia en cwlto at tema, en la siguiente secciún h n o s algunos co~ceptos bhsicos, así como tambikn abordxemos temas necesarios mtes de introducirnos en el tema principal.

1.3 Conceptos sobre programacibn concurrente

Es la ejecucibn de varios progamas independientes en un procesador, en un mismo periodo de tiempo, alternando los lapsos de procesamiento entre los distintos programas.

1.3.2 Programaci6n muttitarea

A &€erencia de la muftiprogrmacibn que ejecuta programas independientes, fa progranacibn multitarea ejecuta diversas partes de un mismo programa. I 3 ést& un probfema se mapea a un programa desglosado en ffagmentos (txeas) que pwden ser vistos como nrlevos programas (procesos) ksta vez no independientes, sino cooperantes.

La concurrencia es un modefo conceptual he &scon~pssicibn de tu1

problema en tkminos de entidades interactuando en: paralelismo red (varios

, _ _ ~ * f :. I

.. . .r. PZ1 jl l +$iY***>:s,;!

procesadores o computadoras), seudsparalelismo (paralelismo simulado mediante un Único prscesador) o una csmbinac.i6n de ambos. Las entidades son procesos que cooperan entre si en pos de una soltrciún c m h . La sincroni-zacibn y commicaci6n (interaccibn) se realiza mediante variables compartidas o paso de mensajes.

1.3.4 Sincrunimci6n y Cornunicaci6n

Por memoria compartida: Se rediza a travks del llso de variables com~nes a los procesos, en donde unos escriben en ellas mientras otros l a s leen. Aqud, con la ayuda de se&iforos, regiones criticas y monitores se realizan algwos algoritmos para garantizas la exchsiijn mutua. Por paso de mensajes sincrono: Para que WI mensaje pase de -m proceso a utro, ambos deben acudir a un cita mientras alguno de los participantes falte, el que llego primerr, que&”& bloqueado en algunos C ~ S Q S y en otros mandadi una seiial, dependiendo del software empleado. Por paso de mensajes asincrono: Es similar al pass de mensajes sincr~no, pero en este caso, si un proceso llega primero no debe de esperar a que kgue el otro, ~610 se verifica si han llegado o no mensajes, y hayan o no lfegado mensajes, se sigue con la ejecuci6n. Llanada a Pfocedmientos Remotos (RPC): Un proceso exporta operaciones que pueden ser invocadas por otro prsceso, en donde fa llamada a u r n proceduruento es atendtda por un procesadtrr &ferente af que ahja a ef proceso hvocadur. Rendez vow: Es igml que la flmada a RPC, s6ío que en kste se debe de entabfar una cita con los procesos mediante instrucciones de entrada o acqtaci611,

Cuando se desmolla un sistema complejo es de gran ir~~puftancia estructurado, et sistema puede ser descompuesto en mtjdutos que ejecutan .hnciones e intmctúen uno c m otro a t m ~ d s de interEaces bien dehdas; a estos mbddos se les conoce como procesos.

1.3.6 Mensaje

Un mensaje es la unidad 16gica de infornracih ~ € e r ~ ~ l ~ ~ a d a entre los procesos. Un mensaje puede ser al@ nimero de bytes con una longitud que no exceda a fa memoria del nodo de envio y recepci6n de procesos. Enviar un mensaje etrtre procesos requiere que el proceso emisor tenga referencias del proceso receptor. Las referencias son representadas en las bc iones de mensajes como LB’S (identi€ícadores).

1.4 Conceptos de Hardware y SofWare

I .4.1 Multiprocesadores

Algunas man-daeturas comp-utacionaks ofiecen la incoqoraci61l de una segunda o tercera Unidad Central de Procesamiento (CPV) en ma computadora, fa cud proporciona mayores recmos.

CUanao varios CPtf‘s comparten ma unidad de almacenamiento principal se le conoce como multiprocesador. Un mdtiprocesador es una computadora que consta de un sistema de procesadores homogdneos y authornos, conectados a travds de -una red que se conecta ~ t e ~ ~ ~ ~ t e con un conjunto de mbdulss de memoria, tat que cada mbdulo esta disponible para todos fos procesadores.

Un muftiprocesador fueftemet~te ensanlbfado es aquel donde el retardo que se experimenta al enviar un mensaje de un procesador a otro es corto, y la tasa de wsmisi6n #e los datos, es decir, e1 nritnero de bits por segundo que se pueden trmsferir, es a h .

tas ~ u f t i c o r n ~ ~ ~ a d o ~ ~ son sistemas que esth compuestos de pequeiios ensambles de cornputadoras programables, llamados nudos. Una mdticomputadom es una computadora con múltiples CPU diseñada para procesos paralefos pero sin memuria compartida, T& comlllricacibn y sincronizaci6n entre sus procesadores puede hacerse mediante una red de pasos de mensaje como se ilustra en l a s siguientes figuras:

La manera en que 1% ~ u l t i ~ o ~ ~ i l t ~ d ~ r a s trabaja1 es € ~ ~ u l ~ d o un proceso. Asi como un circuito integrado puede contener muchas instancias de un cierto tipo de componente, la pr0gm;tcibn concwrente puede tener mttehas kstarrcias de uno o rnhs programas. Los programas pueden ser escritos en lenguajes convencionales como: C, Fortran, Pascal o Lisp; con librerias esthdar de hciunes o subnttinas de envio y recepcibn de mensajes, y O&%

mtitlas para la creaci6n y destfilccibn de procesos que penniten intermedia- resultados para determinar dinámicamente la distribucibn de computo.

Un proceso contiene su propio cQdigo, variables privadas y coordina éstas actividades con otros procesos para enviar o recibir mensajes.

La primera genemac.irin de mul€~co~p~tadum~ incttrye fa Cosmic Cube y fa mufticornputadom comercial hypercube (mas de 100 de éstas mkquinas estim actualmente en USO).

La segunda generaciún de las ~ - ü f ~ i ~ o ~ p u ~ d o r a s sun computadoras con más nodos y mucho más networks con paso de mensajes (1987).

Durante fa historia deí paralelismo se ha] propuesto Y;lfias arquitecturas y un gran nknero de effas se han desarrollado en fuma experimental. Por fo que se han buscado varias fsrmas de clasificar tos dtferentes dis&os en una manera general, para lo cual se han propuesto varias cl;ssificaciones, pero la mayoria de ellas no son lo suficientemente completas como para tomarlas como base,

DQS de las clasificaciones que han tenido mas relevancia son las taxonomias de Flynn y Share siendo fa primera la mas importante, por lo que s61o hmemos rehencia a ella,

1.4.4.1 Taxowmia de Flym

Flynn basa su clwificaci6n de arquitecturas paralelas en crimo las miquinas relacionan las instrucciones y los datos, para lo que emplea el thnino stream (flujo)s el cual defile como m a secuencia de itenzs (instrucciones o datos) que son ejecutados u operados por procesadores.

Ftrynn propone cuatro gmdes clasificaciones anafizmdo si el fiujo de instrucciones o datos son simples o múltiples.

Este es el modelo de la computadora convencional seriaf. de Von Neumann en fa que hay un ílujo de instrucciones, donde cada instnlccibn inicia ulna uperacibn aritmktica trayendo consecuentemente un flujo simple de &tos relacionando 16gicamente afpumentos y resultados,

Ejemplos: CDC 6600, CDC 7600, AMDAEIl, 47QV1’6

9 SIMB Single Instruction strew/’ Miíltiple Bata stream (flujo Simple de Instrucciones J flujo Múltiple de Datos).

En este modelo l a s computador;ls retienen un flujo simple de instrucciones y tienen un vector de instrucciones que inicia varias opmcicmnes, las cuales se encargan de controla- los procesadores. Cada elemento de este vector es visto como un fl.uer&ro de WI Bajo de &tos separados, éstos son flujos mirftiples de datos. Cada procesador tiene un n h e r o irnico por lo que se puede hacer referencia a un procesador por su nimero.

.+ MISB M-ídtiple Instruction Stream! Single Data stream (flujo M-btrtiple de Instrucciones’ flujo Simple de Datos).

Esta clase parece estar vacia puesto que esta irnplicito que -varias instrucciones están operando en un dato sirnultheamente. Sin embargo, Flynn condrciona que esto incluye organizaciones de flujos especializados usando flujos de irtstrcrcciones múltiples y una secuencia de datos simple,

Estos son meglos de procesadores que son desmollados para resolver problemas específicos, donde un reioj coordina las operaciones de movimientos de datos de todos los procesadores.

El flujo de instrucciones mhltiples implica la existencia de varias unidades de proceso de instrucciones y por lo tanto varios flujos de datos, esta clase incluye todas las fumas de multiprocesadores desde main h n e hasta meglos de micruprocesadores. En este ~tndelo los procesadores pueden ser programas independientes que son ieídos desde fa RAM c m h , dicho modelo es ampliamente empleado en os ambientes.

La plataforma de l a s corngutadoras MlMB es estrictamente m& poderosa que fa de las ~niiquims SIMD col1 ef mismo niimero de procesadores. Et modelo SIMD es m& adecuado para las ejecuciones bciondes con una estructura muy regular, las M1MB no son tan a&c~radas para resolver tales problemas.

Las maquinas MlMD puras nu tiene stlpedicie de hardware para garantizar fa sincronizaciún de procesos. Más adelante se mencionan dgunos tipos de arquitecturas " D .

Bbicamente Flym &-vidid a l a s computadoras en 1% foma ya mencionada la cual se puede ejemplificar en el siguiente diagrama:

+ Swhitched Pipelined Network

I

d b

Esencialmente hay dos tipos de procesadores paralelos MfhrfD disefiados con un gran número de procesadores:

M~~lticom~útador~ con memoria &stribuida. ~2 M-~ticum~utadoras con memoria compartida.

El primer tipo de arquitectura consta de un gzl ru'mero de procesadores identicos interconectados entre si. En este tipo de máquinas, no se tiene memoria compartida, es decir nu hay sincronkmibn glubal. La comunicaciirtl se lleva a c&o por paso de mensajes con la ayuda de ruf bus global de transmisicin. Por paso de mensajes, los datos o crjdigo posibles son transferidos desde el procesador A el pmcesador €3 viajando pur una secuencia de nodus a trauks de los vecinos mis cercanos, iniciando con el nodo A .y .finalizando con el nodo B.

La segrmda clase mhs importante de procesadores papalelos consiste de un conjunto de N procesadores idénticos interconectados via una gran red de trabajo cambiante para la manuria, la cual puede ser vista como un spiil dentro de N bancos, y compartirlos ei&e los N procesadores.

URO de los avances m& importantes de la pr-imera clase de disefio es la habilidad de explorar topologias particulares de problemas o algoritmos en den para minimizar costos de cumunicitciSn,

La hypercube es una mhquina. de la primera clase y en lo posterior , scilo haremos refkrencias a fa arquitectura de la nCUBE, dado que nuestro trabajo fue Besarrolfado en tula c o ~ n ~ u t a d o ~ perteneciente a esta familia,

Las hypercubes son procesadores pxadelos ensamblados basados en la red de trabajo nCUBE e introducida bajo diferentes nombres (Cosmic, cube, n- cube, binary n-cube, bo olea^ u-cube, etc,). Un grucesadur paralelo nCtBE cunsiste de 2" procesadores id&ticos, cada uno con su memoria propia e h ~ ~ C U ? E G k 3 d r ? S CUB I l YeChOS

La primer computadora corresponcbente a la familia nCtfSE file la 3200 (originafmente llamada nCUBElten), fa cud fue la primera computadora MEMD comercial con más de 1000 procesadores. Esta contenía 1024 procesadores de

En los sistemas computacionales, corno en cualquier irea en general, siempre se ha buscado el obtener mayores rendimientos con la menor cantidad de recwsos posibles. Es por esto que surge la necesidad de no dejarte todo el trabajo a ma sola entidad, sino repartirlo en varias enti&des, logrando asi la optimización de algunos recursos tales corno: tiempo, esfuerzo, dispositivos, etc,

El realizaf la prhctica de repartir el trabajo en varias entidades conlleva a analizar ciertos puntos de organización y repartición de los recursos, ya que el no tener regias bien marcadas podría llevar a un caos, dado que podrían surgir problemas al querer compartir los recursos o al tratar de i n t e r c ~ b i ~ información necesaria entre los procesos.

Lss sistemas concurrenks y sus derivaciones, donde entra el pardeiismo, es el estudio de la interacción que existe entre los procesos que atacan m probiema en comh al mismo tiempo.

En los primeros sistemas de computo, donde cada sistema estaba dedicado a un sblo proceso, eran frecuentes los tiempos muertos dado que sus componentes trabajaban a distintas velocidades, Para disminuir et desperdicio de r'ecursos surge la idea de concmeacia, empewdo con la multiprogramacibn y luego con fa progamacirjn multitareas (puntos que fileron analizados en el capítulo 1).

2.1 Historia del paratetismo

La historia del paralelismo en la arqoitectua de compr&dms, considera copno uno de sus principales puntos la redueei6n del tiempo requerido para

realizar ma operxiún, por ejemplo ma rnultipficacidn de punto flotante; en este primer periodo se produce fa primera computadora comercid, fa UNIVAC I que aparecen en 195 1,

A partir de 1950 se observa un presuroso incremerlto en la velocidad de las operaciones aritmeticas, gracias af mejoramiento tecnotljgico en fa eldoradcirr de los componentes del hardware con la introduccibn del paralelismo a todos los niveles arquitect6aicos en l a s cornputadoras.

Aim c w d o se ha fnencionado que el paralelismo en las c o ~ ~ ~ u t a ~ o r ~ surgilj en los 1950’ S, la primera referencia del diseiio de computadoras con ~ u 1

enfoque g d d o se dio en una apliicacibn de L, F, Menabrea, en fa biblioteca universal de Gknova en Q C ~ Ú ~ R de 1842, titulada “Resefia de la mhquina analítica inventada por Charles Babbage”.

Como segundo punto, fa economía del tiempo: para convencernos de esto, ssilo necesitamos recorrdar que ía multiplicación de dos nheros que constan cada uno de 20 figuras requiere a lo más 3 minutos, Be la misma forma cuando una serie grande de operaciones idénticas estin siendo ejecutadas, así como aquellas que se requieren para la formación de tablas numdricas, ta miupina puede estar ejecatando ciertas operaciones y a ía vez dar varios resuftdos af mismo tiempo, fo cual reduciri gradualmente la suma total de los procesos;

El enunciado anterior, no implica que &a habilidad, pafa ejectstar operaciones paralelas, file incluida en el diseiio fina! de fa máquina calcdadora de Chafes Babbage; sin embargo, esta cfaro que fa idea de usar paralelismo pafa mejorar la ejecucidn de una mhquina ocrmib hasta - m siglo despuks de la época de Babbage, cuando la tecnología avanz6 al nivel que hizo posible su impfementacih,

En la actdidad ef paralelismo se describe de ‘rm forma senda como: fa ejecucibn de varios procesos a! mismo tiempo.

Existen tres razones para creer que los lengiajes paralelos asumirán un papel importante en el filturo de fa computaeih paralela: + La posibilidad de resolver LUI nlimero significativo de problemas usando

a Es m& facil escribir progmas paralelos pafa algunos problemas que

F Los compiladores pueden convertir programas paralelos en crjdigu eficiente.

algwimos parafelos

escribir programas usando construcciones paralelas de bajo nivel

2.2 Arquitectura de paso de mensajes

La diferencia entre unos y otros procesadores pxdelas es que las msquinas de multiple-instruction multiple-data usan pasos de mensajes en vez de compartir variables para comulicaci6n entre. p r ~ e s o s concurrentes, Este modelo computational es reflejado en la estructura del hdware y sistema operativo, y es tambien la comunicacibn expficita y sincronizacih primitiva vista por el programador,

2.3 La estructura del proceso

n

2.4 Computadoras paralelas

Las computadoras paralelas son sin duda mhs potentes y ruts complejas que las computadoras de programacih secuencid. Una de las principales &ficrrltades en l a s computadoras pardelas es: Gcbmo puede uno m n a r acerca de tm prograna pafalelo que personifica concurrencia . y dis€~~buc i~n entre un gran nGmero de procesos?, si los programadores no pueden razonar entre el comportamiento de sus prommas, ,phno pueden stwoner que se produce M ~ i > & g ~ currecto?. Otro punto importante es tcbmo encontrar -m lenguaje para computadoras paraletas?

Una solucirjn a el problema de encontrar un lenguaje adecuado para computadoras paralelas es implantar un lenguaje de proganaci6n imperativo, tal como F O R T M o C, para que sea un compiladar paralelo que detecte y expiore el paralelismo en el prograna. La estructura de los fengmjes de progamaci6n convencional son modelos entendibles de computaci6n basados en el Fhjo de hstruccibn Simple de la computadora de Von Nettmann.

2.5 Caracteristicas de lenguajes paralelos

(a) Paralelismo implicito

w Programador

(B) Paratelismo explicito

I

2.6 Lenguajes con construcciones paralelas de bajo nivel

No es sorprendente que los lenguajes de progrmacibn paralela con construcciones de bajo nivel se han extendido, y por tanto han aportado a la historia de las computadoras paralelas. Desde los dias de la Cmy-I, la cud fue deliberada fuera de un cornpilador a m moderna computadora paralela, el desmolto det hardware se ha mantenido avante al igual que el sofisticado ssfhare, fLJn lenguaje de programcibn convencional actrecent6 con varias construcciones permitieado al wtnrio crear y siacronizaf procesos pxdelss.

Lenguajes de Programaclbn de un multiprocesador+ Un lenguaje de programación de un lnuftiprocesador debe tener construcciones para producir y

I . Los procesos, íos cuales identifican € a s partes de km programa que se pueden

2, La estructura del monitor, el cual garantiza la exclusih mutua del ac,ceso de

3. la condición, la cual permite fa sincronización de procesos.

ejecutar en parafelo,

procesos con &tos compartidos, y

Lenguajes de Programacih de una m ~ j ~ ~ ~ ~ ~ ~ ~ a ~ o ~ a . Una muftic.omputadon hypercub, programable en C atunentbdole construcciones de pasos de mensajes, requiere que el programador maneje un lote de mensajes. Como hemos visto, ma tipica primera generttcih hyperc-tho, tal cornu la nCUBE 3200, tiene un fi-ont end y un back end. Para implementar una aplicacidn, puedes escribir dos pm-: un programa host trabaja C Q ~ Q

termha1 VU, asignaciones a la Byperc-&o, cargas de nodo de programas, senidores como intermediario entre el usuario y los nodcrs, etc; los programas ejecutable en los nodos implementan el algoritmo paralelo, Cada nodo debe conseguir su datos inicial para ef host y!o otros nudos, hacer comp-utaciones, y enviar su porcitjn de respaldo del resultado final a ef host.

2.7 Lenguajes de Programacidn de Datos Paralelos

2.7.1 Definici6n de lenguajes de datos pamielus

interesante trabajo realiado en l a s Areas de progaznaci6n 16gca y lenguajes de progamacibn fimciunal que conducen a impfementaciones eficientes en m&quinas pmfelas.

Paralefismo expkito, Eí progmnador y eí cornpilador deben trabqja en equipo para producir un buen codigo paralelo. Esto es ridiculo para un prcrgmmdor que escribe una nueva apficacibn para ocultar el pardelimo inmerso con estructuras secuenciales de control, y entonces pedir aí cornpifador extraer ef parafelismo desde el cúdigo secuencial.

Enfoque l ~ a l de Is Compruhcih, Los íengajes asociados a un prscesador vi.lrtud con la unidad fundamental de paralelismo y el programador, expresan la csmputacibn en t w o s de las operaciones redizadas por 10s rprocesadores virtudes. tfil programa clave en generacibn de cbdigo para ~ ~ ~ i ~ o ~ p ~ ~ t ~ d ~ r a s ~ et cud no tiene memoria compartida, es deteminar como distribuir el dato entre las memorias individdes de los procesadores fisicos, Eí trabajo de los compiladores se simplifica enormemente cmds e1 ~ r o ~ ~ ~ ~ a d ~ r expresa la computacibn en términos de las acciones de los procesadores virtuales.

Ejecuddn Shcrsna de UBI Flujo Si-mple de Instrrtcdunes. El cage paralelo interno de procesadores virtudes ejectlta las mismas instrucciones en pasos cmdos, en otras palabras, el lenguaje es SaiaB (Flujo Simple de Instrucciones, Flujo de Mhítiples Datos).

Variables compartidas. Todo procesador Wuaí puede accesar a los valores de dgiln otro procesador virtual. La interacci6n entre procesadores es por medro de expresiones (mejor &cho mensajes).

2.8 Atributos de Lenguajes de Datos Paralelos

+ Versatitidad. Eí paralelismo es eí paradigma natwal para una gran fiaccibn de probfemas en ciencia e ingenieria.

+ Practicabitidad. Es ficil convertir programas secuencides de C en ccidigo C paratelo, porque los datos paralelos en C permiten estructuras arbitrarias de

cr>ntroi dentro de dominios selectos ~ ~ C ~ X X ~ Q S , Durante la conversi0a numilf del progama, es posible stlprimif m~ch;ls ftmoiones y purciones de muchos ciclos desde ef propma en C e insertar varios cambios.

Q Programabiiidad. tos progranas de datos paralelos son ink fkciies de escribir que ¡os pmwmas que usan construcciones de bajo nivef, porque los modelos sincronos de ejecuciisn son s61o plataformas de cuntrol: competir con condiciones y llevar a un punto muerto es imposible.

F Portabiiidad, E.s portable porque ius datos paralelos en C est&? basados en un modelo abstracto de alto nivel de comnputacihn paralela, p m p m de &tos paralelos en C son m&quinas m& independientes que pmgmas escritos en m lenguaje m& cerrado para el hardware subalterno.

e Ejecución razonabie. Los resultados experixnentafes confirman que los pr~gmmas de datos paralelos pueden llevar a cabo ~ t l ) . dto awnento de productividad en computadoras " D . En la mayoría de los casos los compifadores no generan código que se ejecute tm rapido como programas escritos a mano en un lenguaje de bajo nivel,

3.1 Introducci6n a PVM

3.í.í ;Que es P’C’M?

4. La comwica.citm entxe ías estaciones de trabajo en la rnhq~uina viftual

5. En w1 software de dominio phblico, acil de instalar y de usar,

6. Para redizar la kstalaci6n de PVM no se necesita ser un super usuario,

(generada por PVM) es a través dei paso de mensajes.

cualquier usuario firmado puede hacerla

Miles de personas drededur del mundo est& usando PVM para resoher probiemas científicos, médicos e industriales, sumados a los maestros que fo utilizan como herramientas para enseñar prugramacidn paralela, Cm sus miles de Usuafios PVM se ha convertido en m esth8ar defacto p a fa progrmaci6n distribuida. Una caracteristica que ha hecho a PVM popuiar es que es un software muy porthtif, Otra caracteristica relevante de P W es que actualmente implements el esquema Round R o b para asignar tareas a los procesos.

Como ya se mencionb PVM es un sofiware poPtAtil, el c - d cone en los servidores Sun Sofaris 2.x, el servidor Silicon Graphics sg y el Paragon de Intel, mas adelante mencionaremos l a s arquitecturas que sqmta.

El sistema de PVM esta comp-uestos de ~ Q S partes principales, La primer parte es un demonio que reside en todas las computadoras que componen fa mdquina virtoral, Pan& esta cfiseiiado para que cualquier usuario con un begin

vdido p-w& i n s t a h este demonio en una rnhquina, Cümdo ' u n usuiuio quiere correr una aplicacibn de PVM, primero crea una mkquina virtual para inicializar P W ? las aplicaciones B W pueden ser itlicialiaadas desde un prompt Wfx desde cudqüiera de los host.

La segunda parte del sistema es una biblioteca de rutinas, denominada iibpvm3 .a.

Demonio de PVM

* E1 demonio de PVM (pun&) tiene como funciun coordinar las comunicaciones entre procesos y guardar informacirin sobre los procesos chstribuidos,

0 pmd3 debe de echarse a ;in& en to& í a s máquinas de sistema distribuido

* S610 es posible tener u1 prilm83 por ~tsuario p por mliqrrina. Los procesos se comunican entre sí o a travhs de íos demonios.

que se vaya a usar.

0 1ibpwn3.a es un conjunto de €unciones de inteffaz entre PVM y los lenguajes

* Dentro de la biblioteca de PVM existen rutinas pam (C/C++ y Fortran).

Iniciar y terminar procesos Enviar y recibir mensajes Sincronim procesos Cambiar dmhicarnente fa configuracih del sistema distribuido.

Las rutinas no mandan mensajes directamente a los otros procesos, toda cmunicaci6n que se pueda generar es a tmvks de los d m ~ n i ~ s . Libpvm3.a por default, debe de estar instalado en $MOME/pm3flib.

0 Otras bibliotecas usadas por PVM son lib€pm3.a y iibgpm3.a

En esta SeCciSn mostfxemos ma fisga de te&= 1% versiones de PVM desde febrem de 1991 hasta agosto de 1994, tanbikn se muestran 10s avances aportados en cada versih. Si alguien esta interesado en alguna versión de P W m particdar, la puede encontrar y obtener libmnente en internet en la pQgina de netlib.

PVM 2.0 (febrero 1991 ) Compfementación de la parte experknentaf (PVM V1 .O).

m Se complementa la especificación e hplementacih para mejorar la pmtabilidad y robustez-

PVM 2, í (marzo 1 9 3 ) * Cambia los mensajes entre procesos al fonnato XDR para mejorar la

a Adiciona un interprete d e n o ~ a d ~ Consoh, ei cud manda al demonio portabilibd de origen en ambientes heterogheos.

pvmd.

PVM 2 2 (abril 1991) El formato de mensajes pvmd-pmd cambiado a XDR. Funciones get y por vectorizadas para mejorar fa ejecucibn.

* Funciones publicas

PVM 2-32 (junio 1951) Mejorar fa falta de password iniciando via rshkcmd. Adiciona opciones por host para el fonnato del archivo llostfife:

Preguntar por password Especificar altemamente login

* Especificar altemamente la ubicacih del ejecutable pmd. Versiba de protocolos pvm-pvmd verificada para imnpeh mezclas en la

Adiciona soporte para los mensajes de enteros largos y coztos. Adiciona el comando reset a p-md para resetea= la m ( m i q ~ a virtud).

* Se puede especificar como host papa crear el host local.

interoperabilidad de versiones,

PVM 2.3.3 (julio 1991 ) Agrega e1 co1nando “ban”’ para verificar Se adiciona la funcian pstatus() en libpm para obtener eí tamí%o de la maquina &tual .I

PVM 2-4.0 (febrero 1992)

PVM 3.1.3 (junio 3993)

PVM 3J.4 (julio 1993)

PVM 3.1.5 (agosto 1993)

.PVM 3.2 (agosto 1993) h a t o s de memoria distribuida unidas con los puertos originales de

UNIX. Puertos ipicíuidos 1860, p 6 o N , CMS. Archvos conf/&ch,def creados para la configwacicin por mhquina para

pvmd adiciona nuevos hosts esclavos en paralelo para mejorar fa ejecucibn. stdout y stderr de I s tareas pueden ser redireccionados a una tareakmsola. La opcibn OVERtOrrD HOST permite correr fa InSlquina virtual sobre et mismo low para cubrir, es decir, el usuario puede tener mWtipIes nivefes de la mhquina tirtd. Nuevo príntf que empaca y desempaca rutinas pvrngaek€() y pvm-unpack@.) disponible para propmadores de CK++.

* Adxiona rutina para empacar y desempacar enteros sin signo. Ambiente pasado a través de spawn(), controiado por la variable

* mejoras y cxacteristicas ahcionactas pafa programar la consola

pvmdy 1ibpum usmtasvafiablesde mhientePVM ". ROOTy PVM - ARCH

mejorar la portabitidad y el tamaño de tos paquetes.

PYM EXPQRT

PYM.

PVM 32.1 (septiembre 1993) Seis extensiones para la correcciijn de errores iiberados para pvm 3.2

PVM 3.2.2 (septiembre 1993)

PVM 3.2.4 (novimbre 1993)

PVM 3-2.5 (diciembre 1993)

PVM 3.2.6 (enero 1994)

PVM 3,3,0 GUNS 1994) La variable de ambiente PVM ROOT ahora puede ser puesta: $HOfEipvm3 su longitud no es asumida, Puertos de memoria comp,?fti& unidos oun W I X y puertos de memora distribuida. Los puertos incluidos son SUNMP y WIMP. Nuevas funciones pvmgsend() y pam PRECV(), envío y recepción de mensajes a1 buffers de datos naturafes, pamitiendo implmtaciones mis eficientes en máqrtinas como multiprocesadores, Manejador de recursos, interfaces hoster y t ~ k e r definidas para permitir una tercera parte depurador y lnanejador de recursos pan usar PVM. XPVM, una intehz de usuario grafica es liberada. kldkiona rutinas de cornunicacih colectivo p m la biblioteca de grupos. La fimcibn de libpvm pvmcattChout() recoge la saiida de los procesos hijos, la s&da pttede ser dmccimada o dgün archivo (ejemplo stduut), Nueva ~pcibn del Bostfile “wd=” pone el directorio de trabajo de pmd. Las variables de ambiente se amplim c-tr;urdcr se configiira ep= o bp= er1 el hostfile.

-

PVM 3.3.1 (junio 1994) * Extension para la correccibn de errores para PVM 3.3

PVM 3.3.2 (julio 1994)

PVM 3,3.3 (agosto 1 9 4 )

3.2 ConfiguraciBn

PVM necesita de dos variables de ambiente cuando inicializa y GOIE la maquina virtual, la primera es PVM ROOT y la segunda es PVM-ARCH, que se describirán a continmcih junto con utras variables, Las siguientes variables de ambiente son u s a h por PVM y se pueden utiiim para CQII~~~WZE el ambiente de PVM. Si se decide poner dichas variables es recomendable ponerlas en el archvo .ash= u .profile.

-

La ruta donde: son instalados íos programas del sistema y las bibiiutecas de PVM, por ejemplo IrrsrllocaL~pvm3 o $HOMEfp'm3. Esta variabte debe ser puesta en cada host donde PVM es usada Esta 110 toma un vafur por defautt,

PVM - .EXPORT

PVM - DEBUGGER

Depurador a usar cuando p - m " spawn() es ííana&. con PmTasmebug. Ef default es $PVM - ROOT!lib!debugger.

Las siguientes variables son usadas por PVM internamente. Con fa excepci6n de PVM ARCH, sus valores no serh modificados, estas son s61o Urf0rm;ttit~;lts.

-

Ef nombre de h arquitectura del host en ef cud esta puesto PVM, utilizado para distinguir entre maquinas con diferentes fonnatos de ejecutables (a.o.ut). Cgrias de u1 programa para difaentes arquitecturas son instafados en directorios paralelos ííamados por ías arquitecturas PVM,

PVMEPID

Retiene el proceso id esperado de ma tarea creada por p w ~ spawn() ejecutada por el pvmd. La tarea utiliza este valor para identificarse e¡kt misma c m d u se reconecte a gvmd,

PYMTMASK

3.2.2 Consola de PVM

La csnsoía de PVM, limada p m , es m stmd alone el c-wi permite it. ef usuario interactivanente inicial, consukar y modificar la mkquina virtuaf. La C Q R S ~ ~ ~ puede ser inicialiada y detenida múltiples veces en alguno de los hosts en la mhq-uirra virtud sin afectar a PVM o a alg-ma qiicaci6n que pueda estar comiendo.

Cuandu el demoniu de p-m comienza, 61 delemina si PVM ya esta corriendo y sino automhticarnente ejecuta el demonio de p w d 3 en este host, pasando p m # a las opciones de la tinea de comandos y eí hostfile. De esta manera pwn no necesita estar cofp.iendo pasa iniciaíi;r;af la consola. Una vez inicializada la consofa, esti muestra el siguiente prompt:

PW’ PVM puede ser monitoreado y modificado desde kste prompt.

Add hostnmefs) Adiciona hosts a la maquina virtual.

S&tBV

Despliegdcoloca en una posici6n especial l a s variables de ambiente.

Spaw [opc] a.out Realiza las siguientes tareas:

3.2.3 Arquitectura de las rndquinas

En PVM, se asigna a. las mdquinas una pequeila cadena para identi.ficar su aquitectufa (esto incluye tipo de sistema operativo, asi como tmbien tipo de CPtt), Los tipos comrinmente predefinidos en la distribztci-cin son:

3.2.4 Opciones del Hostfile

Ei hostfile (, .P~Qs~s) d e h e la configwaeiSa inicial de los hosts que PVM combina en ma máquina virtud. También contiene infomacirjn acerca de los hosts que el usuario desee ahcionar posterior a la configwacib, S610 es necesaria una persona pxa instalar PVM, pero c a b ~isuariio de PVM pdria tener su propio hostfife, el cual describe su propia miquina virtual personal. El hostfile en su forma simple es justamente una lista de host names w10 en cada tinea.. Las tieas en blanco son ignoradas, y tas que inician con un Y” son fineas de comentario.

Varias O P C ~ O I I ~ S pueden especificarse en cada linea despuks del hostname. Las opciones son separadas por espacio en blanco. lo=ucerid

tu login es usado al dar de atta ía máquina. Te permite especificar un login alternativo para este host; de otra forma

SO-PW Esto es usado en IQS casos donde tienes m userid diferente y password

en un sistema remota. PVM usa rsh por default para dar de dta fas p m d remotos, pero cumdo pw es especificado, PVM usar6 rexect) ai momento,

&=location of ptmd

host, Esto es usado si tu quieres usar tu copia personal de pmd, Te pennite especificar una ubicacibn diferente que la de default para este

ep=psths to mer executabks Te permite especificar una serie de rutas para buscar los archivos

requeridos a generar en este host. Mitltiples rutas son separadas por dos puntos. Si “ep=”no es especificado, entonces PVM $ ~ U ~ ~ p ~ 3 ~ ~ ~ ~ ~ V M - ~ C ~ para l a s tareas de agficaciún. sp==vahe

Especifica la velocidad computational relativa de el host comparado cor1 otros hosts en la configuracibn. El rango posible de valor es l -1 000000 coa 1000 como default.

wd=workhg duectory

en el host S& ejecutadas. POT default es $HOME. Especifica un directorio de trabajo en el que todas las tareas generadas

ip=hostname Especifica un nombre alternativo para resolver la direccion IP del. host.

Si se req-uiere poner alguna de estas opciones por defauft para ma serie de hosts, se pueden poner estas opciones en una simple linea con WI u*” en los campos del hostn;une, Los defaults afecta& a los siguientes hosts hasta que estos s e a mulados por otras €heas.

tos hosts que no se quiera1 en la coafigwacic$n iniciat pueden adicionarse despuks especificando en el lmstfíie d principio de estas lineas con un ? k ? * >

383 Realizacibn de aplicaciones en PVM

3.3.f Corno trabaja P’C”

Los procesos PVM se comunican WIO con otro a travCs de los demonios, los cuales son responsables de rutear los mensajes apropiadamente. tos procesos nu se comunican con otros directamente, nu importando si estos esth en la misma o en otra estaci6n de tfat>a+x Una estaci6n de trabajo confirma si esta actuafmente en la mhquina virtual al verificar si ésta tiene un demonio presente u no. Si e! demonio en una estacitin de trabajo se suspende, entonces todos 10s procesos que est& corriendo en PVM son perdidos y no pueden ser recuperados.

383.2 Estructura de programas PVM

El &&go de PVM no es di€erente de [email protected] obos progma en C o F~lrtran. El encabendo dei archivo PVM debe ser anexado d inicio del programa para permitir llama- las funciones de PVM (Nota: el encabezado en encerrado en comillas (“3 dado que el archivo del encabezado reside en et dmctorio PVM y no con !us encabezados de ;uch.ivos estánda-),

Los progmas de FVM son iguales a los programas nomales de C, donde fas funciones de PVM son llamadas de la misma forma que otras finxiones tales cornu l a s hciunes esthdar de E!S.

Las aplicaciones PVM usualmente tienen un fl~jo sec-uencid como sigue:

. ..

Proceso hjo: Firmarse a PVM -+ Recibir &tos de otras tareas i, Oc-uparse de iss

datos recibidos -+ Enviar ios resuitados a las tareas apropiadas "+ Salir de PVM,

A contimsacibn se muestra un ejemplo que csrzsta de dos partes, programa padre y programa hijo. Myhetfo puede crear myhello other en alguna arquitectura, en d@n nodo m P W .

-

/* Programa Padre ** Este progrma prueba el pasa de mensajes entre tareas 'i

I /* Progama Hijo ** Esta es la tarea esclavo creada por myhelfo */

3.3.3 Paso de mensajes

Los ~ ~ ~ d e f ~ s de p~-~g;u.na~iSn de PVM esth basados en ef paso de mensajes. El uso de los mensajes pennite a los procesos en PVM comunicarse uno con otm y así compartir iflformaciun,

1. Crear un buffer de merlsajes 2. Poner el dato en el buffer de mensajes 3 , Enviar el mensaje a uno o más procesos

Cada vez que km nuevo mensaje sea enviado se crea ~IJR nuevo BuBer para retener ef mensaje, fo cual es una practica normal. Un buffer de mensajes es creado d ilmar fa siL~ente hcidn:

las datos son copiados at buffer en cm proceso conocido como empaquetamientu. Existe una fwncibn diferente para empacar por cada tipo de dato C, usado por empaquetador para variables simples y arreglos.

tiif es eí tid (identtificador de la tarea) deí proceso destino y msgtag es fa etiqueta deí mensaje, este debe tener un valor mayor o igual que O. Las etiquetas del mensaje sen usadas para identificar los tipos de mensajes,

pvm - s a d es asincrono, E€ proceso puede continuar su operaciún tan pronto G O ~ W ef mensaje sea enviado, este no espera a i m reconocimiento de que el mensaje ha flegado a su destino.

Ejemplo:

3,3,3,2 Recepcibn de mensajes

T Q ~ u ~ los mensajes que kan sido enviados tmbikn tienen que ser recibidos, esto se h a ~ e en dos pasos:

f. Recibir eí mensaje 2. Extraer los datos del buffer.

Funciones receptoras de mensajes

Tres funciones básicas sun proporcionadas para recibir menmJes, estas suit:

pvm - ~ C C Y es un receptor bioqueadur (o sincronizador). Este espera hasta que un mensaje con etiqueta msgtag anibe del proceso tid. Este regresa ef h$d del buffer ef cual contiene el mensaje,

pvrn ~ C C Y es un receptor no Bioqueador (o asincram). La funcibn regresa ime&atamente en caso de que un mensaje arribe o no. Ef d o r regresado es el b@d d e l mensaje, si este es i o O, sino espera mensaje,

m+s@ag -~ y tid pueden toma- el valor -f. Este actúa como ma. liave de acceso libre, permitiendo iguaiar con cualquier etiqueta o tid respectivamente.

Una vez que tu1 mensaje ha sido recibido, los &&os tienen que ser extraídos del buffer (o desempaquetados). Hay una fimcibn de desanpaquetamiento para una funciun de d e ~ ~ a 4 ~ e t ~ ~ t ~ .

Ejemplo:

Verifica si el mensaje con etiqueta msgag ha m-ivado de la tarea tid. Como con fa fknci6n receptora, ambos parhetras pueden aceptar el valor -f. Esta hciim prueba la existencia de d g h mensaje sin realmente recibirlo, al hacer su b-uEet. et buffer de recepciijn activo.

PVM no soporta la sincronizaci6n expficitamente, pero puede implementme usando mensajes vacios.

PVM, especificamente no soporta la conlwnieacibn shcrona, Si se requiere, éSta debe ser expficitamente proporcionada por el propunador, lo cual puede hacerse implmatmdo el siguiente c6digo:

Proceso receptor

El proceso emisor es bloqueado por la llamada a pvm - recv hasta que este recibe el mensaje vacio con etiqueta A C X ' desde ef proceso receptor. El proceso receptor es bloqueado automhticamente por la Hanada inicial it

pvm - rtcv y continúa automhticanente despuks de la limada apvm - seati.

3.3.4 Compilar aplicaciones BVM

Un progama en C que hace llama& a funciones PVM debe ser ligado con fa biblioteca tibpvm3.a. Si el programa también hace uso de gnpos dinámicos, &te debe ser ligado a la biblioteca libgpwn3.a antes de libpm3.a. Un progama Fortran que use PVM necesita ser ligado con libQvm3.a y libpvm3.a. Si éste usa grupos dinámicos, entonces necesita ser ligado a Iibfpvm-7, Iibgpvm3 y libpvm3 en ese ~rrten.

Por ahora PVM sctio soporta C/C++ y Fcsrtr;m. Los usuarios pueden hacer sus aplicaciones PVM mientras que una arquitectura independiente hace los programs, esto se llama armk y es proporcionado CQII B W , ,4Unk

automáticamente detecta qué tipo de arquitectura esth comiendo e incorpora l a s bibfiotecas necesarias.

En general la depwacibn en propamas paralelos es mmho miis dificil que la depmci6n de progmmas en serie. No s61o hay mks procesos corriendo, sino que su interaccih puede tambih causar emres.

La experiencia ha marcado los siguientes tres pasos pafa depurar ios programas PVM:

Primero, si el posible, comer el progama cornu up1 proceso simple y depurarlo como cualquier programa serid. El propósito de este paso es atrapar

indices y enores 16gicos no relacionados al paraleIismo. Una vez que 6stos errores son corregidos pasarnios d segunda punto.

Tercero, correr los mismo dos a c-mtro prscesos a travbs de varias máquinas. Et propósito de éste paso es verificar los errores de sincronizacibn que sun producidos por los retardus de la fled.

Si bien los progamas concurrentes $an solucibn a tm gran nímero de problemas, tanbien dan la pauta d origen de otros. A continuación se muestran algunos de 10s p b l e m a cihicos de la progmacidn concurrente, de 10s cuales solo dxernos sof~rcibn al dtimno tipo de problema.

Se presenta UTI problema cuando se intenta accesx por miis de UTI

proceso al mismo tiempo, un recurso compartido. Para resolver este problema se debe desmoilar m mecanismo para poder accesar af recmo, el cual impida Ia entrada de ~ ~ O C ~ S Q S mientras O@Q este utilizando ei recmso, a este ~ne~mismo se fe llama excfusibn mutua.

La excílrsibn mntm necesita ser aplicada sbio mmdo m proceso accesa a datos compartidos; cuando los procesos ejecutan operaciones que no esten en conflicto entre sí, debe permitir a los mismos proceder de Eorrna concurrente.

Cuando un proceso esth accewdo datos compartidos se dice que el proceso se encuentra en su sección critica (o region critica). Para prevenir et tipo de problema experimentado en fa excfusibn mutua debe asegwme que, c m d o UB proceso esté en su seccibn ckticq tudos íos demis procesos (o al menos aqueltos que tengan acceso a los mismos datos compartidos) sean excluidos de sus propias secciones criticas. Mientras m proceso se encuentre en su seccibn critica, los demhs procesos pueden continuar su ejecucibn fuera de sus secciones criticas. Cuando un proceso abandona su seccion c.ritica, entonces debe pemritírsefe fa entrada a otros procesos que esperan entrar en su propia seccicin critica (si hubiera un proceso en espera). Estar dentro de una seccitm critica es m estado muy especial asignado a m proceso; quien tiene acceso exclusivo a fos datos compartidos y todos los dm& procesos que necesitan accesz a esos datos permanecen en espera. Por tanto, las secciones criticas deben ser ejecutadas io mks ripido posible. Un prograna no debe bloqueme dentro de su seccibn critica y l a s secciones criticas deben ser codificadas con todo ctridado para evitar, por ejemplo, la posibilidad de incufl-if en G ~ C ~ U S infinitos.

Supongamos que se tiene en una cuenta en el banco $1 7530 y al mismo tiemgo se desea reatizar LEI deposito de $2000 en la caja de una sucursal y pa- otro lado en w~ cajero se desea retirar $3000, al findizar las operaciones bancarias se deberia de tener en ta cuenta la cantidad de $16530, pero si no existiera excíusibn mutua se podria presentar eí siguiente problema,

Supoagamos que eí orden de ejecuci6n de 1s operaciones es eí siguiente:

Deposito Retiro t.* ... Pedir monto ($17530) Pedir monto ($17530)

Guwda resuitado ($1 9530 j Guardar resultado (1 4530) suma ($2000) Restar ($3000)

*f. t.*

Si el proceso de depositar es el ultimo en gtiaf&v el resultado, el znoz~to es de $19530, si el proceso de retiro es ef ultimo en guardar ef resultado, se ten& $14530. Los dos resuitados obtenidos son errdneos por lo tanto se debe de buscx una sohci6a a este problema.

Para evita este problema primers debe de entfx proceso a la seccih critica y después otro, no importando cud entre primero y cual después.

4.2 Sincronizacidn entre tareas

Este problema surge c -mdo 2 tareas necesitan coorhar sus operaciones en respuesta a una señd que ha dado la otra. Este tipo de tareas se dice que son intmctivas ya que la respuesta que una tarea va a dar, depende de h#os que haya recibido anteriormente de otra. Una csndicibn suficiente para que 2 tareas no sean interactivas es que no alteran las mismas variables de entorno, tanto variables del sistema, como ree,mos del sistema.

4.3 Ausencia de progreso

Se dice que un proceso está "e-hausto" si nu puede progresar en su canina porque le hacen falta recursos que están en poder de otro proceso. Estos problemas surgen sobre todo cuando se trata con prioridades ya que es posible que ' u n proceso de muy beja prioridad se quede estancado para siempre si Ifegan demandas de procesos de mayor prioridad que él.

Se dice que un conjunto de procesos está interbloqeado si cada uno está esperando que ef otro libere un recwsu que necresita para seguir.

4.4 Productoresfconsumidores

Dado un conjmto procesos cooperativos alg-uaus de los cwles prodwen datos (Productores) que otros constunen (Consumidores), existiendo una posible disparidad entre las velocidades de produccihn y consumo, se debe de

idear un prot~~ofo de sincronimci6n q-ue permita a producto y consumidores operar concurrentemente a sus respectivas velocidades de servicio de taf modo que los datos producidos se conswnan en et orden exacto en que son producidos.

Las caracterrr’sticas que debe tornar en cuenta fa sofucirjn, son verificar que la tarea consumidora no pueda recoger nada hasta que la productora la produzca, de i g d forma la tarea productora debe almacenar los datos llasta que a la consumidora fe sea posible retxarlos.

4.5 Lectores y escritores

Lectores y escritores es otro problema cfrZsico en fa progmacibn concurrente, en este problema tos procesos es th clasificados dependiendo de la forma en que utilizan el fecurso, como lectores o escritores.

UR lector llunca moslrfica fa estructura de datos cumparticfa, mientras que un escritor puede tanto leerla como modificarla. Una serie de lectores pueden UtLtiaar la estructura de datos colnpartida c.uncttn;”efltmente9 ya que no importa como se mezclen, pues nunca poddm comprometer su consistencia. Los escritores, por otra parte, deben obtener acceso exclusivo a los datos, es decir, no pueden entretazarse de f~rma segura ni con tos tectmes ni con otros escritores. Como por ejemplo m sistema de resernaciones en ma línea akrea, con muchos procesos en competencia que intenten leer y escribir en ella. Se puede aceptar que varios procesos lean fa base de datos al mismo tiempo, pero si uno de los procesos est& escribiendo (es decir, modificando) la base de datos ninguno de los demks procesos deberia tener acceso a ksta, ni siquiera los lectores.

4.6 El barbero dormil6n

otfo de los problemas clásicos de la grogmaci6n concmente ocurre en una peluqueria. La peluquería tiene un barbero, una siila de peluquero y n sillas gam que se sienten los clientes en espera, si es que los hay. Si no hay clientes

presentes, ei barbero se sienta en su silia de pei-uyuero y se dueme. Cuando llega IU) cliente, este debe despertar al bahero domi16.n. Si llegan mis clientes mientras el barbero corta el cabello de un cliente, ellus se sientan (si ’hay sillas desociy>a&). El problema consiste en programar ai barbero y a ios dientes para que no entren en problemas de competencia.

4.7 Et problema de los fil6sofos comensales

Este es UKI de los problemas más cfhicos de fa progmaci6n concurrente, por fo que después de la redaccih del problema se da la solucion basada en PVM, el cud es tratado en el capitulo anterior,

Cinco filQso€os pasan su vi& pensando y comiendo. Los filbsofos comparten una mesa circular rodeada por cinco sillas, una para cada uno de eifos. En el centre, de fa mesa hay un piato de ~ Q Z : y pur cada filusofo hay un plato y un paiitio ( ver figura 4, I), t6mese en ctlenta que cada €ilSsofo necesita dos pafiffos para poder corner el ~ Q Z . Cuando un fif6sofo piensa, no interactria con sus colegas, Ocasionalmente, un lilbsofo tiene hambre y trata de coger los dos palillos que están m& cerca de él (ios paliiios colocados entre 61 y sus vecinos de la derecha y de la izquierda). Un fil6sofo solo puede coger un palillo a la vez y ? obviamente, no puede ser el que está en la mano de un vecino, Cuando ufl fif6sofo immbriento tiene sus dos patilos ai mismo tiempo come sin soltarlos. Cuando termina de comer, coloca ;znnb~s palillos sobre la mesa y comienza a pensar otra vez,

El problema de los fil6sofos comensales (comelones) se considera un problema de sincronizacibn G ~ ~ S ~ C O , pero no por su importancia prxtica sino porque es un ejemplo de una gran clase de problemas de control de conc.mencra.

Crear wra infiaestmctura de este tipo resulta muy costosa e implica que se invotrrcren a recursos especializados en desarroltfo y mantenimiento; es por ello que l a s Main Frame continúan abarcando gran parte del mercado debido a su sblida infkaestmctura, ademhs de contar con m a mayor ~ ~ ~ ~ ~ i í i d ~ d de recursos, 10 at implica menores costos.

Bibliografía