Diferencia entre revisiones de «Concurrencia de procesos»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(revisión)
(revisión (segunda pasada))
Línea 1: Línea 1:
La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos pueden coincidir en el acceso a un recurso compartido. Para evitar dicha coincidencia, se tienen que emplear mecanismos de arbitraje que permitan coordinar la ejecución de los procesos de acuerdo con las premisas.
+
La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de mecanismo de arbitraje que permiten coordinar la ejecución de los procesos.
 +
 
 +
Un ejemplo de un problema de concurrencia sería el siguiente: Dados dos procesos A y B, suponiendo que ambos se ejecutan indefinidamente en el tiempo, el proceso A debe recibir tiempo de ejecución antes que B, tras esto, el proceso B debe recibir su oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente.
 +
 
 +
proceso A |--  --  --
 +
          |
 +
proceso B |  --  --  --
 +
          |_____________
 +
 
 +
 
 +
Recuerde que el planificador de procesos, al desconocer la naturaleza de los procesos y sus objetivos, no dispone de información suficiente como para garantizar la secuencia de ejecución descrita en el ejemplo anterior. Por tanto, suponiendo que ambos procesos se encuentran en estado preparado, podría seleccionar al proceso B para pasar a estado activo antes de seleccionar al proceso B, situación que no es deseada.
 +
 
 +
Recuerde que el planificador de procesos, como hemos visto en capítulos anteriores, emplea criterios de planificación que no tienen en consideración el objetivo de los procesos. Podemos decir que el planificador de procesos '''desconoce''' cuál es el propósito de los procesos, únicamente puede observar su comportamiento, es decir, si presentan un comportamiento más o menos interactivo.
 +
 
 +
Por tanto, el programador, a la hora de modelar los procesos, debe emplear mecanismos de arbitraje que ofrece el sistema operativo y que permiten resolver el problema de concurrencia que se plantee.
  
 
= Formas de interacción entre procesos =
 
= Formas de interacción entre procesos =
Línea 5: Línea 19:
 
Hay dos formas básicas de interacción entre los procesos:
 
Hay dos formas básicas de interacción entre los procesos:
  
* '''Relaciones de competencia''': Dados dos procesos A y B, ambos procesos tienen objetivos diferentes y compiten por los recursos para conseguirlos.
+
* '''Relaciones de competencia''': Dados dos procesos A y B, ambos procesos tienen objetivos diferentes y compiten por los recursos para conseguirlos. Por ejemplo, dos procesos desean modificar el contenido de un mismo fichero, pero no deben hacerlo de manera simultánea o quedará en un estado incoherente.
 
 
* '''Relaciones de cooperación''': Dados dos procesos A y B, ambos con un mismo objetivo, ''se ponen de acuerdo'' a la hora de emplear los recursos existentes para alcanzarlos.
 
  
El sistema operativo ofrece mecanismos que los procesos, sea de la naturaleza que sean, puedan coordinar su ejecución, así como el acceso a los recursos.
+
* '''Relaciones de cooperación''': Dados dos procesos A y B, ambos con un mismo objetivo, ''se ponen de acuerdo'' a la hora de emplear los recursos existentes para alcanzarlos. Por ejemplo, el proceso A produce un objeto que se consumido por el proceso B, hasta que el proceso A no produzca, el proceso B no debe consumir y viceversa.
  
 
= Mecanismos de arbitraje =
 
= Mecanismos de arbitraje =
Línea 15: Línea 27:
 
Los mecanismos de arbitraje que ofrece el sistema operativo son básicamente dos:
 
Los mecanismos de arbitraje que ofrece el sistema operativo son básicamente dos:
  
* '''Sincronización''': el sistema operativo ofrece mecanismos que permiten a los procesos coordinar su ejecución para conseguir el objetivo sin que sucedan situaciones no deseadas, como por ejemplo que dos o más procesos coincidan simultáneamente en el acceso a un cierto recurso que no se puede compartir.
+
* Mecanismos de '''sincronización''': el sistema operativo ofrece mecanismos que permiten a los procesos coordinar su ejecución para conseguir el objetivo sin que sucedan situaciones no deseadas, como por ejemplo que dos o más procesos coincidan simultáneamente en el acceso a un cierto recurso que no se puede compartir.
  
* '''Mensajería''': el sistema operativo ofrece mecanismos de comunicación basados en mensajes. El intercambio de mensajes entre procesos permite coordinarlo.
+
* Mecanismos de '''mensajería''': el sistema operativo ofrece mecanismos de comunicación entre procesos mediante mensajes. El intercambio de mensajes entre procesos permite coordinarlos.
  
 
= Programación concurrente =  
 
= Programación concurrente =  
  
