La concurrencia comprende un gran número de cuestiones de
diseño, incluyendo la comunicación entre procesos, comparició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 maquina 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.
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.
• Archivos:
• Dispositivos de E/S:
3. El sistema operativo debe proteger los datos y los
recursos físicos de cada proceso contra injerencias no intencionadas de otros
procesos.
4. Los resultados de un proceso deben ser
independientes de la velocidad relativa a la que se realiza la ejecución con
respecto a otros procesos concurrentes
No hay comentarios:
Publicar un comentario