Concurrencia y Secuencialidad
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.
No hay comentarios.:
Publicar un comentario