La programación concurrente se trata del conjunto de técnicas que nos permiten elaborar programas que resuelven situaciones de concurrencia. En programación concurrente, el programador emplea alguno de los mecanismos de arbitraje existentes, basados en sincronización o mensajería, para resolver el problema de concurrencia.
+
La programación concurrente se trata del conjunto de técnicas que nos permiten elaborar programas que resuelven situaciones de concurrencia. En programación concurrente, el programador emplea alguno de los mecanismos de arbitraje que ofrece el sistema operativo, ya sean los de sincronización o mensajería, para resolver el problema de concurrencia.
  
 
= Tipos de mecanismos de sincronización =
 
= Tipos de mecanismos de sincronización =
Línea 29: Línea 41:
 
*[[Mecanismos de sincronización#Optimista|Optimistas]]: Este mecanismo considera que la frecuencia de acceso a un cierto recurso compartido es ''baja''.
 
*[[Mecanismos de sincronización#Optimista|Optimistas]]: Este mecanismo considera que la frecuencia de acceso a un cierto recurso compartido es ''baja''.
 
*[[Mecanismos de sincronización#Pesimista|Pesimistas]]: Este mecanismo permite coordinar la ejecución de dos o más procesos que acceden al recurso compartida con una frecuencia ''alta''.
 
*[[Mecanismos de sincronización#Pesimista|Pesimistas]]: Este mecanismo permite coordinar la ejecución de dos o más procesos que acceden al recurso compartida con una frecuencia ''alta''.
 
Se debe tener en cuenta que si el programador selecciona un mecanismo inadecuado, es decir, que seleccione un mecanismo de sincronización optimista para una situación que requiere el uso de una aproximación pesimista, no se obtendría el efecto deseado.
 

Revisión del 09:12 30 mar 2011

La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de mecanismo de arbitraje que permiten coordinar la ejecución de los procesos.

Un ejemplo de un problema de concurrencia sería el siguiente: Dados dos procesos A y B, suponiendo que ambos se ejecutan indefinidamente en el tiempo, el proceso A debe recibir tiempo de ejecución antes que B, tras esto, el proceso B debe recibir su oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente.

proceso A |--  --  --
          |
proceso B |  --  --  --
          |_____________


Recuerde que el planificador de procesos, al desconocer la naturaleza de los procesos y sus objetivos, no dispone de información suficiente como para garantizar la secuencia de ejecución descrita en el ejemplo anterior. Por tanto, suponiendo que ambos procesos se encuentran en estado preparado, podría seleccionar al proceso B para pasar a estado activo antes de seleccionar al proceso B, situación que no es deseada.

Recuerde que el planificador de procesos, como hemos visto en capítulos anteriores, emplea criterios de planificación que no tienen en consideración el objetivo de los procesos. Podemos decir que el planificador de procesos desconoce cuál es el propósito de los procesos, únicamente puede observar su comportamiento, es decir, si presentan un comportamiento más o menos interactivo.

Por tanto, el programador, a la hora de modelar los procesos, debe emplear mecanismos de arbitraje que ofrece el sistema operativo y que permiten resolver el problema de concurrencia que se plantee.

Formas de interacción entre procesos

Hay dos formas básicas de interacción entre los procesos:

  • Relaciones de competencia: Dados dos procesos A y B, ambos procesos tienen objetivos diferentes y compiten por los recursos para conseguirlos. Por ejemplo, dos procesos desean modificar el contenido de un mismo fichero, pero no deben hacerlo de manera simultánea o quedará en un estado incoherente.
  • Relaciones de cooperación: Dados dos procesos A y B, ambos con un mismo objetivo, se ponen de acuerdo a la hora de emplear los recursos existentes para alcanzarlos. Por ejemplo, el proceso A produce un objeto que se consumido por el proceso B, hasta que el proceso A no produzca, el proceso B no debe consumir y viceversa.

Mecanismos de arbitraje

Los mecanismos de arbitraje que ofrece el sistema operativo son básicamente dos:

  • Mecanismos de sincronización: el sistema operativo ofrece mecanismos que permiten a los procesos coordinar su ejecución para conseguir el objetivo sin que sucedan situaciones no deseadas, como por ejemplo que dos o más procesos coincidan simultáneamente en el acceso a un cierto recurso que no se puede compartir.
  • Mecanismos de mensajería: el sistema operativo ofrece mecanismos de comunicación entre procesos mediante mensajes. El intercambio de mensajes entre procesos permite coordinarlos.

Programación concurrente

La programación concurrente se trata del conjunto de técnicas que nos permiten elaborar programas que resuelven situaciones de concurrencia. En programación concurrente, el programador emplea alguno de los mecanismos de arbitraje que ofrece el sistema operativo, ya sean los de sincronización o mensajería, para resolver el problema de concurrencia.

Tipos de mecanismos de sincronización

Los mecanismos de sincronización los podemos catalogar en dos categorías:

  • Optimistas: Este mecanismo considera que la frecuencia de acceso a un cierto recurso compartido es baja.
  • Pesimistas: Este mecanismo permite coordinar la ejecución de dos o más procesos que acceden al recurso compartida con una frecuencia alta.