2.4 Concurrencia y secuenciabilidad
La concurrencia comprende un gran número de cuestiones de diseño, incluyendo
la comunicación entre procesos, comparación y competencia por los recursos,
sincronización de la ejecución de varios procesos y asignación del tiempo de
procesador a los procesos y es fundamental para que existan diseños como
Multiprogramación, Multiproceso y Proceso distribuido
Los procesos son concurrentes si existen simultáneamente. Cuando dos o más
procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una
concurrencia de procesos. Es importante mencionar que para que dos o más
procesos sean concurrentes, es necesario que tengan alguna relación entre ellos
La concurrencia puede presentarse en tres contextos diferentes:
• Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de
procesador de la máquina fuese compartido dinámicamente entre varios trabajos o
aplicaciones activas.
• Aplicaciones estructuradas: Como ampliación de los principios del diseño
modular y la programación estructurada, algunas aplicaciones pueden
implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: Las mismas ventajas de estructuración son
aplicables a los programadores de sistemas y se ha comprobado que algunos
sistemas operativos están implementados como un conjunto de procesos.
Existen tres modelos de computadora en los que se pueden ejecutar procesos
concurrentes:
• Multiprogramación con un único procesador. El sistema operativo se encarga de
ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la
ejecución de los mismos para dar así una apariencia de ejecución simultánea.
• Multiprocesador. Es una maquina formada por un conjunto de procesadores que
comparten memoria principal. En este tipo de arquitecturas, los procesos
concurrentes no sólo pueden intercalar su ejecución sino también superponerla.•
Multicomputadora. Es una máquina de memoria distribuida, que está formada por
una serie de computadoras. En este tipo de arquitecturas también es posible la
ejecución simultánea de los procesos sobre los diferentes procesadores.
En general, la concurrencia será aparente siempre que el número de procesos sea
mayor que el de procesadores disponibles, es decir, cuando haya más de un
proceso por procesador. La concurrencia será real cuando haya un proceso por
procesador. Aunque puede parecer que la intercalación y la superposición de la
ejecución de procesos presentan formas de ejecución distintas, se verá que
ambas pueden contemplase como ejemplos de procesos concurrentes
Existen diversas razones que motivan la ejecución de procesos concurrentes en
un sistema:
• Facilita la programación de aplicaciones al permitir que éstas se estructuren
como un conjunto de procesos que cooperan entre sí para alcanzar un objetivo
común.
• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo
que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en
paralelo con los demás.
• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma
simultánea.
• Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya
que pueden aprovechar las fases de entrada-salida de unos procesos para realizar
las fases de procesamiento de otros. Así como existen las razones que motivan la
ejecución de procesos concurrentes, también existen sus contras:
• Inanición e interrupción de procesos
• Ocurrencia de bloqueos
• Que dos o más procesos requieran el mismo recurso (No apropiativo)
Tipos de procesos concurrentes.
Los procesos que ejecutan de forma concurrente en un sistema se pueden
clasificar como:
Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperación
de otros procesos. Un claro ejemplo de procesos independientes son los
diferentes shells que se ejecutan de forma simultánea en un sistema.
Procesos son cooperantes: Son aquellos que están diseñados para trabajar
conjuntamente en alguna actividad, para lo que deben ser capaces de
comunicarse e interactuar entre ellos.
En ambos tipos de procesos (independientes y cooperantes), puede producirse
una serie de interacciones entre ellos y pueden ser de dos tipos:
• Interacciones motivadas porque los procesos comparten o compiten por el
acceso a recursos físicos o lógicos. Por ejemplo, dos procesos independientes
compiten por el acceso a disco o para modificar una base de datos.
• Interacción motivada porque los procesos se comunican y sincronizan entre sí
para alcanzar un objetivo común, Por ejemplo, un compilador que tiene varios
procesos que trabajan conjuntamente para obtener un solo archivo de salida.
Comentarios
Publicar un comentario