La concurrencia abarca una variedad de problemas de diseño, incluida la comunicación entre procesos, el intercambio de recursos y la competencia, la sincronización de la ejecución de diferentes procesos y la asignación de tiempo de procesador a los procesos, y es esencial para que existan diseños como la multiprogramación.
Los procesos simultáneos pueden funcionar de forma
totalmente independiente entre sí o pueden ser asincrónicos, lo que significa
que a veces necesitan cierta sincronización o colaboración.
TIPOS DE PROCESOS SIMULTÁNEOS.
Los procesos que se ejecutan simultáneamente en un sistema
se pueden clasificar de la siguiente manera:
Proceso Libre: Es el que se lleva a cabo sin solicitar el
apoyo o colaboración de otros procesos. Un claro ejemplo de procesos
independientes son los diferentes shells que se ejecutan simultáneamente en un
sistema.
Los procesos son cooperativos: fueron creados para trabajar
juntos en una actividad que requiere que puedan comunicarse e interactuar entre
sí.
Los dos tipos de procesos (independientes y cooperativos)
pueden tener una secuencia de relaciones entre ellos y pueden ser de 2 tipos:
Interrelaciones motivadas a medida que los procesos
comparten o compiten por la entrada de recursos físicos o lógicos.
Relación motivada a medida que los procesos se comunican y
sincronizan entre sí para lograr un objetivo común
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.