universidad autonoma metropolitana unidad …148.206.53.84/tesiuami/uam7056.pdf · del tiempo de la...

112
1 UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA SERVICIO SOCIAL PROYECTO TERMINAL DE INVESTIGACION 147685 ASESOR: LIC. EN COMPUTACION PROFRA. ELIZABETH PEREZ CORTES /' ALUMNA: SRITA. MARTHA ROS RETE AGOSTO DE 1992 / / " .. . . . ". . .. .. "l._.""-. "." . . __. " . .

Upload: lecong

Post on 16-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 1 UNIVERSIDAD AUTONOMA METROPOLITANA

    UNIDAD IZTAPALAPA

    SERVICIO SOCIAL PROYECTO TERMINAL DE INVESTIGACION

    1 4 7 6 8 5

    ASESOR: LIC. EN COMPUTACION PROFRA. ELIZABETH PEREZ CORTES

    /'

    ALUMNA: SRITA. MARTHA ROS RETE

    AGOSTO DE 1992 / /

    " .. . . . " . . . . .. "l._.""-. "." . . __. " . .

  • PROYECTO TERMINAL Y SERWCIO SOCIAL

    PROG3UJMACION CONCURRENTE

  • UNIVER IDAD AUTONOMA METROPOLITANA

    UNIDAD IZTAPALAPA

    SERVICIO SOCIAL PROYECTO DE INVESTIGACION

    PROGRAMACIQN CONCURRENTE

    ASESOR: LIC. EN COMPUTACION PROFRA. EL';ZABETH PEREZ CORTES

    L ~ L U ~ A : SRITA. MARTHA ROSA CASTAEDA RETE

    AGOSTO DE 1992

  • SERVICIO SOCLAL

    CQNCUWRENTE

  • PRCGRAivlACION CONCURRENTE

    indice INTRODUCCIOH

    I.SISTEKW CPERATIVOS.

    1.i sistemas operativos de hf~!"iptogr~cin.

    11. mzocEsos. 11.1 Multiprocesa.

    II.2 Gestion de procesos.

    II.3 La convivencia entre procesos.

    11.3.1 Sincronizacin entre procesos.

    11.3.2 Seccin Crtiaa.

    11.3.3 Exclusin Mutua.

    11.3.4 BLoqueolDespettar.

    11.3.5 Abrazo M~rt61.

    111. CQMONICACION Y SINCRQNSZACLON EXTRZ PROCESOS.

    111.1 bfecaniamos de solucibn paza 10s problemas

    programacin concurrrnte..

    111.1.1 Eaccluain mutua con espera activa.

    111.1.2 S e d f o r o s .

    111.1.3 Regin ccmdicional critica.

    111.1.4 Monitores.

    111.1.5 Envia y reaepcitrn de rnenaajes.

    Pat! 5

    7

    10

    15

    16

    19

    20

    21

    22

    22

    23

    24

    27

    de la

    27

    27

    33

    34

    35

    36

    IV. SISTEHA OPERATIVO EXbX Y LAS HERplAMIENTAS QUE PR3POXCIONA

    PAZLA T I PE

  • PROGRAMACION CONCURRENTE

    IV.1.2.4 Otras utilerias.

    SV.1.3 Iqle-?hentacin rLe las funcioe8 de Envia y

    hcepcion de mensajes.

    Anexa 1

    IV.2 Problemas clsicos de la programacin aonaurrente

    utilizando los mecanicrmas envia-recapcin de ppensajea.

    IV.2.1 Filosofos comensales.

    Anuro 2

    IV.2.2 Rroductor-Conaddor.

    Anexo 3

    IV.2.3 Escritores-Lectores.

    Anexo 4

    IV.2.4 Barbero dormiln.

    Anexo 5

    CmcLusIONEs

    BIBLIOORAFIA.

    4

    55

    61

    64

    64

    71

    74

    78

    81

    82

  • PHOGR4MAC10Y CONCURRENTE

    INTRODUCCION

    E; p r e s e n t e e s c r i t o es e l r e s u l t a d a de i a in-dest ic ja : in recllizada como P r a y e c t o d e : v i c i o S o c i a l . Como una nueva

    e x p e r i e n c i a s.2 p a r t i c i p e n es ta l a b o r de i n v e s t i g a c i n ,

    e x p e r i m e n t a c i b n y d e s a r r o l l o , e s p e r a n d o q u e e l c o n t e n i d o de este

    compendio pceda yudar a o t r a s p e r s d c a s q u e se i n t e r e s e n e n e l

    tema c c n t a n d o c o n un a n t e c e d e n t e .

    El tema t r a t a d o es i n t e r e s a n t e p o r q u e es un nuevo enfoque q u e e n L a U n i v e r s i d a d a n n o h a s i d o e x p l o t a d o , a d e m s d e ser un

    zampo que es t6 tomandcj S r a n i r n p o r t a n c i a nG s6lo e n e l rea de l a

    e d u c a c i i n s i n o t a m b i n e n t o d o s l o s o r g a n i s m o s d o n d e se i n c l u y e n

    sistemas de cmputo con l a u t i l i z a c i n de redes, b a s e de datos

    a d q u i s i c i n de i n f o r m a c i n .

    P o r s u c o n t e n i d o y p o r l a f o r m a e n q u e f u d e s q l o s a d o se

    puede d i v i d i r e n dcs p a r t e s : e n l a p r i m e r a se l l e v a cabo una

    i n v e s t i g a c i n b i h l i o g r f i c a smre IF. P r o g r a m a c i n C o n c u r r e n t e

    que abarcaria desde el. c a p i . t u l o I a?. 111 , e n ICs que se

    p r e s e n t a L;rm i n t r o d u c c i o n s o b r e l o s Sistemcs O p e r a t i v o s ,

    c o r c e n t r n d o s e en l a d e s c r i p c i 3 r i ?e un sistema c p e r s t i v o de

    multiprogranaci6n, e l capitulo II s e c e n t r a e n l a d e s c r i p c i n de todri l o que e n v u e l v e a un p r o c e s o e n e j e c u c i i n c u a n d o se

    e n c u c + n t r a c o m p a r t i e r i c o r e c u r s o s c u n o t r o s p r o c e s o s . Y e n el

    c a p t u l c 111 se d e s c r i b e n t c j d a s l o s mecznismos que se h a n i d o

    rresectaAlbc ,sara z ~ ? s ~ ~ . . v e r l o s problemas p r o p i c s de l a

    p r o q r 3 r n a c i h n c o n c u - r e n t e y que pueden s e r u s a d a s p a r a r e s o l v e r

    Lcs prc52emz.s cl4sicos de 7.a p r o g r a m a c i n c o n c u r r s n t e .

    U- 12 s ~ - g c n d a p a r t e se d e s a r r o l l a r o n l a s s o l u c i o n e s a los

    pxo%lemas clisl.cos (le l a p r o g r a m a c i n c o n c u r r e n t e b a j o e l

    e3quema de envio y r e c e p c i n d e mensa jes , implernentnndo Ins

    ,-llgoritrnos tn e l c c m p i l a d c r d e "C" ~ " J O e l sistema o p e r a t i v o

    'Jni::, para el! 3 se V.,IVO q:lk d.:dicar llria parte del t

  • PROGRAI'ACION CONCURRENTE

    Los principaie5 pasos que se siguieron fueron: - Famil~iarizarse con el Sheil de Unix - Comprender la forma en que pueden ser ejecutadcs los programas en un ambiente como el que proporciona Unix. - Manejar las herramientas que tiene "CP' Y que permiten interactuar con el Sistema Operativo Unix. - Cesarrollar algunos programas ejemplo del uso de estas funciones. - Finalmente dar solucin a los problema; cl;isicos de l.a programacin concurrente.

    Durante toda lz. investigacin se tuvo el apoyo y el asesoramiento de la Lic. en Computacin Elizabeth Prez Cortes, agradezco la oportunidad que me brind para poder realizar el Servicio Social.

    Martha Rosa Castaeda Retiz.

    s

  • - I"- PROGRAMPCION CONCURRENTE

    1. SISTEMA OPERATIVO

    Se puede entender como Sistema OperAtivo a la "coleccin

    organizada de software que extiende al hardware y que consta de rutinas

    de control para operar una computadora y proporciona un entorno para la

    ejecucin de programas.. . Internamente actua cor.0 un gestor de los recursos del sistema de computadora, tales como el procesador, la

    memoria y l o s dispositivos de E / S " (lj

    El objetivo de un sistem operat.ivo e5 el- incrementar la

    productividad de los recursos involucrados en el campo de la

    informtica (Hardware, software, progranadores, usuarios).

    Dos de los elementos importantes observables en cualquier sistema

    operativo son las llamadas del sistema operativo ( i o s programas invocan

    los servicios del sistcna operativo med_;.arlte estas acciones) y las

    ordenes del sistema operatkvo (las cuales SOR Esadas por loti usuarios

    para interactuar con el sistema directamente).

    Los sistemas operaLivcs han evolllci3,nado junto con la forma de

    realizar el procesamento talmcenamiento, codificacin, depuracin,

    ejeTucin, lectura c'3tos del dispositivo de entrads., escritura datos

    al ci.ispositi7-o de salida). Adems el pr3cesamiento se transforma de

    acuerdo a l a s necosidades y capacidades q"e proporciona el hardware.

    Procesamiento en serie: se dedica- tcdos 1.0s recursos de una

    computadora a uc programa nico a la vez. Este procesamiento aparece

    7 u . "' ta cdn l c2s ?rirczras computadoras y an en la actuslidad se sigue 1:tilizando en Las ccmFutadoras de Gn s l o u s u a r i o , que no tiene que

    comy;artir ni recursos ni memoria. LOS prcgramas son prccesados m o a

    continuacin de otrc, nxnca en paralelo.

    7

  • EL cienyc t c t a l de ~ S O d e l cpu o de uil d i s p o s i t i v o puede ser

    crialIt l . f iSado, ccntabil izando el tiempo de u t i l i z a c i n r e a l y el tiempo

    E S que s e e n c u e n t r z . desocupado. Por '2r.plo en l a e j e x c i n en ser ie de

    programas r voca que en algn mcnento l o s d i s p o s i t i v o s d e E/S 6 e l procesailor estn desocupados, si se observa la f i g 1 . 1 puede n o t a r s e

    que hay mcmentos (recuadros blancos! en l o s c u a l e s e l CPU no es

    u t i l i z a d o .

    inicio1 fin1 inidof fin2

    Procesamiento de Progl

    Fig 1.1 Procesamiento en Serie

    Procesamiento por lotes: Su o b j e t i v o es i n c r e m e n t a r l a G t i l i z a c i n

    de los recursos de l s i s tema y el tiempo t o t a l d e uso, a l r e d u c i r e

    e l iminar los tiempos muertcs debi-dos a l a s l e n t a s o p e r a c i o n e s manuales.

    Esto s e logra automatlzando las secuencias de operaciones involucradas

    e n l a e j e c u c i j n de un program? y en I s aspectos mecnicos del

    desarrollo de programas. Por eje-npio se organizan var ios t rabJ jos en

    Fortrar. (en un mismo lote) S E s3rgaba una s o l a vez e l compilzdor de

    Ccrtran y s e procesan todcs en f i l a : en sscencia se cont ina dest inando

    todos l o s recL;rsos para procesar UTI prograna. La desventa ja de es te t i p o

    de procesamient? es que los pr~gramaciores deben depurar sus trabajos

    i e r a d e l i n e a , no pueden i n t e r a c t u a r cor. l a m6quina, conociendo mucho

    . t ierpo despus a r e a c c i n f r e n t e al proceso. En contra de l o que se

    espera s e a larqa e l tiempo de procesamiento ya que l a d i f e r e n c i a de

    velocGLdad entre e l prczeaddor y los d i s p o s i t i v o s e x t e r n o s E / S generan

    c:::.lios de b o t e l l a .

    8

  • PROGRAI&ACION CONCURRENTE " -.

    Multzprogramac.in: Para compLerLder este t ipo de procesamiento se

    anal iza pr imerc que sucede e n el caso de proceso en ser ie . ii3y dos

    tiempos de u t i l i z a c i j n de los recursos de l s i s tema: es tan ocupadqs 3

    estn desocuppdos. S i cuando l o s proccsadu ; o d i s p o s i t i v o s de E / S

    estn desocupados se l e s a s i g i ! a r a a l q u n a o t r a a c t i v i d a d se pueden estar

    e jecutando conwrrentemente los programas pendientes corno se observa

    grficamente en l a f i g 1 . 2 .

    inicial - fin 1 R o g l ........ .......... ......... . . . . . . . . . . . . . . . ......... ......... .......... . . . . . . .......... . . . . . . . . . . . . . . . . ......... . . . . . . . . . . . . . . . . . I Prog2

    ;inicio2

    V . Promsador 11 t2 t3 t4 t5 16 t7

    1-1 Leer siguientes instrucciones

    Fig 3.2 Proctsamiento en paralelo

    "La e jecucin intercalada de progranas multiprogramacin puedc

    p r o d u c i r g a n a n c i a s s i g n i f i z a t j V ~ S de rendimiento (esta e j e c u c i b n

    paralela de Frogramas no se puede r e a l i z a r con proczsadores sirrplec y e n

    e l ejemplo de l a f i g u r a con 2 programas SE e s t u t i l i z a n d o a1 ill!? e l

    prccesador perc es to n.7 siempre es a s i ) . ? A s sistemas multiprogramados

    rea les , nocm~1~.oc+e permiten que nLs de dos programas compitar. pox 10s

    rec:LrsaSs de1 s is tema a l a V E Z p&ra incr,zmentar l a u t i l i z z c i 6 n d e los

    r e c ~ r s c s " . ( 2 )

    El (irado de m~tiprogramacin es el n.mero de programas que

    compiten activamente por l c s recurs33 del sister?a multiyrogrankado.

    9

  • " -."" PRdGRAMACION - - CONCURRENTE

    Objetivos de la mltiprograxtucin:

    + Incrementar la utilizacin de los recursos del sistema de coxpu+-dcras. * Soportar mltiples usuarios activos simultneamen .

    Un sistema operativo de mul'ciprogramacin proporciona mecanismos

    que permiten editar, compilar, depurar y correr los programas como si

    fuera la computadora para. un slo usuario, an cuando sea una multitud

    de usuarios los que est6n compartiendc los recursos.

    I. 1 Sistemas operativos de multiprogramacin

    Los sistemas operativos han ido evolucionando, no todos son

    representativos de un sistema completo, pero su aparicin u

    consecuencia del desarrollo y necesidades d e l procesamiento. Para ubicar

    a ios sistemas operativos de multiprogramacibn, se puede ver en la

    figura 1.3 una clasificacin de todos los sisterr,as operativos.

    SISTEMtl OPERlTIUO

    f

    S.O. SECUENCIAL

    S.O. POR LOTES

    Tiempo Compartido

    S.O. MULTIPHOGRAMACION

    Tiempo Real

    S.OrCOMl3INADO.S

    Flg I .3 Clasificacicin de lot Sistemas Operativos.

    10

  • S e c e n t r a la d i s c u s i n en los Sistemas Operativos de?

    Multiprograxnacian. "En s i s t e c a s qLe soportil? ejccucion cancurrente de

    pragramas, e i s istema operativo resL!elve l o s c o r . f l i c t o s e n l a s demandas

    de recursos de una forma que p r e s e r v 2 l a i n t e g r i d a d d e l s i s t e m a y a s i

    tr;?'.a de optimizar e l rendimie:r.to r e . i t a n t e " . ( 3 )

    Ahora es p o s i b l e comprender la Fnteracc in que exis te e n t r e e l

    t i p o de procesamient.0 y e l s is tema operat ivo con el cual se e s t

    trabajando :

    Frocesamiento C---------> Sistema Operativo

    Definiendo algunos eler.ent.os bsico5 :

    Proceso tarea : S e ertender cono una i n s t a n c i a de un

    S.0. Multiproceso o m l t i t a r e a : Soporta dos o ms procesos

    Multiacceso o Multiusuario: Accefler a an sistema de

    programa en e j e c u c i n .

    activos s imultneamente.

    microcomputadoras a travks de dos o .ns terminales.

    S.O . MULTIPROGRAMACIOEJ: "Deno%a un s is tema operat ivo que adems de

    sopor tar procesos conccrrentes ml t ip les . permi te que residan

    simultneamente en Id memoria primaria las i n s t r u z c i o n e s y l o s datos

    procedentes de Jos o ms procesus d i s juntos . " ( 4 '

    Multiprogramacin --, Multiproceso Nultiprogramacin --I----- > Mu1tiusuari.o

    2ero : Mu1 t iproceso Xult iproyramac i i n b i u l t i d s l a r l o - .--/----> Mu1 +-j progral.acj 6n

    Cualquier s istema de mcltiprogramaci6n se carac ter iza por una

    qrar- cantidad de proyraln.ls activos slmultneamente que cerq i tep For 102

    rec l i l scs del sistema (procesador, l a v-emoria y los dispos i t ivos de

    Z / S ) . Estos programas rev isan c:ontrluamerAte e l esrado de todos los 2rocesos a c t i v o s , a s c3mo l o s .cecurscs y su d i s t r ibuc in , aden;s son

    actlv3id3- cuando acurre un car-bio de estado ir..portante o cuando sea?

    1;axnados e x p l c i tamente.

    1:

  • PROGRAMACION CONCURRENTE

    Las caracterstlcas bsicas de cuc7lqLier sis:ema operativo SOT! el

    planificLdar del procesldor, la 3estin de meinoria, la gestin de los

    iecu;sos de E/S y la gesti6n de archivos.

    Un planificador de procesos o del procesador es un hdn-inistrador

    del tiempo de la C P U , decide a que proceso asignarle tiempo de CPU para

    que la utilizacicn sea mxima, asi cc,mo qu tarea debe esperar en la

    cola de trabajo para s a ejecucin. Existen planificadores de corto,

    rrediano y largo plazo.

    Un qestor de nmnoria, tambin es un administrador pero en esta

    ocasi6n del recurso memoria, decide como repartirla, aparte de

    proporcicnar mecanismos de seguridad para evitar la prdida de

    informacin o el acceso accidental a bloques de memoria restringidos.

    El gestor de los recursos de E/S torna decisiones de cmo repartir

    los recursos de entrada-salida del sist.ema, responde a las diferentes

    peticiones de los procesos, debe tener mecanismos para evitar el

    blcqueo de recursos.

    Entr-e las responsabilidad-s del qestor de archivos estn la

    transferencia de las peticiones de acceso desde el espacio de direcciri

    de archivo 1gic.o al fsico, la transmisiin de elementos de archivo

    entre l o s almacenamientos princ ipal y secundario, y soporte para la

    prot5Lcip y el compcrtdrniento de archivos asi la recuperacin y

    posible restauracin de archivos despus de fallos en el sistema.

    C'XSTEMAS Dl3 T I - 3 COMPARTIDO: (Multiprogramacla + multiusuar;-o; S e busca un buen tiempo de respuesta de la terminal. Se intent2

    proporcionar un reparto zquiu.ativo de ids recursos comunes para dar la

    'I J-usiin a cada usuario de pos-er la .T.cji:ina para 61 unicamente.

    a) Planisicador de prccesos: Lr,s prograinas se E: jecutan ccn

    b>riL?ridad r0':atori.a (Se uciliza urla cola circular). Para evitar 16

    :.:.onopolizacin da1 procesadqr, cada programa se ejecuta u12 tiempo de

    12

  • ". PROGRAMACION CONCURRENTE

    b) Gesto2 de ?maria: proporciona e l a i s lamiento y i a p r o t e c c i n

    de los programas corres idente ; . En ocasiones se proporcionan fo rnas de

    ccmparticin cont-rolado pars conservar la nzmoria y p e r m i t i r e l

    i n t e r c a r b i o d e d s t o s .

    c) Gestor de E/S: Es muy s o f i s t i c a d o par,: poder ccoperar con los

    m i l t i p l e s u s u a r i o s y d i s p o s i t i v o s . P e r o l a a t e n c i n a las in terrupc iones

    d e l terminal no n e c e s i t a ser c r t i c a p a r a e l tiempo debido a l a s lentas

    v e l o c i d a d e s d e l a s t e r n i n a l e s y los usuarios humanos.

    d) Gestor de Archivos: Proporcionar proteccin y c o n t r o l de

    acceso, dada la pos ib i i idad de concurrenc ia y d e c o n f l i c t o s a l t r a t a r de

    acceder a los archivos .

    SISTEMAS DE TIEMPO REAL : Son usados en entornos donde se deben

    aceptar y procesar en tier.lpo brcvc: y srin tiempos muertos un gran nmero

    de sucesos, en su mayoria exterIlo; a l s i s t e m a ( c o n t r o l i n d u s t r i a l ,

    equip;miento telefnico, comutador, etc.) no i r L p o r t a t a n t o l a

    conveniencia d e i usuario y la u t i l i z a c i n d e los recursos ya que se

    plied? esperar e l procesamientc sblto de n i l e s de interrupcioces por

    segundo s i n perder un s l o suceso.

    a ) P l a n i f i c a d o r de procesos: Hay un proceso por separado para

    manejar un suceso externo nico. Este przceso se a c t i v a al o c u r r i r e l

    suceso re lac ionado ( indicado por una i r t - e r r u p c l i n ) . S e requiere de una p l a n i f i c a c i j n en la przoridad preferente, a s los procesos de ms dlta

    priorj -dad pueden interrurrpir por derecho l a e j -cucibn de los proceso? de

    p r i 3 r i d a c i i n f e r i 3 r .

    b) Gestor de memoria: Menos sTfisticado. Auchos procesos residen

    permanentem2nte er, l a memoris para proporcionar tiempos de respuesta

  • PROGRAMACION CONCURRENTF

    rapidos. Los procesos tienden a cooperar estrechamente, as

    necesarimLente ssportan la separaciin y corrqartici6n la memoria.

    c) Gestor o E/S: El tiempo crtico del gestor de dispositivo es

    w 1 d de las caxacterstic3s principales. Lo mismo que la gestiin de

    interrupciones y almacenamiento i.ntermedi.0. Proporciona llamadds ai

    sistema que permiten a l o s procesos (programas) del usuario conectarse

    directamente il los vectores de interrupcijn y s\:zesc)s de servicio.

    d) Gestor de Archivos: Slo en grandee instalaciones. Su objetivo

    es la velocidad de acceso, ms que la utilizacin eficaz del

    almacenamiento secundario.

    14

    . . .x _yIIIu_,~ .. . . .. .

  • PHOGRAMACION CONCURRFNTE

    Un pxoceso e.; un programa que est$ en ejecucin, tambin llamado

    tarea; "es trabajo mknimo sGceptible de ser planificado

    individualmente por el Sistema Operativo" ( 5 ) . La creacibn de un proceso implica varias operaciones:

    * Dar un identificador al proceso (nombre) - * Darlo 1 conocer al Sistema Operativo. * Determinar la prioridad inicial del mismo. * Crear su bloque de control. * Asignarle los recursos iniciales.

    Una vez creado, el proceso se activa y llega a ser elegible para

    competir por la asignacin de recursos de E / S . El comportamiento tipico

    de un proceso se conoce csmo " c i c l o de vida". En la figura 2.1 se

    presentan los posibles estados que puede presentar un proceso durante su

    ciclo.

    uspcn dido

    listo Terminaclon E/S

    i, Evento

    ~ 7 g 2.1 Transidnnes de estado de un proreso con suspensin y reanudacin pag 63 Milenkovic

    El aiclo de vida: Un proceso cclico pasa varias veces por

    djversos estados de ejecucin y suspensin, antes de terminar y salir

    15

  • PROG2AMACION CONCURRENTE

    del si,rteP.a. E s t e F ~ S O dir,imic=o por los estados es conocido slo por el

    sistema operatilro en cualquier tiempo. Es as como "un proceso

    inditidual no tiene modo de saber t.1 estado o avance de cualqui.?r O t L J

    proceso a monos que sea inforrr,ado especf mente de ello por una

    seal. '' (6)

    11.1 Mu1 tiproceso.

    Cada invocacin concurrente de un programa origina la creacin de

    un proceso de edicin nuevo y nico, que convivir6 con los otros

    procesos activos simult6neamente. Como ejemplo de un programa en

    multiproceso, se plantea realizar una colecta de datos ( E / S ) , despuCs

    cargarlos en disco, ejecutar un procesamiento estadstico y finalmente

    enviarlo a imprimir ( E ? S ) . La primera la versin es secuencial.

    Program Sea-dac CCM

    (true) HAZ { Por siempre 1 C m

    colecta-dato:: {Datos del convertidor A/D ) carga-.' A l ' S co {A disco 1 procesa- datos (Prozesamiento estadistico 1 imprime-dato; {Tm$resion de resultados 1

    TERM TEEM

    Esta versin es ineficiente ya que existen momentos en i o s cuales

    el prosesador est desocupado por granties periodos de tiempo (cuando se

    estn adqdiricndo l o s datos, s e a1macena.z y cuando se mandan a

    i.;.Iprimir) de la misma ?mi; los perifricos de E / S (convertidor e

    impresora) presectan ?"empos en los cuales no t.~enen ninguna actividad y

    por lo %anto sstn siendo desaproJechados.

    una versi6c ms rnteresante y que aprovecha mejor los recursos

    consiste en dividir las actividades en procesos individuales y hacerlos

    czmvivir .

    16

  • - PROGR~NIACION CONCURRENTE

    Pro ..eso Colecta Ci.M

    m ~ a m (trae I HAZ { Por siexpre j c w

    eepeza-senal-de(Almacena, Prccesa,rddrel colecta-d 3s [Datos del converti.dor A/D ) envia-secG. -a (Almacena, Procesa)

    !FEsM TERM

    Proceso Almacena COI5

    m!mmAs (true) HAZ I Por siempre I c m

    espera-senal-de (Colecta) carga disco {A disco ) envia-senal-a (Colecta)

    -

    rRM TEI"

    Proceso Procesa COM

    MIENTRAS (true) EA2 { Por siempre 1 COM

    espera-senal-de(Pracesa,Padre) procesa datos {Procesamiento estadistico 1 snvia-senal-a(Reporte, Colecta)

    TERM mm

    Fraceso Reporte COM

    KICNTRAS (true) EAZ [ Por siempre 1 COE

    espera-senal-de( Prozesa) inFzime-datos (Impresibn de resultados ) envia-seral-a (Procesa)

    TERM T m

    Programa Padre"dac COM mul.tiprcces:, dac )

    Inicializa-amkiente envi7 - senal-a(colecta,procesoj {primera ejecucin) Inicializa colecta, c , , rga , procesc, reporte

    TERM { multiproceso - d a r )

    Fara l o g r a r l a sincronizacicn entre ellos se latiliza el mecan:-nmo

    dr envio-recepcin de mensajes que posteriorm3nte se analizar%.

    Siuziendo el prrgrama se observa que despus de que es ejecutad-, el

    pr:rwr P L O Y ~ S , , Colecta (c) se puedcn ejecuta!: en paralelo el

    17

  • - PROCRAMACION CONCURRENTE

    almalerlamienco (A) y e l procesamiento de datos ( P I , con l o s mensajes de

    A y p st puede v c l v e r a e j e c u t a r l a C o l e c t a d e l s i g u i e n t e bloque y

    asm.i.~mo e n v i a r a imprimii 1. bloque anter ior (R).

    En l a s i g u i e n t e f i g u r a se puede observar por medio de diagramas de

    e s t a d o l a d i f e r e n c i a entre los das prograr?:as, cuando e l p r o c e s o c o l e c t a

    C 2 e n l a v e r s i n s e c u e n c i a 1 e n t r a e n proceso, en la vers in de

    rnultiproceso, se e j e c u t a n t a n t o C3 como l a impresin R2.

    a] Versin Secuencia1 b] Versin en Multiproceso

  • PROGRAMACION CONCURRENTE - 7

    ~2 p t e r c i a de lcs procesos concurrente? es:: en que se puede

    e s p e c i q i c a r l a s secuenciT.2 de c6digo que se desean e j ecutar

    s im~l t .a i ,~ ;amente , de esta forri,a e l S . O . sacar a pr?vecho de l para le l i smo

    p o s i b l e e n un 13rltQrno dado, l o cual constitIL. una c a r a c t e r s t i c a

    extremadamente v?.lioca en l a programacin de sistemas de tiempo real o

    d e c u a l q u i e r o t r o s i s t e n a en donde l a p r i n c i p a l n e c e s i d a d s e a r e s p o n d e r

    a a c o n t e c i m i e n t o s c r t i c o s e n cuanto a l tiempo.

    11.2 Gestin de procesos

    Para e l Sistema Operativo un proceso es l a entidad mnima

    individualmente planificab1.e y que consta de cdigo y d a t o s ;

    carac ter izado por s u s a t r i b u t o s y estados dinrricos. EL S.O. contempla

    l a e j e c u c i n d e un p r o c e s o t p i c o en e l transcurso de su act ividad corno

    una progresin a travs de una sucesin de estados.

    El S . O . en alsunos casos, un lenguaje de implantacin de

    sistemas proporciona las f a c i l i d a d e s p a r a d e f i n i r los l mites o conf ines

    de un proceso, sus a t r i b u t o s , 13 n a t u r a l e z a d e l a r e s i d e n c i a e n memoria

    ( f i j a 6 in tercambiable ) ( 7 \

    Las operaciones sabre prccesos ql-e se pueden r e a l i z a r s o n :

    * Crear un proceso. * Dest1.ui.r :In proceso. + Suspender un proceso. * Reanudar UR proceso. * Cambiar l a p r i o r i d a d de un proceso. * Bloquear un proceso.

    Despachdr u n ?roceso.

  • PROGZAMACION CONCURREN2 ""- " . ___ - - "I 3. -La actuadin en condicloncs excepclsnales surgicas

    c lu rc~te la eje-dcijn de G:. p~o~-es3, inc.'J'.:!es 10s errores aritmeticos y las int2r:upciones.

    4.-La asignacihn de recurs> (8 )

    La efecucih concllrrente sin ninguna restriccin para los procesos

    puede conducir a problemas de sincronizacin en detrimiento de la

    se.;uridad del sistema. Por ello si se la da a cada tarea un nivel de

    prioridad pcr software puede servir para ayudar al S.0. a resolver

    conflictos de planificacin: si dos procesos solicitan un recurso (en

    principio) simultneamente s e le asignar a aquel proceso que tenga una

    mayor prioridad.

    f.3 La convivencia entre procesos.

    Cono los recursos de un slo sistema son utilizados por todos los

    procesos concurrertes, estos aonpiten entre s por la asignacin de

    aquellos que necesitan. Otra relacin fundamental es la cooperaai6n.

    T a n t o la competencia comc la cooperacin de procesos exigen un soporte

    sdecuada por parte del S.O.

    En 3.a competencirr se requiere de una cuidadosa asignacibn de

    recLzsos, asi comc proteccin en cuancc.3 al aislamiento de espacios por

    direcciones distintas.

    ha coope-raci.n "se da en sistemas en 1.0s que la actividad se

    realiza por un grupo de procesos afines, cada '.mo de l o s cuales se

    encarga de 11ma funcin especifica. Los procesQs que cooperan

    inter:arnuian las seales de datos y l a sincronizaci6n necesaria para

    orcuectar su tivarice colectiva, 'l. ( 9 )

    Si exlsten ;r,ccanisrmc para la utilizacion controlada de los datos

    c~ .npar t idos asi corn3 el intercamblq de seales y sincronizacin

    er,tor::es .La coopeTaci6n pLedc existir. Les Procesos cooperantes

    43

  • "-. PROGRRMACION CONCURRENTE

    comp3rten d c t e r m i r a h s atributos comunes, ailerr5s de actuar

    recprocamente er.tre s . Estc~s procesos llegan a formar una familia de

    procesos 6 . jnde l o s pr3:esos secundarios heiedan atributos de los ~EOCUSOS

    prircipales en el momento de su creacir.. Ystos atributos pueden ser

    modificados er el momento de la ejecucin invocando las llamadas al

    sistema operativo. El prQceso principal normalmente termina despuks de

    que todos sus hijos ya lo han hecho.

    11.3.1 Sincrcnizacin entre proccaos.

    "Para que funcionen apropiadamente un grupo de procesos, se deben

    sncronizar sus actividades de forma que se asegura la observancia de

    las relaciones de precedencia dictadas por el problema que se est&

    Lesolviendo. La sincronizacibn es necesaria para preservar la integridad

    del sistema y prevexlir problemas de tiempo producidos por el acceso

    concurrente a recursos compartidos pox mltiples procesos '* (10)

    Los procesos cooperantes deben sincronizarse siempre que intenten

    usar recursos compartidos tales coxr.0: archivos, bases de datos o

    dispositivos fsicos comunes.

    Si el diseo de ?.os pxo.cocolos de sincronizacin falla se generar

    un compartamiento errneo de todo el sistema. La concurrencia puede

    producir un ir-cremento de la productividad cuando se implemer,ta

    correctamente, pero puede degre-dar !.a fiabilidad cuando la

    sincronizacin impropia contamina el slstema.

    Los errores de sincronizacidn se dan entre procesos, no en

    procesas nicoz. De h e h o cada uno de e l l o s son correctos ejecutndose

    individualmente. E-I l a ejecucin concurrente, el problema se genera por

    la interca1ac;Sn no predecible de los dos procesos en respuesta a los

    sucesos as ncron*?s.

    21

  • _I PROGRAMACION CONCURRENTE

    X . 3 . 2 S e c c i n Crtica

    La ejecxcin con prioridad preferente puede rem.2diar algunos

    problemas pero tambiGn puede provocar rrores de sincronizacin en la

    actualizacin de variables globales compartidas por dos o ms tareas

    concurrentes. Estas inconsistencias temporales de las copias privadas

    (locales) y pblicas (globales) de las variables compartidas, deben

    ser estudiadas para comprender su causa y prevenirla.

    Se entiende por S e c c i n C r i t i c a una secci6n de c6digo que es

    compartida por varios procesos y que puede afectar a cada uno en su

    ejecucin. La actualizacin de una variable compartida puede verse como

    una s e c c i n critica de cdigo. Como e s t a s secciones son verdaderamente

    crticas se pide que las tareas las hagan tan cortas como sea posible.

    Al darse una rupt-Ara dentro de una seccin crtica el S.O. debe

    contar COR UR mecanismo que detecte esta falla (por medio de

    interrupcicnes automticas por exceso de tiempo). Pero debe asegurarse

    que UT; praurama no se bloquee dentro de su seccin crtica.

    If. 3 . 3 E Y s l u s i n Mutua

    Al decectars? las secciones criticas, se buscaron mecanisnos para

    asegurar s u asignacin y evitar su corrupcin, de aqu nace el concepto

    de exclusi6c mutua.

    EXCLUSI9N MUTUA: S u funcibn e s permitir que el proceso que ejecuta su

    seccin crtica terlge acceso al recurso compartido e impedir al resto de

    los procesos 1.acerlo hasta que el proceso finalice apropiadamente SU

    seccin cctica. Consecuentemente los 3t ros procesos ven solamente

    valores estables de l a s variables compartidzs.

    Con operlciones realizadas ea forrncl mutuamente exclusiva, slo 1lna

    tarea en ese momento est autorizada psra controlar un disgositivo

  • PPOGRAMAClOiJ CONCURRENTE, " -

    se.rialmente reutilizable, es d3c:.r es iricapaz cde proporrionar servicio

    mas de un usus rid.

    Zn el l l b r o de Milenkoviq describen l a s propiedades de una

    "buenc solucin" de una exclusin mutua (pag 149-15l):

    l.-Asegurar Exclusin Mutua entre procesos que acceden al dispositivo proteqido que s e comparte.

    2.-Ser independiente del sistema y transportable. (Llamadas al sistema)

    3.-Permitir la intercalacin arbitraria de lcs procesos contendientes cuando no acceden al recurso compartido con e l in de incrementar el grado de concurrencia en el sistema.

    4.-No hacer suposiciones sobre las velocidades relativas de los procesJs contendientes.

    5.-No hacer suposiciones sobre las prioridades relativas de los procesos contendientes.

    6. -No tener conocimiento sobre las estructuras de d.atos lgicas y privadas de ICs procesos contendientes.

    7.-Garantizar la quiebra o terminacin de cualquier recursos fuera de su seccihn crtica no afecta a la posibilidad de que otros procesos contendientes accedan al recursos ccmpartido.

    8 .-Cuando ms de un proceso desea entrar en la secci6n crtica, la decisin de conceder la entrada a uno d e ellos debe hacerse en tlempo finito.

    En la seccin proxic.ta S*- describe uno de los mecanisnos "La

    exclusin mutua por 5spera ~.ctiva", donde se presentan algunos

    aigoritmos que int-entaron dar cclucln. su estudio permitir observar

    algunos problemas :que n3 s e haban vrevisto.

    11.3.4 Bloqueo/Dcspertar.

    Ccando un : :roc~:so emite una p e t i c i n de E / S , se bloqrea a si

    TTLSil-vO para -$peror a que termine esta operacin. El planeador de

    FLGLTSOZ lo saca de ia cola de listos y lo pone en la cola donde espera

    que se le as;..qne el recurso. IUgunos procesos deben despertar al

    proceso bloqueado. Tal interaccin es 1 - m ejemplo d e l protocolc de

    bloqueo/despertar. E;, este CLSO ,se est& hablando cuando el hecho de

    bloqueo S(' da COK? una caracterstica necesaria para sincrvnizar los

    procesos.

    23

  • PROGRAMACION CONCURXENIE

    Si un proreso des-ase ser informado de la ocurrencia de un eTrento,

    p'xer-e "sx~stir otro proceso c;lpa~ de dete-tar ese aconteciTient0 ya

    ocurrido y se8 el informante. ne esta fozma se puede presen-;r un

    protocolc, donde un proceso es bloqccado por el mismo, por 0tKC.S , debe existir otro procesc que lo desFiertz.

    11.3.5 Abrazo Mortal

    Abrazo Mortal o Interbloqueo: "Es una situacin donde un grupo de

    procesos est bloqueado permanentemente como consecuencia de que cada

    proceso tenga retenido Qn subconjunto de recarsos necesarios para SU

    finalizacin y tenga que esperar La liberacin de los recursos restantes

    retenidos por o t r o s del mismo grupo haciendo a s imposible continuar a

    ninguno de los procesos interbloqueados " (11)

    Postergamiento i n d e f i n i d o : Cuawio algunos procesos progresan hacia

    su finalizacin pero uno o ms procesos estn bloqueando el recurso,

    provocan que estos esperen indefinidamente el recurso q:le fu bloqueado

    sin poder continuar.

    MilenkoviC nos resume las ccndiciones necesarias para que se presente un

    abrazo nortal :

    CONPICTONES PARA QUE SE PRESENTE: UNA ABRAZO MORTAL

    I.-EXCLUSIGN MUTUA: Los recursos compartidos se adquieren y se usan de manera mutuarrc-nte exclusiva. Un proceso a ;a

    2.-P..'A?JTEhTER Y ASEGUPAR: Cada procese continua manteniendo los recursos ya asignddos zientr-s ?spe::a adquirir lzs otros.

    3. -;:O IYTER!XJPCION IJCN PHEFEKENCTA: Los recursos asignados a un proceso slo ?ueden \ i o l v e r dl sistema como consecuencia de l,, accin voluntaria d=. ese proceso; el sistema no puede ouitrselos Forzsamente.

    4. -ESPEF

  • - PriOGRAMAClON CGNCURRENTE

    Se puede Fensar en adquirir los recursos al inicio o repartidos

    escalonadamentc, permitir ias interrupciones con prioridad recupcrando

    los recursos necesarios O finalmente realizar una ordenacin (lineal)

    diferente de los tipos de recursos en lugar de la circular.

    Cualquiera de estas opciones suelen ser parcialmecte efectivas,

    ya que siempre acarrean una baja utilizacin de los recursos del

    sistema si se utilizan aisladamente.

    Evitacin: (Idea bsica) garantizar y solucionar las peticiones a

    los recursos disponibles slo a aquellos procesos que no pueden

    (posiblemente) producir un interbloqueo.

    El asignador de recursos examina los efectos de proporcionar una

    peti.cl6n particular. Si l a entrega de tal rezurso no puede conducir a un

    posible inteblcqueo el recurso s e entrega al solicitmte, de lo

    contrario el proceso solicitante se suspende hasta el momento que s u

    peticin pendiente pueda ser erltregada con seguridad.

    Es necesario que todos los prbcesos procldmen s x s peticiones

    mximas de recursos antes ue la ejecl.:zion.

    Deteccin y recuperacin: En vez de sacriflzar el rendimiento

    previniendc c evitanlo !.os inte,k,loqueos, alguno5 sistemas dan los

    *e-ursos disp7nihle; 1 ICs proce: ;os que LOS p?,den libremente y slo

    ozasionalmente comprueba el abrazo rr.ortz.>. para reLlamUr lcs recursos

    retenidns por l o s procesos tloqueados, s i es que los hay.

    Para detectar un interbloqueo se pcede auxiliar de la teora de

    13s urafos dirigj. los. La existencia de un n*ldo 6:s decir un ciclo sin

    25

  • "" PROGRAMACION CONCURRENTE

    nirigun camino fuera de Cste a p a r t l r de l o s nodo involucrados, e s

    una condicj-n sufi.cj.exlte pe.ra el Abrazo Mottt7i.

    La detecc in del abrazo mortal es s1 cna parte de l a t a r e a de

    manejL, d e l In terb loqueo . S lo reve ia l a ex i s ter -c i ? . de l problema y e l

    sistema debe entonces romper el. abrazo mortal para reclamar los recursos

    retenidos por los P . V O C ~ S G S bloqueados y azcgurar que l o s procesos

    afectados puedan f incl l izar eventualm-nte.

    Una forma de recuperacin ser a :

    l . - I d e n t i f i c a r los procesos interbloqueados. 2.-Romper e l abrazo mortal., re t ro t . raer o r e i n i c i a l i z a r uno o

    ms procesos intxrbloqueados. 3 . - E s t a r e i n i c i a l i z a z i n i r p i i c a l a p r d i d a del t r a b a j o

    rea l izado por e l proceso has ta s u abrazo mortal. 4.-Es d e s e a b l e e l e g i r las vic t imas entre l o s procesos cuya

    r e i n k c i a l i z a c i h es menos cos tosa . " -Retrotraer un p r o c e s o c o n s i s t e en l l e v a r un contro l de l o s

    estados e n e s p e c i a l del e s t a d o a n t e r i o r a n t e s de e n t r a r a l abrazo mortal , para restabiecer a l proceso b laqueado, antes de La asignacin del recurso.

    26

  • " _. PRGGRAMACION CONCURRENTE

    111. COMUNICAUION Y SINCRONIZACION ENTRE PROCESOS

    F- los tpicos anteriores se ha insistido en la necesidad de

    sincroni;,r los procesos tanto en ia competencia como en la cooperaci6n.

    A continuaci6n se presentan los mecanismos para solucionar esta

    problemtica.

    111.1 Mecanismos de solucin para los problemas de la programacin concurrente.

    Cuando se iniciarcn las primeras investigaciones con procesos

    concurrentes, realizando un anlisis texico de la filosofa de este

    procesamiento se fueron presentando problemas que le eran inherentes,

    esto gener que se buscaran necanismos que permitieran la convivencia,

    comur-icacin y sincrcnizacin de Los procesos, evitando que -1 ambiente

    de trabajo se daara, a s aparecieron los Semforos, la Regi6n

    Condicional, los Monitores y el Envio y Recepcin de Mensajes, estas

    herramientas sern comentadas a continuacin; iniciando con un anlisis

    del primer problema de la programaqin concurrente la Exclusi6n Mutua.

    111.1.1 Exclusin mutua con espera activa.

    Para comprender los conceptos que se vieron en Exclusin Mutua se

    presentan l o s siguientes algori taos que iran incentando garantizar la

    zxcrusin mutua y los problemas que se ger.eraron hasta llegar al

    algozli t rno propuesto por 9ekker.

    PROBLEMA : Un prcceso que desea entrar en una seccin crtica la negocia prlslero con todas las partes interesadas para estar seguro +e ninguna otra actividad en conflicto esta en proceso y que los procesos implicados estan enterados de la inmiqentt inaccesibilidad temporal del recurso. S610 cuando hay seguridad de que se $7 alcanzado el consenso el proceso ganador comienza a Fjecutar su seccin crtica Una vez completada, e proceso informar de alguna manera a los otros contendientes que el recurso esta disponible y empezara una nueve ronda de negociactn.

    lcr . ALGORITMO :

    Se preserltan dos procesos que comparten un recurso en comn, lo

    acceden en la reyin critica, ambos son cclicos y ejecutan otro cdigo

    27

  • -. FROGRAMACION CONCURRENTE

    acl%r.hs de 1 a secciin crtica. Para sincronizarse utilizan una variable

    g l u b a l ll;.n!2da turno que toma -1 valar ?el identificador del proceso que

    -e correspotlde ejecutar.

    PROCESO - 1 CUM

    MIENTRAS (verdad) HAZ { Por siempre CUM

    MIENTRAS (turno = proc2) HAZ nada ; seccion-crit- ca; turno = proc2; otros-procesos;

    TERM TEm4

    PROCESO P2 COH

    m- (verdad) a A z ( Por siempre I COM

    MIENTRAS (turno = procl) BAZ nada ; seccion critica; turr.0 = procl; otros-procesos;

    -

    mRM TEm4

    Esta primera aproximacin no es muy buena ya que genera los

    siguientes inconvenientes:

    1.- Permlte que un proceso contendiente conozca la identidad de los otros. Esto complicaria demasiado el proceso de sincronizacin ya que ~.er.a necesario tareas extras para actualizar las banderzs de todos los. involucrados incluso aquellos que no reqcierer ser modificados.

    2:- Dependen de la volocida.1 relativa de Los procesos. Es d e c i r que trabajan a l a velocidad colectiva del mas l e n t o .

    3.- S10 permitt: una secuenria prefijada Pi P2 P1 P2 . . . y no permite que un "roceso si es ms rapido que otro ? e puede elecutar mas Trece? seguidas.

    4.- Si un nroceso falla o termina, bloq.dea a los dems proccsos ya que nunc6 vuelve a actualizar la variable. Provocando que el proceso P:! espere indefinidamente S J t u r n o para azceder al recursos compartido que est ~ i ~ a l r n e r te l i b r e I

    28

  • _I__

    PROGRAMACION CONCURRENTE

    20. ALGORIlMO:

    Ahord cada proceso t ie l ie s u bandera individual que i n d i c a s i e s t a

    O no en s u s e c c i o n c r i t i c a ; ].a nueva modif icacin consis te en:

    1. - E l I--oceso r e v i s a l a s b a n d e r a s y espera has ta que

    2 . - A c t i v a s u plcpia banuera . 3 . - E j e c u t a s u s e c c i n c r i t i c a . 4 . -Desactiva s u bandera.

    ninguni: e s te a c t i v a .

    PROCESO P1 COM

    MIENTRAS (verdad) H A Z { Por siempre ! COM

    MIENTRAS (ban2 = verdad) HAZ espera ; banl=verdad; s e c c i o n - c r i t i c a ; ban1 = f a l s o ; o t r e s p r o c e s o s ;

    TERM -

    TEIiM

    PROCESO P2 COM

    MIENTRAS (verdad) HAZ{ P 3 r SiePpre COM

    MIENTRAS tbanl -- verdad) HAZ espera ; b.3112 =: verdad; s e c c i o n - c r i t i c a ; han:! = fa! s o ; o t r c ; p r c c e s o s ;

    TERM -

    LZRM

    PROGRAK9 PADRE C,3M

    bartl = f a i s c ; ban2 = f a l - s o ; i n i c i a l i z a ?l, =2;

    END

    S t l o UP wro,-esa d e b i c r a e n t r a r e : ~ s u s e c c i n c r i t i c a a l a vez,

    >,--IO e s t o no se cumpl.irla s i se e j e c u t a r a l.2 s i g u i e n t e s e c u e n c i a . La

    accL5n de interrumpe ser:, e lecutada por el procesador y s i g n i f l c a r a que

  • PROGRAMPCION CONCURREN%

    e l tiexpo ar;ignado para su procesenkiento ha terminado y debe esperar que

    s3 l e vuei.va a s i g n a r .

    1. - 21 e n t r a , r e v i s a a ban2 ( f a i s o ) 2 . - P 2 entra , r e v i s a a banl ( fa l . ;o ) < n t e ,;ripe> 3:- P1 porie banl=verdad, entra en su secc i . . z r t i ca < interrumpe> 4 . - P 2 pone banZ=verdad, e n t r a en s u s e c c i n c r i t i c a < i n t e r r u m p e >

    Tenernos dos procesos en su s e c c i n c r t i c a , l o cua l se quer a

    e v i t a r .

    ser. ALGORITMO:

    En este caso primero zl entrar cada proceso esmblece su indicador

    antes de comprobar los indicadores de l r e s t o d e p r o c e s o s .

    PROCESO PI C W

    MIENTRAS (verdad) H A Z ( Por siempre 1 COI4

    banl-lrerdad; MIEPITRAS (ban2 = verda) HAZ espera ; s e c c l 6 n - c r i t i c a ; banl = fd?.so; o t r o s g r o c e s o s ;

    TERM TERM

    PROCESO P2 COM

    M I E S " S S (verc'ad) HAZ { Por siempre 1 COM

    ban2 = verdad; MIENTRAS (ban1 = verdad) HAZ e s p e r a ; s e c c i n - c r i t i c 2 ; ban2 = falso; o t r o s procesos;

    TERM -

    TERM

    St: generLl un nuevo probl.ema s i se p r e s e n t a r a l a s i g u i e n t -

    secuencia :

    l . - E n t r a t:l cstaPlece ban1 = verdad \interrumpe>

    30

  • PROGRAM;1Clc)N CONCURRENTE -.-. -.- - 2 . - Yntra F2 es taLLlece bais2 = verdad; espera a que ban1 = falso 3 . - P l r e v i s a a ban2 y espera a c;Ue s e naga f a l s a .

    Ambos prscesos est? . . esperando e l ir ,dicador del proceso opuesto y

    IJURO puede l iberalr s u bandc.1;. Ambos e s t n e n abrazo mortal.

    ALGORITMO DE DEKKER

    * P1 i n d i c a s u deseo de entrac e n s u s e c c i b n c r t i c a , ban1 = trite Entonces procede ccn ia prueba del mientras donde v e r i f i c a si P2 tambien quiere entrar. S i ban2 = f a l s e ; entonces P1 s a l t a e l cuerpo del c i c l o m i e n t r a s y e n t r a e n s u s e c c i n c r t i c a .

    * Supngase, que cuando P1 r e a l i z a l a p r u e b a d e l m i e n t r a s , descubre que ban2 = true. E s t o o b l i g a a P1 a e n t r a r e n e l c u e r p o d e l c i c l o m i e n t r a s . Aqu busca la v a r i a b l e d e l proceso favorecido; s i P1 es e l f a v o r e c i d o , s a l t a el cuerpo del S i y e j ecuta repet idamente l a prneba de l mientras esperando a que P2 desc.onecte s u bandera l o cual debe suceder.

    * S i P1 determina que e l proceso favorecido es P2 entonces PI es forzado a e n t r a r e n el cuerpo del S i , donde desconecta s u propia bandera. P1 permite que P 2 entre e n s u s e c c i j n c r i t i r . a .

    * P2 acabar abandonando SI: s e c c i n c r t i c a y e j e c u t a r s u cdigo de sal ida de exclusin mutua, p n i e n d o como e l prcseso favorecido a P1 y desconecta su bandera.

    * P 1 r e a l i z 2 el mientras ,-.xternc. Si. la bandera de P2 (que acababa de desconectarsej s igue desconectada, entonces P 1 e n t r a e n s u s e c c i n . S i n embargo s i P 2 i n t e n t reent.ra1 r&pidamellte en s u seccin c r t i c a , e n t o n c e s l a bandera de P2 bsn2 = t r u e y P1 ser ob l iyadc de nuevo a e n t r a r era e l cuerpo del mxentras externo.

    "En esta ccas ir : , s in embargo, P 1 ~ ~ G C X S O - uno esta , desconecte su bandera, permitiendo a

    prc':eso - uno e n t r a r er. su secci6n c r t i c a I' (12)

    31 1 4 7 6 8 5

  • ". _I PROGRAMACION CONCURREEE

    PROCESO PI COM

    MIE~RAS (veydad) H A Z [ Por siempre 1 c m

    banlzverdad; MIENTRAS (ban2 = verdxd) EIAZ SI ( favorecido ==2) c m

    banl = f a l s o ;

    banl = verdad; TERM; s e c c i o n - c r i t i c a - 1 ; favorecido = 2; banl = f a l s o ; o t r o s procesos;

    ( favorecido = 2 ) tiAZ ;

    TERM -

    TERM

    PROCESO P2 CCM MI- (verdad) HAZ{ Por siempre 1 COM

    ban2 = verdad; MIENTRAS (ban1 = verdad) HAZ SI ( favorec ido ==l) COM

    ban2 = falso; MIENTRAS ( favorecido := 1 ) EA2 ; ban? = verdad; m; secc ion-cr i t i ca -2 ; favorec iao = 1 ; ban2 = f a l s o ; otros-procesos ;

    TERM TERM

    PROGRAMA PAERE COM

    l?a-.i = falso; ban2 = f a l s o ; favorecido = 1 ; comiencen

    21 " 2

    terminen EhP

    Dondz l a s i n s t r u c c i o n e s de comience? y terminen indican a l o s pio\:esos 1 ; i jos que puede:. i r : i c i a r s i n impoitsr en que orden y e l padre es?era I que terminen.

    32

  • - PROGRAMACION CONCURRENTE

    El algoritmo tie Dekker d.1 solucin a .La exclusin mutua e n t r e dos

    procesos , pero su implementaci3n para un .nayor nrrero complicara e l

    Algoritm;, POL ello se ?lantean otros mecanismos como los semforos.

    Fueron propuestos por Dijkstra, para solucionar e l problema de la

    exclusi6n mutua.

    Un mecanismo de semforo consta bsicamente de dos operaciones

    primitivas : S& y ESPERA que funcionan en nn tipo especial de

    variable s e d f o r o S.

    La variable S (semforo; puede asumir valores enteros no negativos

    excepto posiblemente para la inicializaci6n, s l o l a s operaciones SERAL

    y ESPERA pueden acceder y manipularla. La variable S es el argwento de

    estas dos Operaciones.

    ESPERA (S): recrement el valor de su argumento sr.smforo S en

    cuanto se hace no negativa, si cs negativa o cero el proceso espera. La

    finalizacin de la operacin ESFERA, una vez que se toma la decisi6n de

    decrementar su argumento semAfcro, debe ser indivisible.

    SE&& ( S ) : IncremenLa el valar de su argumento semforo S como una

    oreracibn indivisible, si exfste un proceso dormido lo despierta. Un

    pyoceso est dormidc cua.nclo esti esperando ser atendido bajo ciertas

    condlcicnes y no se encuentra utilizando tiempo del CPU.

    S d f 7 r o birlario : Slo puede tomar ei valor O 6 1.

    Sediforo general : Puede tomar cualquier valor entero no negativo

    Ulla tiescripcin dc estas funcimes s e r i a : %YbE;RA ; S ) CGM

    B~IEN'=RAs not' (S > G 1 m espera 1; a = S - l ;

    TEIu?d

    33

  • - " PROGRAfdlAClQN COVCURRENTE

    Cuando se utiliza existe la posibilidad de que se bloquee a uno de

    los procesos, al no imponer un orden entre los procesos que esperan.

    Recordando que postergamiento indefinido se presenta cuando

    algunos procesos progresan hacia su finalizacin pero uno o ms procesos

    estan bloqueando el recurso esperando una condici6n que nunca se dard.

    Un proceso congelado 5 proccso bloqueado.

    Todo depende de como se implementen los semdforos y cual sea la

    poltica de asignacin de recursos. Si por un lado se da por prioridad

    preferente, y los procesos solicitan entrar en su seccin critica con

    mucha celeridad, hay una gran probabilidad que el proceso con menox

    prioridad no sea atendido y por lo tanto bloqueado.

    Por otro lado si cuando un proceso esta esperando para entrar a su

    seccion crt ica, es encoiado (Cola circular) para esperar su turno

    siguiendo la filosofa que el pr!.rnero en solicitar el servicio ser& el

    primero en ser atendido ( F I F O ) , entonces desaparecer el conflicto

    pat.encia1 de "postergacin indefinida" y aderrs cor.0 se almacena en la

    cola esta "espera" no consumir tiempo de proceso.

    IIX.1.3 Regin condicional atiica.

    "Ld propuesta de las regj one:s condicionales criticas deja de ladc

    l a s dif:cuitacie.. producidas por los sem5foros al utilizar una notacin

    estructuradt para manejar la sincronizacin. Las variables comunes son

    &grupadas ex canjcntos 12 amados recursos. Cada variable comn puede

    34

  • PROGRAMACION C-ONCURRENTE

    estar e? a 1.0 m6s un recurso y puede ser utilizada en intrucciones de

    regiones criticas (IF?). La exclusin mutua es garantizada para que las

    direntes I R C no se rasiapen. La sincronizaci6n condicional se logra a

    trav6s de ictrucciones explcitas de condicin dentro de las L :. " (13) Un recurso r que contiene variables vl,v2, ...m se declara c o w :

    recurso r:vl,v2,. . vn Las variables en r pueden ser utilizadas slo dentro de las I R C

    que llamen a r.Tales intrucciones tienen la forma:

    regi6n r cuando C haz I

    Donde C es una expresin condicional e I es una lista de

    instrucciones (tambin pueden aparecer variables locales dentro de las

    IRCI. Una IRC detiene l a ejecucin del proceso hasta que C es verdadero;

    I es entonces ejecutada. La evaluzcir. de C y la ejecucih de I F.O

    pueden ser interrumpidas par otros IRC que llamen al mismo recurso.

    111.1.4 Monitorcs.

    Los semforos y Los mecanismos de exclusin mutua en espera activa

    slo aseguran que un proceso entre a la vez a SG regin activa, no cuida

    de C O ~ Q lo hace ni si al hacerlo errneamente el recurso comparticio sea

    corrompido.

    Los moni Lores son "mecanismos estructur2dos del sistema operativo

    que direccionar este problema de manera . a .LE:

    idea biisica que contiene los monitores es proporcionar una abstraccir.

    de datos adems del control de concurrencia " (14)

    Las acciones con las cuales se identifican los monitores son

    contrc lar la sincronizacin de los procesos y ademds la naturaleza de

    13s operaciones y evitar cambios ir.debidos en los valores globales.

    Cuando 2n un sistema operativo s e han dileadr, los procedimient,x de

    tipo monitor se "obliga" al usuario a ucilizarlcs, '3s un mecarismo

    "duro'* pero necesario.

  • " FROGRAMACIOb! "" COIJCURRENTE

    T,CS T.onltores perrimiten e l accesc er, forma i n d i r e c t a y exclusiva a

    tra-,.&.s de yrocedirpientoo; preestablecidos a l c s zecu~.sos del sistema. Los

    p r o a s o s d e l usuar:lo no ti.enen forma de conczer la estructura,

    o r y u n i z a c i o n , n i i a s vari< I S que tili liza un monitor, s l o s e puede

    d u x i l i a r de l, pero nunca a l t e r a r SIL secuerrcla.

    "En trminos de e s t r u c t u r a , un monitor es esencialmente una

    c o l e c c i n de datos y procedirlientos qde l o s manipulan. Las v a r i a b l e s son

    usuaZrn.ente pr ivadas e i n a c c e s i b l e s f u e r a de el'' ( 1 5 )

    Un formato genera l ser ia :

    nombremonitor:MONITOR; COM

    /*declaration de datos privados*/

    PROCEDIMIENTO publ ico norribre (parametros fornaies) ; C m

    ... -

    cuerpo del procedimiento; TERM

    PROCEDIMIENTO privado-nombre;

    i n i c i a l i z a c i n de ICs ciakcs d e l monitor;

    . . .

    . . .

    . . . TERM nombreEonitor :

    Un rnonitor s l o t i e n e v i d a cuando alguno de sus prccedimi-entos es

    liarcado por un yrcceso ; cu.sndo termina su eje

  • . "

    I

    I" "". PHQGRAMACION CONCURRENTE

    zssul tados , si se r e a l i z a n e s t a s dos acciones e n una s o l a se mejora

    s lgni r i ca t i - Jamente e l rendimiento.

    Pcdemos habiar de pares emisor-receptor con S S canal de memaje

    (comunicacin) e l c u a l e s f l e x i b l e y dependiendo de cada uno de los

    casos se negocia s u aceptaci6n o rechazo. Podemos tener canales

    unidi recc ionales o b i d i r e c c i o n a l e s .

    La comunicaci6n se da entre procesos cooperantes, algunos de estor;

    casos suceden entre Procesogadre y procesos-hi jo , entre l o s hijos de un

    mismo proceso e incl7aso entre procesos que son a jenos .

    IJn mensaje pued.e incluir Fdent i f i cador del transmisoz,

    i d e n t i f i c a J o r del receptor , longitud, c ipo y cuzrpo del rnecsaje.

    Las operac iones b6s icas er, el envio y recepqin de mensajes son

    TRANWTE y RECIBE. Los dest inos o receptores de los rcensajes pueden

    designarse e n d i f e r e n t e s formas

    * Designacin: Como se sabe a qujc :n va

    Designaclbn ciirectz: Siempze que s e genere una operacin de

    mensaje e l tiansmisor debe desirJnaL el. receptor especfico. Cada

    reccptur dclse a n t n c i a r l a fuente de quiier, ciesea recibir un m.er.saje.

    TRBbJSMITE ( 8 , nensajs) ; . ..

    TERM ...

    37

  • PROGRAMACION COhCURRENTE " " """

    RECPBE ( 4, mensaje) ; . . .

    Esta :omunicaci6n ES uno a uno, es d e c i r un t ransmisor (A) enva

    U , I mensaje a QR receptor { a ) , pero si se desea irnplementar rutinas de

    s e r v i c i o I c o c t r o l a d o r de impresora) no s e podran cnn3cer todos los

    nOElkKeS dc l o s proceso:; en un momento determinado pdra poder rea l izar s u

    a c c i c n r,i de donde vex i r l a nueva crden.

    Designacin kndirecta: Las mensajes se envan y se rec iben e n

    depsi.t:cs especializados para e s t e proposito, conocidos como "buzones".

    TRANSMITZ (bl'zsn 1 , mensaje 1 ; ...

    mRM ...

    PROCESO i3 C m

    TERM . . .

    En e l a l g - r i t m o anterior mensaje es una v a r i a b l e p r i v a d a t a n t o

    para e l prcceso A como p s r a e l groceso B , l o s dos proceso se e s t a n

    comunicando e l p r o c e s o F, pcne e l nens>.je en e l buzonl.. dQr.de es buscado

    pL: r el. p r ~ c e s o B.

    Obs-rvar .+a e n l a d e s i g n a c i k n i n d i r e c t a a p a r t e de la

    2 o L J . c sp

  • En e l caso que se r e a l i c e una copia despuCs de e n v i a r l a t a n t o e l

    transmi ,E como e l receptor poseen s u propia copia, rlo importa 10 que

    r e a l l c e e l receptor con s u copia no a l t e r a r 6 La f u e n t e o r i g i n a l que est

    en e l transmisor. Es decir las copias nos aseguran qlle s i un proceso

    corrompe s u copia no a l t s r a r a l o s dems procesos. Las desventa jas son

    que las copias consuinen memoria y c i c l o s de l a CPU.

    Por e l c c n t r a r i o si se decide por pasar un puntero (menos seguro,

    pero ms rpido, acupa menos e s p a c i o ) . S e tendr una nica Copia a la

    cual tendrn acceso todos los pxocesos, mientras un receptor este

    accediendo a l mensaje e l transmisor no debera modif icar lo ; pero en

    e s t e caso es di f c i l d e t e c t a r b a j o l a s c o n d i c i o n e s d e s c r i t a s e l momento

    en e l cua l cada quien hace uso del mensaje. Ya que e l mensa je se

    convier te e n sefial de comunicacin.

    Almacenamiento intermedio: iQu& hacer con io> mensajes enviados

    pero no recibidos a b ? Se Fresentan dos soluciones que a continuacin se

    comentarn dependiendo s i l a corn::nicacin es s incrona o as ncrona.

    La comunicacin entre transmisor-receptor cuando e l s i s t e m a no

    t i e n e almacenamiento intermedic debe ser sncxona. Es decir en e l

    momento dci enviar un mersajre ??be e2;isti.r un receptor l i s t o para

    r e c i b i r l o . Las venta jas de e s t e mecanismo s ncrono es que sus proc~scs

    snplemsntarios son pccx y de fc i l i rnplen ,ac in , inc1 t ;yendo la cer tcza

    de q1.e e l mensaje real-nerte u recibido. T,a d e s v e n t a j a v l z a l es que no

    sFempre se dese,: la s incrcnizaci .cn .

    Paza l o g r a r -1 fupcionamiento asncrono s e bzscari.3 que e x i s t i e r a

    u?. almacenamiento intermedio de menshjes. S i no e x l s t e n r e c e p t o r e s el

    mensa je er.viadc, es conservado p3r e l S ~ S L ; E : T T . E ; operativo y posteri.?rmente

    es en-llado a UII recept.or cuando este es t6 L i s t o . E l transmisor despus

    de e c v i a r s u x e n s a j e puede s e g u i r real izando sus act ividades s i n

    39

    http://sincrcnizaci.cn
  • PROGRWACION CONCURRENTE

    preocuparse de l o que suceda Jon los receptores . E?. lllensajz se guarda en

    un,; c o l a de esp..;? hasta que UP receptor pueda r e c i b i r l o . No se debe

    abu,.ir de e s i a c a r a c c e r i s t i c a ya que puede provocar problerds de bloquea

    erl caso de que u n a tarea t rammita mensa jes irldefiniddirnente.

    Posposicin indefinida: Cumdo se enva un mensaje pero nadie l o

    r e c i b e o cuando se est esperando un mensaje que nunca se genera, s i e l

    proceso no puede l i b e r a r e l recbrsg st. d i c e que e l proceso ha bloqueedo

    e l recurs(; .

    P a r a e v i t a r e l bloqueo o l a posposicin indefinida se implement2

    una funcin de tiempo lmite, s i e n e s t e tiempo no fui? completado un

    intercambio de mensaje, se genera un e r r o r . L a o t r a forma es implementar

    en la funcin RECIBE u11 mecanismo que si hay mensaje l o toma y continUa,

    s i n o no 1.0 espera , y uRa funcin TRANSMITE l a c u a l s i hay un canal l.i_bre

    er,va s u mensaje, s i no l i b e r a el recurso y r e a l i z a o t r a s a c t i v i d a d e s .

    S i n p s i s : RECIBE ( buzon, mensaje, t iempo-limite);

    PROCESO A COM

    . . . TRANSMITE (buzon, mensal;e) ; RECIBE ( rec ib i o-recp, rec, tiempo-limite) ; . . .

    TERM

    PROCESO E COM

    RECIBE(buzon1, mensaje) ; S I r w n s a , - - r e c i b i d o t . n - t i s n p ENTONCES TFANSMTTE! i e c i b i o r e c p , recl ;

    .. ,

    - -

    TERM . . .

    F i t ransmicsr envia un mensaje y ento3ces espera e l mensaje de

    recc'1ocimientd dc-1 : -ec ;ntor . S i el. receptor no r e c i b e e l nensa j e ?or

    cualqujer r a s . j n , el. tiempo l i m i t e e x p i r a y e l transmisor retoma e l

    ccctrol.

    '1 O

  • - - -. - PROGRAMACION CONCURRENTE

    Longitud: U:-, ltimo problema es :.i Icr, mer.sajes dehen s e r f i j 3 s o

    d.- Lcngitud :ariabie. L... infoimacin s ier3re se presenta en d i f e r e n t e s

    tam?fios por e l l o r,o s e r a muy adecuad? t r a b a j a r cor, v a l o r e s f i f o s de

    lvngitud, para lrnpsementar que sean de lon7 i tuc : var iab le se recp~iere d?

    crear dinmicamente mc?rnorias . . t e rmeZias para enca jar e l tamafio d e l

    mensaje. La implr:?entacin descrita es mlly c c s t o s a en tiempo provocando

    posiblemente ! a ragmentacj .li de l a menoria. Si se dec ide por los

    mensajes de l o n g i t u d f i j a se reqsieren irrplcmentar procedimientos extra

    para poder enviar mensajes de n?ayor tamafic; d e l p r e v i s t o .

  • SISTEMA OPERATIVO UNIX

    HERRnMIENTAS QUE PROPORCIONA PARA LA

    PROGRAMACION CONCURRENTE

  • """.- PROGRAMACICN CONCURRENTE

    I\' SISTEMA OPERATIVO UNIX Y LAS HERRAIMIENT.QS QUE PROPORCIONA PARA LA PROGRAMACION CONCURRENTE

    IV.l El sistema operativo UNIX

    Los origcnes del sistema UNIX datan de 1969 (Laboratorios Bell)

    pero es hasta 1974 cuando es introducidv a las universidades, desde ese

    entonces ha recorrido un laxgo camino y se ha ido abriendo un lugar

    tanto en la industria como en la investigacibn. Es el primer sistema

    operativo escrito directamente en un lenguaje de alto nivel (C). Su

    f i l o s o f i U se basa en la conviccijn de que la potencia de un sistema

    depende ms de l a s relaciones entre los programas que de los programas

    propiamente dichos a

    IV. I. 1 El ambiente en Unir

    Cada V ~ Z que se hable de UNIX, se puede estar haciendo referencia

    a diEerentes niveles del sistera operativo ULSIX, manejando tres

    diferentes niveles:

    DNIX: "Es el nlicleo (KERNEL) de ?.m sistema operativo de tiempo

    com?srtido, un srograma que controla los recursos de una computadora y

    los asigna entre los usuarios. Permite a los usuarios correr sus

    programas, controle l o s dispositivos perifricos (discos terminales,

    impresores, etc) conectados a la mquina, jr proporciona un sisteme de

    txcnlvos que ?.&ninistra el almacenamiento a largo plazo de inforrracin

    tal c3rp.o programas, datos y dccumentos . " (1.7)

    UNIX: A?a,:ca no slo el ncleo, sino tambih programas

    escencial?~, entre ellos compiladores, editores, lenguajes de comandos,

    prJgramas para copiado e impresin de archivos, etc. (18)

    m I X : Prede incluir programas desarroLlados por el usuario >ara

    ser ejecutados eri el sistema, por ejempio herramientas para preparar

    rutinLis para anllisis est3distics y psquetes graficos.

  • - PROGRAMACION CONCURRENTS

    Norinal.ment~, las tlres definicirmes anteriores se traslapan entre

    s y a l ectar trabajando se cmbina?, los programas que se presentan en

    esta parte fueron compilados y corridos en el ambien-Le UNTX de una

    computadoia NEXT.

    Las versiones de UNIX pueien tener pequeas variaciones de un

    q u i p 0 a otro, pero por lo general son bastante estndares, se

    recomienda rrvisac el manual d e l usuario si se tiene alguna duda de como

    fueron utilizadas alqunas de las funcicnes.

    1v.1.2 Herramientas que proporciona DNlX para la programacibn concurrente.

    Fara poder explicar con mayor claridad las herramientas que

    proporciona C en un ambiente como UNIX, se describen algunas funciones

    que trabajan sobre la convivenzia de procesos, as como un con-;unto de

    programas que si son seguidos y comprendidos ampliamente se podrn

    comprender son claridad las soluciones presentddas para los problemas

    clsicos que s e presentan en la iiltima parta.

    Los progrcras demuestran un canuno simple para el uso de los

    canales de cornunicaci6n y sincr3nizacin como ms adelante se estudiardn

    como son los pipes, socketpairs y sockets. La idea bsica de esta

    interface es hacer que la comunicaci6n entre procesos sea similar a un

    archivo de I/O. En el cul es posible leer o escribir.

    Los descriptores (idencificadores) pueden referenciarse cOmo

    archiv3s normales, para el servicio (incluyendo terminales) o la

    comunicacJ.in entre proczsos. El uso de un descriptor tiene tres fases:

    su creacin, su uso para lectura y/o escritura y su destruccin. El

    progrema que czea el descriptor puede scr diferente al programa que lo

    utiliza. E!. a s o de dzscziptores no es la nica forma de interface de

    cornunLc?cin que provee UNIX, pero fu6 la que se trabaj para

    i-yleyentar los algoritmos.

  • P~OGRAPlAClON CONCURRENTE

    iV.1.2.1 Creaain de procesos.

    Hay varias funciones que pueden ser utilizadas ;sara la creaci6n de

    procesos independientes.

    FORRO

    Sinpsis : Rurcibn: Crear un nuevo proceso

    pid = fork0 ; i n t pid

    Causa la creaci6n de UR nuevo proceso. El nuevo proceso (proceso

    hijo) es una copia exacta del proceso que lo llamb, excepto por las

    siguientes caractersticas:

    * El proceso h i j o tiene su propio identificador. * El proceso hijo tiene un identificador diferente para s u padre. * El proceso hijo tiene su propia copia del descriptor del padre.

    La instruccin fork devuelve un valor 0 (cero) para identificar al

    proceso h i j o , un valor negativo !-1) para indicar que Uil error ha

    ocurrido y un valor positivc (normalmente el identificador) para

    recmocer al proceso padre.

    Er. la figura se muestrs la forma en que es posible generar

    procesos hijos a partir del padle :

    a) Un solo hijo

    p i d = fork() ; if ( pid == O)

    else / * Se trata

    / * ,"e :rat+ ?

    h) Mltiples hijos t

    del h i j o * /

    del padre * 1

    fo". (i=O; i< NUMHIJOS; it+) i pid == fork (1 ; if(pid == O ) [ / * Se trata del hijo i*/

    ir- NUMHIJOS ) 1

    i f (pid ! = O ) / * Se trata del padre * /

    i

    44

  • PROGRAMATION CONCURRENTE

    c ) sq h i j o d e l h i j o ( n i e t o ) "

    I p l l l = fork() ;

    {

    if (pidl==O)

    / * St ata d e l h i j o * / pid2 = fork ( ) ; if (pid2 ! = O )

    else

    1

    / * S e t r a t a d e l n i e t o * /

    / * S e t r a t a d e l hijo * /

    else / * S e t r a t a d e l p a d r e * /

    0) .Ra#rc.: .......... ........... ........... ......... , . .big&.;' ........... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    I fork

    a) Un h i j o b) V a r i o s h i j o s

    F i g . 4 . 1 . 1 Generacin de procesos

    e ) Un nieto

    EXECL ( )

    Funcin: E j e c u t a r un programa.

    execl(nombre, argO,argl, .... argn, O) char *nombre, *argO, *argl, . . . . *argn; execv (nombre .. argv) char *nombre , *argv [ ] ;

    Sinpsis :

    execle(nombre, argO,argl, . . . . argn, O, envp) cha;. *nombre . *argO . *argl . . . . . *argn , *envp [ 1 ; E s t a s r u t i n a s p r o v e e n d e v a r i a s i n t e r f a c e s p a r a l a e j e c u c i n d e un

    z r c h i v o llamadc por e l sistema. Transforman la l lamada del proceso padre

    45

  • PROGRAMACION CONCURRENTE - en un nuevo proceso sin realiz3r la copia del ambiente. El nuevo

    procesos es construido a partir de un archivo noymal ojecntable.

    Donde e1 argum.ent.0 nombre es un puntero (path) ai programa que

    sera ejecutado, :_.i arg[O] debe ser el nombre del archivo ejecutable

    (nombre-arch.out*). si se conocen el nmero de parametros se utiliza

    exec1 pero si no la funci6n que se puede utilizar es execv.

    El nuevo proceso debe tener un encabezado como:

    rnain(args, argv, envp) int argc: char **argv, **endp;

    Y puede recibir como parmetros algunos atributos del proceso

    creador, como serian las entradas a l o s canales (buzones) de

    comunicacin. Pero adems el propio proceso gener3do tiene

    caractersticas inherentes como son : su identificador, el identificador

    de su padre, directorio de trabajo, terminal de control entre otras.

    Cuando el proceso fueqte ejecuta la llamada le entreg? el control

    a l nuevo proceso y este al terminar s u ejecucin no devuelve el control,

    es decir no Legresa al punto donde fcc3 llamado. Si al realizar la

    llamada la funcin devuelve (-1) ha ocurrido y error y su cdigo se

    puede conocer a travs d? la variable global errno.

    SYSTEM ( )

    Sinpsis : Funcin: Ejecutar una instruccin del Shell de ccmandos

    system (cadena-comandos) ckax * cadena, -camando8 ;

    El parmatro cadena-comandos indica al sistema el comando a ser

    ejecut.ado corn., si se encontrara en lnea. E l proceso que lia ejecutado .la

    fmcin system espera hasts que e.. shel3. !:a terminado. y retorna al

    puntc: donde UP llamado.

    46

  • PRUGRAMACION CONCURREm

    Utilizando la funcin system() se puede enviar a correr otro

    programa (crear un nuevo proceso) independiente del actual, pero el

    primero espera hasta que ha terninado el nuevo proceso.

    IV.1.2.2 Comunicacin y sincronizacin entre procesor

    RIPE9 ( ) Ebncin: Crea un canal unidireccional de comunicaci6n entre

    procesos S i n p s i s :

    pipe (buzon) int buzon 121 ;

    La llamada al sistema pipe() crea un mecanismo llamado pipe, el

    descriptor que devuelve la liamada puede ser usado para leer o escribir

    a l pipe. Si se escribe al pipe se utiliza el deszriptor buzonlll en uno

    de los extremos y se lee a travks del otro punto buzon[O], la capacidad

    del canal es de 4096 bytes.

    Los pipes no son otra cosa que un descriptor y pueden ser usados

    en UNIX es forma temporal. Los pipes son caminos para transmisin de

    datos desde un proceso a otro. Los dos procesos que se comunican y el

    pipe son creados pol- un mismo padre.

    UNIDIRECCIONAL

    Fig. 4.1.2 Representaciitn de un pipe (canal unidireccional)

    En la utilizacin de pipes es comn que los procesos que se

    ccimlinican a tr?v&s de ellos hal-an sidr, creados For un mismo padre. Si se

  • -. PROGRAMACION CONCURPENT4

    r e p r s s e n t a e s t a comunicaciGn por medio de rboles como se observa en l a

    * S gura P. 1 .3 se p o d r i a e x p l i c a r de la s i g u i e n t e manera; e l P2 se puede

    conrur,icar con su hermaco P3 a t ravs -3: canal que c r e 6 e l P1 que es el

    padre de ambc pero no se p d r a comnnicar r i i con e l proceso P4, P5, P6

    r i i P7, de l a r~.isi;la forma que P7 se puede cori inicar con su padre y SU

    hernano pero EG l o puede hacer con P4.

    S i un proceso i n t e n t a l e e r de un canal que se encuentra vacio,

    pero e l extremo de escr i tura buzon[l ] , ya fu cerrado, entonces detecta

    un f i n de archivo, y puede e l proceso t e rminar sa t i s fac tor iamente , pero

    si no u cerrado el o t ro extremc, l a tarea b loquea o retiene a l pipe

    hasta que su p e t i c i b n es r e s u e l t a , si se d e s e a e v i t a r que bloquee e l

    rec x so s e puede hacer u t i l izando la funcion fcntli) cuya descr ipc in

    puede encontrarse en l a seccL6n de o t r a s u t F l e r i a s .

    S i ahora :e i n t e n t a e s c r i t i r ,c3bre un pipe donde e l e x t r e r o de

    l e c t u r a ya fui: cerrado (buzon[O] ) se presenta una signal ( i n t e r r u p c i n ) ,

    que ig ta l rnente f ina l iza e l proceso . Pero s i cuando s e i n t e n t a r a e s c r l b i r

    al pipe, e s t e e s t u v i e r a lleno y su extremo de l e c t u r a 50 e s t u v i e s e

    ceriado, provocara que el proceso bloquee el recurso hasta que su

    Coli-citLd sea r e s u e l t a , e la misrna fornla que p a r a l a l e c t u r a se u t i l i z a

    l a funnin f c n t l ; , pars e v i c a r que bloque el cecurcc .

    En 0.1 anexo 1 , ejemplo # 5 , se presenta un programa que u t i l i z a un

    qipe para lograr l a c ~ m u n i c a c i b n de Ln padre con su hljo. S e d i j o antes

    que un p i p e se puede t r a b a j a r corn3 un archivo y de hecho soporta las

    4E;

  • -.- "-I

    I_ " PROGRAMACION CONCURREN'TC

    funciones de lectura y escritura de un archlwo (Read y w r i t e ) . Es un ejerr.210 muy sencillo donde el p?.-.dre se muitiplica despu;.s de crear el

    car22.1 d- comunicacin y posteriormente enva iln mensaje a su hijo y el hijo lee estc. ..?formacin. Observa- que el pipe es unidireccional, es

    decir no es posible que el h i j o responds al padre Enviar! j a su vez un

    mensaje, para poder hacerlo se requiere de otra estructura conocida como

    socketpair.

    BOCXETPAIR (1

    Sinpsis : Funci6n: Crea un canal bidireccicnal de comunicaci6n.

    l i n s l u d e #include

    sockctpdr(dominia, tipo, protocolo, somb) int dominio, t ipo, protocolo; int nombf21;

    La llamada de la funcir, sqcketpair crea un nice par reEerenciado

    par no&, de sockets conectados, son como dos pipes pero en sentidos

    ,contrarios b a j o un mismo nombre. Cuando se crea una estructura de este

    tipo debe especificarse el dominio, el Estilo de comunicaci6n ( t i p o ) y

    el. protocolo.

    Fzg 1.1.4 Un sczketpair (canal bidireccianal).

    Se describen estos campos en forma general ya que no slo se

    utilizan en los sQcketpa i r , Pino tambien en los sockets.

    El parknetro dominio especifica un domir.lo de comunicacin con el

    cual se indica el lugar de la comunicacibn, e s t a s e selecciona junto con

    el Drotscolo de la familia que se utiliza.

    E1 protocolo da la familia generalmente es el mismo que la

    direccin de iz fsmilia que es otorgada despus de la ejecucin de la

    49

  • PRCGRAMAClOh CONCURRENTE

    funcin sxketpair;) (6 socket();. Las farulias se definen er, el archivo

    , las mas utilizas ?ara el presente caso son :

    N;IM FAMILIA/ FROTOCOLO

    ( 0 ) AF-UNSt / PF-UNSPEC (X3 especifico) ( 1 ) AF UNIX i PF UNIX (Protocolo interno en UNIX) (2) AF-INET / PFINET (Protocolo interno en ARPA) ( 6 ) AF-KS / PF N5 (Protocolo en un sistema de red tipo Xerox) ( 3 ) PEIMPL1NK-/ - P F - I M P L I N K (Implica direccin)

    El tip especifica la semdntica de comunicacin entre ia que se

    presenta : SOCK - STREAM : Dos-caminos conectados por un byte ala misma

    corriente. (se utiliza para definir un socketpair) SOCK - DGRAM: Soporta la utilizacin de datagramas (los cuales son

    conecciones, con mensajes de un largo fijc) SOCK - W W : Proporciona un aczeso a l o s protocolo interno e

    interfaces de una red. SCCK -. SEQPACKET: Provee de una secuencia confiable de dos caminos

    conectados a una base, por medio del cual se trasmite informacin utiiizando datagramas de tamao fijo. Se utilizar1 para leer o escribir en paquete, se utiliza con la familia PF-NS.

    SOCK - RDM: Es un planeador, pero en el momento de escribir estas notas an no est implernentaeo.

    En el anexo 1, ejemplo # 6; se muest.ra como se pueden conunicar un

    padre con su hijo a traves de un socketpair, utilizando esta estructura

    ambos pueden escribir al buzn y ambos pueden leer el mensaje que le

    envi6 el proceso gc?e posee el oiro extsemo del socketpair. S610 en caso

    de que u90 de l o s procesos cerraza su descriptor e1 otro proceso podra

    leer su propio mensaje.

    Cuando el hijo es creado tiene el n?.~.smo ambiente que su padre, el

    pcede cerrar urro de los extremos del sbcket (sockets [ O j ) ya que no lo

    requiere para comunicarse, el lee y escribe a travs del extremo

    zockets[I.]. El padre a su vez cierxa sr?ckets[l] y utiliza sxkets[3!. De

    la misma forma en que es uti! izado un pipe para leer y escribir se

    .I!:ilizan las funciones read() y w r i t e ( ) .

  • " PROGRAMAClON CONCURRENTE

    ~ c - L ~ : crea an nodo (punto espec f i co ) para l a comunicacin

    tindude #include sock * sockct(dominio, tipo, protocolo); int sock, d d n i o , tipo, protocolo;

    La funcibr. socket [ ) crea un nodo en un punto espec i f i co para la

    comunicaci6n y devuelve un d e s c r i p t o r . Los partmetros ya fueron

    d e s c r i t o s ea la s e c c i o n a n t e r i o r ( s o c k e t p a i r ) .

    Los procesos que no t iener, un ancestro en comn, tambien pueden

    ser comunicados con otrcs procesos mediante l a c r e a c i n d e s o c k e t s , como

    se est trabajando ruit iprogramacin el dominio sera en Unix y por lo

    t a n t o l a s e s t r u c t u r a u t i l i z a d a s sern de este t i p o . En e l ejemplo #7

    (anexol) despus de i a Llamada s o c k e t 0 se l e debe bautizar con un

    nombre p a r a p o d e r r e f e r i r l o (UNIVERS3), p a r a e l l o se u t i l i z a una

    estructura conocida como datagrama, l a c u a l en e l archivo

    e s t 6 d e f i n i d a como :

    struct sockddr { u shor sa-family; char s a _ d a t a [ l 4 ] ; I

    .-

    o ..... ............. ... ....... . . . . . . . . . ,............ ......._...... ::E-:?: _..........._. ....... - .... ...... ...... ..,....... . . . . . . . . . ...... 0 . . . . . . _ . . . . . . . . . . . : * : 8 : . . . . . . . . . . . . . . . . . . . 1 4 7 6 8 5

    51

  • FROC,RAMACION CONCURRENTE - -

    Primero a sa-family debe asignarsele la fanilia COL la cual se

    esti trabajando (AF - U N I X ) , y despuCs se copia e l nombre a sa-data ( U N I E A S O ) , y utilizando la funcin bind (ver otras utilerias) se

    bautiza al socket Jn el nombre de UNIVERSO.

    E l programa del ejemplo #7 se trabaja en conjunto con el programa

    del ejemplo # 8 , para realizar esta comunicacin, despues de creado el

    socket por ejemplo-7, ste espera a recibir un mensaje, cuando lo

    recibe, lo despliega en pantalla y al terminar bcrra el nombre del

    socket del directorio.

    E: ejemplo-8 debe ejecutarse despues del ejemplo-7 ya que

    requiere del nombre del datagrama, el cual recibe como parmetro, en la

    linea de comandos. Frimero crea su propio socket o punto de conexin, y

    le asocia el mismo nombre (UNIVERSO) , asi al detectarlo, se conecta y ya

    puede escribir hacia l el mensaje y culminar su acti,Jidad.

    Acciones para ejecutar los programas

    $> ejemplo-7.out

    ---> UNIVERSO

    En otra pantalla debe ejecuLarse el otro prcgrama

    $>e jemp10_-8. out U N I V E R S O

    SI- (1 Funcin: Simplificar el software para utilizar las

    interrupciones SinGpais :

    #include!

    ( * s i g n a l ( a i g , f u n c ) ) (1 i n t (*func) (1 ;

    SIG-SEC ( )

    Sinpais : h c i b n : Software para 2.3. utilizacin de l a s interrupciones.

    # i n c l u d e struct sigvec {

    int *sv-handlsr (1 ; .in* sv_mask ,: ict sv-flags ;

    j ;

    52

  • " PROGRAMACION CONCUREENTE

    sigvco ( s i g , w c , owc) i n t si9 strcut sigvcz. *vec, *ovec;

    Estas dos funclones son ut i l izadas para manejar las

    i n t e r r u p c i o n e s , S i g n a l ( e s una in.terfa,-- l s imple pana f a c i l i t a r el uso

    de s i g v e c 0 que es una funcin ms genera l .

    Una s e a l ( s i g n a l ) e s UT! indicador de un evento anormal, puede ser

    generado por e l u s u a r i o ( q u i t , i n t e r r u p t , s t o p ) , p o r un error en un

    programa ( b u s e r r o r , etc) , por e l requerimiento de otro programa (kill) cuando un proceso es parado porque desea hacer un acceso a la

    terminal de c o n t r o l . Todas l a s s e a l e s t i e n e n l a misma prior idad

    EL uso de seales (s ignal ) , s e presenta de l a s i g u i e n t e f o r n a un proceso enva una sea l a o t ro proceso , l o s procesos que rec iben las

    sea les no pueden i d e n t i f i c a r q u i e n l a s envi, adem6s que e l nmero de

    sea les es pequeo. La s e m n t i c a d e s e a l e s l i m i t a l a f l e x i b i l i d a d de

    los mecanismos de se f ia l izac i6n con un s i g n i f i c a d o de comunicaci6n entre

    procesos.

    E l archivo e s p e c i f i c a t o d a s l s a pas ib les se f ia les que

    t iene su propio nombre, e n t r e las que se encuentran S I G I N T : sea l por in terrupc ikn SIGQUIT : seal de q u i t S I G I L L : sea l de i n s t r u c c i n i l e g a l SIGTRAP : sea l que i n d i c a que una trampa a ocurrido LCIGTZT : sea l in t rucc in de 1/0 S I G F P E : excepcin P O ; punto f l o t a n t e S I G K I L L : sena1 de 1.a funci6n K i l l (no puede s e r i c n c r a d a ) SIGBUS : sea l de e r r o r en e l bus.

    Sigv=c() asigna un manejador e s p e c r i c o p a r a una sea l . S i e l

    parcime%ro vec no e s c e r o e s t e e s p e c i f i c a que l a r u t i n a del manejador y

    12 mscara pueden S E T asadas del1berac.ament-e por l a sea l espec i f i cada .

    De l o c x t r a r i o e l s i s t e i n a d e c i d e que las sea les de l proceso son

    e s p x i f i a d a s con s i g s ' : a c k ( ) . Peso s i e l parmetro ovec no e s cero el

    mar.ejador previo para 12 seal es debuelto a l usuariq. Cualquier proceso

    parado por 31guna razn puede ser ress tab lec lda mediante un sea l .

    53

  • PROGWMACION CONCURRENTE " "

    IV.1.2.3 F i n a l i z a c i n de procesos

    FXI? o S i n 6 p l i s :

    m l c i n : F i n a l i z a e l proceso a c t u a l

    - exit (statua) int status;

    ~3 func in -ex i t f ina l iza un prcceso ccn las s i g u i e n t e s

    consecuencias :

    .* Todos l o s d e s c r i p t o r e s a b i e r t o s en e l proceso llamadox son cerrados . * S i e l proceso padre del proceso l lamador ejecuta la funcibn wait() entonces es n o t i f i c a d o de l a t e r m i n a c i n de su proceso hijo.

    KILL ( )

    Sin6paicr : Funcin : Forza l a f i n a l i z a c i n de un proceso.

    k i l l I-sig I processid . . . k i l l -1

    El conando k i l l enva la sea l de ternrinaci6r. (15) a un proceso

    e s p e c f i c o , si. e l nombre o e l nmero de l a s e a l va precedido por ' - I ,

    es ta sea l es enviada en su lugar para geners.r l a t e r m i n a c i h . Las

    non-Lres de las sefiqles s e pueden conocer con e l comando 'kill - 1' ( < s i g n a l . h > ) ; e s un comando de l n e a p e r o pLede s e r u t i l i z a d