2 minute read

Capítulo 5 Concurrencia. Exclusión mutua y sincronización

CAPÍTULO 5

Concurrencia. Exclusión mutua y sincronización

Advertisement

5.1. Principios de la concurrencia

5.2. Exclusión mutua:soporte hardware

5.3. Semáforos

5.4. Monitores

5.5. Paso de mensajes

5.6. El problema de los Lectores/Escritores

5.7. Resumen

5.8. Lecturas recomendadas

5.9. Términos clave,cuestiones de repaso y problemas

Los temas centrales del diseño de sistemas operativos están todos relacionados con la gestión de procesos e hilos:

• Multiprogramación. Gestión de múltiples procesos dentro de un sistema monoprocesador. • Multiprocesamiento. Gestión de múltiples procesos dentro de un multiprocesador. • Procesamiento distribuido. Gestión de múltiples procesos que ejecutan sobre múltiples sistemas de cómputo distribuidos.

La concurrencia es fundamental en todas estas áreas y en el diseño del sistema operativo. La concurrencia abarca varios aspectos, entre los cuales están la comunicación entre procesos y la compartición de, o competencia por, recursos, la sincronización de actividades de múltiples procesos y la reserva de tiempo de procesador para los procesos. Debemos entender que todos estos asuntos no sólo suceden en el entorno del multiprocesamiento y el procesamiento distribuido, sino también en sistemas monoprocesador multiprogramados.

La concurrencia aparece en tres contextos diferentes:

• Múltiples aplicaciones. La multiprogramación fue ideada para permitir compartir dinámicamente el tiempo de procesamiento entre varias aplicaciones activas. • Aplicaciones estructuradas. Como extensión de los principios del diseño modular y de la programación estructurada, algunas aplicaciones pueden ser programadas eficazmente como un conjunto de procesos concurrentes. • Estructura del sistema operativo. Las mismas ventajas constructivas son aplicables a la programación de sistemas y, de hecho, los sistemas operativos son a menudo implementados en sí mismos como un conjunto de procesos o hilos.

Dada la importancia de este tema, cuatro de los capítulos de este libro tratan aspectos relacionados con la concurrencia. Este capítulo y el siguiente tratan de la concurrencia en sistemas multiprogramados y con multiproceso. Los Capítulos 13 y 14 examinan aspectos de la concurrencia en relación con el procesamiento distribuido. Aunque el resto de este libro cubre cierto número de otros temas importantes del diseño del sistema operativo, en nuestra opinión la concurrencia juega un papel principal frente a todos estos otros temas.

Este capítulo comienza con una introducción al concepto de concurrencia y a las implicaciones de la ejecución de múltiples procesos concurrentes1. Se descubre que el requisito básico para conseguir ofrecer procesos concurrentes es la capacidad de hacer imperar la exclusión mutua; esto es, la capacidad de impedir a cualquier proceso realizar una acción mientras se le haya permitido a otro. Después, se examinan algunos mecanismos hardware que pueden permitir conseguir exclusión mutua. Entonces, se verán soluciones que no requieren espera activa y que pueden ser tanto ofrecidas por el sistema operativo como impuestas por el compilador del lenguaje. Se examinan tres propuestas: semáforos, monitores y paso de mensajes.

Se utilizan dos problemas clásicos de concurrencia para ilustrar los conceptos y comparar las propuestas presentadas en este capítulo. El problema productor/consumidor se introduce pronto para utilizarse luego como ejemplo. El capítulo se cierra con el problema de los lectores/escritores.

1 Por simplicidad, generalmente nos referiremos a la ejecución concurrente de procesos. De hecho, como se ha visto en el capítulo anterior, en algunos sistemas la unidad fundamental de concurrencia es el hilo en vez del proceso.

This article is from: