2.4 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. Los procesos concurrentes
pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos,
lo cual significa que en ocasiones requieren cierta sincronización o cooperación.
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 como puede ser la cooperación para un determinado trabajo o el uso
de información o recursos compartidos, por ejemplo: en un sistema de un procesador,
la multiprogramación es una condición necesaria pero no suficiente para que
exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente
independiente.
Por
otro lado en un sistema de varios procesos se puede presentar la concurrencia
siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar
información en común o para cualquier otra cosa.
Existen
tres formas modelos de computadora en los que se puede pueden ejecutar procesos
concurrentes:
Multiprogramación
con un único procesador.
En
este modelo todos los procesos concurrentes ejecutan sobre 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.
Un
multiprocesador es una maquina formada por un conjunto de procesadores que
comparten memoria principal. En este tipo de arquitecturas, los procesos
concurrentes no solo pueden intercalar su ejecución sino también superponerla.
En este caso si existe una verdadera ejecución simultanea de procesos, al
coincidir las fases de procesamiento de distintos procesos. En un instante dado
se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
Multicomputadora.
Una
multicomputadora es una máquina de memoria distribuida, en contraposición con
el multiprocesador que es de memoria compartida. Está formada por una serie de
computadoras completas con su UCP, memoria principal y, en su caso, periferia.
Cada uno de estos procesadores completo se denomina nodo. Los nodos se
encuentran conectados y se comunican entre sí a través de una red de interconexión,
empleando el método de paso de mensajes. En este tipo de arquitecturas también
es posible la ejecución simultánea de los procesos sobre los distintos
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.
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.
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.
Elementos a gestionar y diseñar a causa de la concurrencia. Se pueden enumerar los siguientes:
1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PBC’s (Bloque de Control de Procesos)
2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen:
• Tiempo de procesador: Es función de la planificación.
• Memoria: La mayoría de los sistemas operativos emplean esquemas de memoria virtual.
No hay comentarios:
Publicar un comentario