Concurrencia y secuenciabilidad.
La concurrencia es el punto clave de los tres campos anteriores yfundamentales para el di-seño de sistemas operativos. La concurrenciacomprende un gran número de cuestiones de diseño, incluyendo la comunicaciónentre procesos, compartición y competencia por los recursos, sincronización de laejecución de varios procesos y asignación del tiempo de pro-cesador a losprocesos. Se vera que estas cuestiones no solo surgen en entornos de multi-procesadores y proceso distribuido, sino incluso en sistemas multiprogramadoscon un solo procesador.La concurrencia puede presentarse en tres contextos diferentes:• Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo deprocesador de la máquina fuese compartido dinámicamente entre varios trabajos oaplicaciones activas.• Aplicaciones estructuradas: Como ampliación de los principios del diseño modular yla programación estructurada, algunas aplicaciones pueden implementarseeficazmente como un conjunto de procesos concurrentes.• Estructura del sistema operativo: Las mismas ventajas de estructuración sonaplicables a los programadores de sistemas y se ha comprobado que algunossistemas operativos están implementados como un conjunto de procesos.En un sistema multiprogramado con un único procesador, los procesos seintercalan en el tiempo para dar la apariencia de ejecución simultánea (figura 4.1a). Aunque no se consigue un proceso paralelo real y aunque se produce unacierta sobrecarga en los intercambios de procesos de un sitio a otro, la ejecuciónintercalada produce beneficios importantes en la eficiencia del procesamiento y enla estructuración de los programas.En un sistema con varios procesadores, no solo es posible intercalar losprocesos, sino también superponerlos.A primera vista, podría parecer que la intercalación y la superposiciónrepresentan formas de ejecución muy diferentes y que introducen problemas
29
distintos. De hecho, ambas técnicas pueden contemplarse como ejemplos deproceso concurrente y ambas plantean los mismos problemas. En el caso de unsistema monoprocesador, los problemas creados por la multiprogramación partendel hecho de que la velocidad relativa de ejecución de los procesos no puedepredecirse. Depende de la actividad de otros procesos, de la forma en que elsistema operativo trata las interrupciones y de las políticas de planificación