Está en la página 1de 80
SeeteDar ret ochre Seem Cotto Paraninfo PROGRAMACION CONCURRENTE JOSE TOMAS PALMA MENDEZ, Mt CARMEN GARRIDO CARRERA, FERNANDO SANCHEZ FIGUEROA, ALEXIS QUESADA ARENCIBIA Gerente Editorial Area Universitaria: Andrés Otero Reguera Editoras de Produccién Clara M? de la Fuente Rojo Consuelo Garcia Asensio COPYRIGHT © 2008 International Thomson Editores Spain Paraninfo, S.A. 12 edicion, 2? reimpresion 2006 Magallanes 25 28015 Madrid, ESPANA Teléfono: 902 995 240 Fax: 974 486 218 clientes@paraninfo.es www paraninfo.es improso en Espana Printed in Spain ISBN. 84-9732-184-7 Depésito legel: M-1 068-2006 (010.5/78103) Reservados los derechos para todos los paises de lengua espa- fiola, De conformidad can lo dis- puesto en al articulo 270 del Codi- ‘go Penal vigente, podran ser casti- ‘gados con penias de mula y pria- lon de libertad quienes reprodu- pren o plagiaren, en todo o en arte, una obra literaria, artistica 0 dientifca Bada en cualquier tipo de soporte sin la preceptiva auio- rizacién. Ninguna parte de esta publicacién, incluido el disefio de li cubierta, puede ser reproduck da, almacenada 0 transmitida de ninguna forma, ni par ningan me: dio, sea éste electranico, quimico, mecanico, electro-6ptic, graba- cin, fatocopia 0 cualquier otro, sin la previa autorizacion escrita or parte de fa Editorial Disefio de cublerta: Digrat Pre impresién: Copibook Impresién: CLM. Eduardo Marconi 3. Polig Industrial Codein. Fuenlabrada (Madrid) Contenido Prologo Capitulo 1. Conceptos fundamentales . 11. 12. 13. MODULO | Conceptos fundamentales Introduccion sein Concepto de programacién concurrente 1.2.1. Programa y proceso 1.2.2. Concurrenci 1.2.3. Programacién concurrente .. Beneficios de la programacién concurrente 13.1. Velocidad de ejecucién 1.3.2. Solucin de problemas inherentemente concurrentes Concurrencia y arquitecturas hardware 14.1, Sistemas monoprocesador 4.2. Sistemas multiprocesador Especificacién de ejecucién concurrenie L5.L, {Qué se puede ejecutar concurrentemente? 1.5.2. Como especificar la ejecucién concurrente Caracterfsticas de los sistemas concurrentes. 6.1. Orden de ejecucién de las instrucciones . 1.6.2. Indeterminismo ... : Problemas inherentes a la programacién concurrente . 1.7.1, Exclusi6n mutua .. 1.7.2. Condicién de s xi © MTES-Paraninto vi CONTEWIDO 1.8. Correccidn de programas concurrentes . ceeeeeeeee 2 1.9, Resumen ...... 23 Problemas resuelios . 23 Problemas_propuestos 26 Capitulo 2. Procesos vs. hilos ... 29 2.1. Proeesos ...... eae 29 2.1.1. Ciclo de vida de un proceso . 20 2.1.2. Disposicién en memoria de un proceso 30 2.2. Procesos en Pascal-FC ... 32 2.2.1. Declaracién de procesos 33 222; 35 2.2.3. é of 2.24, cidn de process en Paseal-FC 37 2.2.5. Ejecuci6n de un programa en Pascal-FC 37 2.3. Hilos = = 38 2.3.1, Estandares de hilos 40 2.3.2. Implementacién de hilos . 41 2.3.3. Planificacién de_hilos 4 24. Hilos en Java ...... 43 2.4.1. Hilos y objetos . 43 2.4.2. Creacién de hilos .... 45 2.4.3. Objeto autonome en un hilo . 47 2.4.4. Estados de un hilo en Java . 48 2.4.5, Planificacién y prioridades 49 2.4.6. La clase Thread ... www 3 2:5. RESMMEM vcscamacimvanavonceiusiiieannasieciivensanuraN . 54 Capftulo 3. Primeras aproximaciones a la solucién de los problemas de la pro- gramacién concurrente .... 55 3.1. Intreducci6n 35 3.2. Tipos de sineronizacién y su soluci 56 3.2.1. Exelusién mutua .. 56 3.2.2. Condicion de sincronizacién 37 3.2.3. Soluciones a los dos tipos de simcronizacin 58 3.3. La Espera-Ocupada para la exclusion mutua ... 59 3.3.1. Algoritmos no eficientes . 61 1.1. Primer intento 6l Segundo intento (alternancia) . 62 ‘Terer intento (falta de exclusion mutua).. 63 3.1.4. Cuarto intento (espera infinita) ... 64 3.3.1.5. Quinto intento . 65 Algoritmo de Dekker . 66 Algoritmo de Peterson .......... 68 3.3.4. Algoritmo incorrecto de Hyman . Cs) © ITES-Paraninfo Primi Capitulo 4. Capitulo 5. CONTENIDO 3.3.5, Algoritmo de Eisenberg-McGuire . 3.3.6. Algoritmo de Lamport . 3.4. Soluciones hardware. 3.4.1, Instrucei6én exchen: 3.4.2. Instruccién de decrementolincremento 3.4.3, Instruceion test 3.5. Resumen ...... Problemas resueltos Cuestiones breves Problemas propuestos MODULO II incronizacién basadas en memoria compartida jas de Semaforos 4.1. Introduccién ; 4.2. Definicién de seméforo ... 4.3. Resolucidn de problemas usando semdforos . 4.3.1, Execlusién mutua y condicién de sincronizacién 4.3.2. Problemas clasicos ... aes. 43.2.1. El problema del productor/consumidor .... 4.3.2.2. EI problema de los lectores y escritores ... 43.2.3. El problema de la comida de fildsofos .... 4.4, Implementacion de semiforos ... = wee 4.4.1. Implementacién de semaforos como variables enteras 44.2, Implementacién de semaforos come variables enteras no negativas 4.5. Sincronizacién en Java . 4.5.1. Exclusidn mutua en Java ..... 4.5.2. El caso de las variables volatile 4.5.3, Condicién de sincronizaeion en Java 4.5.4. Bjemplos . . 455. Implemertaciéa. de seméforos oon las primitivas de Java Z 4.6. Inconveniontes del mecanismo de los Problemas resueltos Cuestiones breves Problemas propuestos Regiones criticas condicionales Introduecién Resolucion de sas ales serusoaiaas isa 5.3.1, El problema del productor/consumidor . 5.3.2. El problema de lectores y escritores . vill 70 2 B 14 ich 16 78 78 34 85 89 89 90) ol o1 94 94 96 102 Los 106 108 108 109 112 Liz Lid 122 124 124 139 139 143 143 144 148, 148 150 © ITES-Paraninfo viii CONTENIDO 56: Problemas resueltos Sig Problemas propuestos ........... Capitulo 6. Monitores ........... co 6.2. 6.3. 64. 67. Problemas resueltos .... Problemas propuestos Capitulo 7, Mecanismo de paso de mensaje .. Tale Ts: © ITES-Paraninfo 5.3.2.1. Prioridad en la lectura a Prioridad en la escritura 5.3.3. El problema de la comida de fildsofos Implementacién de la regiGn critica condicional . 3.4.1. Implementacidn con espera ocupada . 5.4.2. Implementacién sin espera ocupada 2 Inconvenientes de! mecanismo de regiones criticas condicio- ales Introduccién Definicién de monitor ‘ Condicién de sincronizacion en monitores 6.3.1. Blogueo de procesos, Operacién delay .... 6.3.2, Desblogueo de procesos. Operaci6n resume 6.3.3. La funcion empty aerate Resolucién de problemas usando monitores 6.4.1. El problema del productor/consu 64.2. El problema de los lectores y 64.2.1. Prioridad en Ia leetura .. 64.2.2. Prioridad en la escritura ... 64.3. El problema de la comida de fildsofos Implementacién de monitores con semiiforos Semantica de la operaciém 6.6.1. Desbloquear y continuar (DC) . 6.6.2. Retorno forzado (DR) ... 6.6.3. Desbloquear y esperar (DE) 6.6.4. Desbloquear y espera urgente (OU) Monitores en Java 6.7.1. Implementacién con seméforos — 67.1.1. Implementacion de una clase Condition Variable ..... 6.7.2. Implementacién con objetos compartidos MODULO Ill Paso de mensajes Introduccion Identifieaeién en ef proceso de comunicacién Sincronizacin 151 192 154 a5 155 156, 158 159 168 171 171 173 176 177 178 179 180, 180 182 183 185 186 188 193 194 194 194, 195 196 196 198 200 202 212 217 27 219 221 Capitulo 8. Capitulo 9. CONTENIDO = ik 7.4. Canal de comunicacién y mensajes 224 7.5. Condiciones de error en los sistemas de paso de mensajes .. 226 7.6. Espera selectiva vo... 227 7.7. Resumen ...... see ee Problemas propuestos .... 234 Paso de mensaje asincrono . 235 8.1. Introduccién 235 B82. Besolucién dosrroblermas:emmpleando paso de-mensaje asin crono sitiiaated BAT 8.2.1. El problema del productor/consumidor . 240 8.2.2. El problema de los lectores y escritores .... 241 8.2.2.1. Prioridad en Ja leetura . 8.2.2.2. Prioridad en la escritura cs 8.2.3. El problema de la comida de fildsofos 8.3. Paso de mensaje asincrono en Java 8A; |Basy iccmeniae matseroms exends engages 8.5. Resumen .......cccceereee Problemas resucltos Problemas propuestos .....6...064 ies Paso de mensaje sincrono con canales 275 9.1, Introduecién 275 9.2. Comunicacién mediante canales cn Pascal ¥C 276 9.2.1, Espera selectiva basica . 278 9.2.2. Espera selectiva con guardas seus 2S 9.2.3. Espera selectiva con la alternativa terminate ..... 280 9.2.4. Espera selectiva con la alternativa else . 281 9.2.5. Espera selectiva con la alternativa timeout . 282 9.2.6. Espera selectiva con prioridad ..... 283 9.3. Resolucién de problemas empleando canales en Pascal- FC. 286 9.3.1. El problema del productor/consumidor . 286 9.3.2. El problema de los lectores y escritores. . 289 9.3.2.1. Prioridad en la leetura 289 a3: Prioridad en la eseritura . « 294 9.3.3. El problema de la comida de los fildsofos . 297 9.4. Paso de mensaje sincrono en Java 299 9.41, Canales y Java . 209 94.1.1. Clase 300 94.1.2. Clase ceionable . 301 9.4.1.3. Clase select 302 9.4.2. Ejemplo de uso... 5 . 303 9.4.3, Nueva version para el paso de mensajes asincrono .. 304 9.5. Paso de mensaje sfncrono en Oc ic CS © ITEs-Paraninfo

También podría gustarte