universidad autonoma metropolitana unidad …148.206.53.84/tesiuami/uam7056.pdf · del tiempo de la...
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