Comunicación y Sincronización de Procesos
Los
procesos que ejecutan de forma concurrente en un
sistema se pueden clasificar como procesos
independientes o cooperantes. Un 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 intérpretes
de mandatos que se ejecutan de forma simultánea en un
sistema. Los procesos son cooperantes cuando están
diseñados para trabajar conjuntamente en alguna
actividad, para lo que deben ser capaces de
comunicarse e interactuar entre ellos.
Tanto
si los procesos son independientes como cooperantes,
pueden producirse una serie de interacciones entre
ellos. Estas interacciones pueden ser de dos tipos:
- Interacciones
motivadas porque los procesos comparten o compiten
por el acceso a recursos físicos o lógicos. Esta
situación aparece en los distintos tipos de procesos
anteriormente comentados. Por ejemplo, dos procesos
totalmente independientes pueden competir por el
acceso a disco. En este caso, el sistema operativo
deberá encargarse de que los dos procesos accedan
ordenadamente sin que se cree ningún conflicto. Esta
situación también aparece cuando varios procesos
desean modificar el contenido de un registro de una
base de datos. Aquí es el gestor de la base de datos
el que se tendrá que encargar de ordenar los
distintos accesos al registro.
- Interacción
motivada porque los procesos se comunican y
sincronizan entre sí para alcanzar un objetivo
común. Por ejemplo, un compilador se puede construir
mediante dos procesos: el compilador propiamente
dicho, que se encarga de generar código ensamblador,
y el proceso ensamblador, que obtiene código en
lenguaje máquina a partir del ensamblador. En este
ejemplo puede apreciarse la necesidad de comunicar y
sincronizar a los dos procesos.
Estos dos tipos de interacciones obligan al sistema
operativo a incluir mecanismo y servicios que permitan
la comunicación y la sincronización entre procesos.
|
|