2009-12-05 23 views

Respuesta

72

Es una diferencia bastante simple. En un modelo de memoria compartida, todos los trabajadores operan con los mismos datos. Esto abre muchos de los problemas de concurrencia que son comunes en la programación paralela.

Los sistemas de paso de mensajes hacen que los trabajadores se comuniquen a través de un sistema de mensajería. Los mensajes mantienen a todos separados, de modo que los trabajadores no puedan modificar los datos de los demás.

Por analogía, supongamos que trabajamos juntos con un equipo en un proyecto. En un modelo, todos estamos abarrotados alrededor de una mesa, con todos nuestros documentos y datos establecidos. Solo podemos comunicarnos cambiando cosas sobre la mesa. Tenemos que tener cuidado de no tratar de operar la misma información a la vez, o se volverá confuso y las cosas se mezclarán.

En un modelo de envío de mensajes, todos nos sentamos en nuestros escritorios, con nuestro propio conjunto de documentos. Cuando queremos, podemos pasarle un papel a alguien más como un "mensaje", y ese trabajador ahora puede hacer lo que quiera con él. Solo tenemos acceso a todo lo que tenemos delante de nosotros, así que nunca tenemos que preocuparnos de que alguien vaya a acercarse y cambiar uno de los números mientras estamos en el medio de resumirlos.

¡Bien, analogía tonta!

+10

Similitud tonta, pero +1 para la creatividad. :) –

+1

@SashaChedygov ¿Alguno de ustedes o Chris querrían explicar por qué es una analogía tonta? – Donbhupi

+0

@Donbhupi Me refiero a que es una tontería porque no es un escenario realista del mundo real. Funciona muy bien como una analogía y se adapta bien a los conceptos, simplemente creó una imagen divertida en mi cabeza. Eso es todo. :) –

8

Los modelos de pase de mensajes (Erlang, por ejemplo) no tienen ningún estado compartido; toda la sincronización y comunicación se realiza mediante el intercambio de mensajes. Los modelos de memoria compartida se comunican mediante lectura/escritura en bloques de memoria compartida, que están protegidos por semáforos o similar.

2

El rendimiento del sistema de paso de mensajes puede ser demasiado bajo para algunas aplicaciones que requieren un tiempo de respuesta rápido, pero si necesita mayor velocidad o procesamiento en tiempo real, puede utilizar un sistema de memoria compartida.

3

paso de mensajes son buen método para justificar los datos, pero tiene un tiempo de respuesta lento para communication.But más rápido en la memoria compartida se extraen los datos del modelo de una memoria y de un grupo de trabajo puede hacer un trabajo diferente sobre los mismos datos

+0

Esta respuesta es casi la misma que la de Juned Ahmed. ¿Tienes algo más para agregar? – Artemix

13
  1. En el modelo de memoria compartida, la memoria se comparte mediante procesos cooperativos, que pueden intercambiar información leyendo y escribiendo datos, pero en el mensaje la comunicación se realiza por medio de mensajes intercambiados entre los procesos cooperantes.
  2. La memoria compartida ayuda a ejecutar procesos al mismo tiempo pero no puede pasar mensajes.
  3. La facilidad de paso de mensajes tiene dos operaciones: enviar (mensaje) y recibir (mensaje). El proceso del cual tiene tamaño fijo o variable.
  4. La transmisión de mensajes es útil para intercambiar cantidades menores de datos, porque no es necesario evitar conflictos. La transmisión de mensajes también es más fácil de implementar que la memoria compartida para la comunicación entre procesos.
  5. En los sistemas de memoria compartida, las llamadas al sistema son necesarias solo para establecer regiones de memoria compartida. Una vez que se establece la memoria compartida, todos los accesos se tratan como accesos rutinarios a la memoria, y no se necesita ayuda del kernel.

más rápido

Memoria compartida permite la máxima velocidad y la comodidad de la comunicación, ya que se puede hacer a velocidades de memoria cuando dentro de un ordenador.La memoria compartida es más rápida que el envío de mensajes, ya que los sistemas de paso de mensajes se implementan típicamente usando llamadas al sistema y, por lo tanto, requieren la tarea más larga de intervención del kernel.

+2

en el punto 2), creo que se puede lograr la concurrencia en un modelo de transmisión de mensajes, transmitiendo mensajes a otros trabajadores que pueden comenzar a trabajar simultáneamente. Claramente necesita otros métodos de orquestación para unirse a la salida. Acepto que esto podría ser más rápido en un modelo de memoria compartida, pero el modelo de paso de mensajes admite la ejecución simultánea de procesos –

+1

Ahora, no podemos decir que la memoria compartida es más rápida que el envío de mensajes debido a las llamadas al sistema. Del libro Conceptos del sistema operativo (Abraham Silberschatz) "Investigaciones recientes en sistemas con varios núcleos de procesamiento indican que la transmisión de mensajes proporciona un mejor rendimiento que la memoria compartida en tales sistemas. La memoria compartida adolece de problemas de coherencia de caché, que surgen porque los datos compartidos migran entre los varios caches. A medida que aumenta el número de núcleos de procesamiento en los sistemas, es posible que veamos pasar mensajes como el mecanismo preferido para IPC. :) –

2

Aunque está solicitando las diferencias entre el modelo de paso de mensajes y el modelo de memoria compartida y ya obtuve buenas respuestas sobre sus actuaciones, formas de intercambio de información y problemas de concurrencia, me gustaría señalar que:

No puede haber ningún diferencias fundamentales entre ellos en cuanto a su computabilidad (bajo ciertas condiciones).

Puede simular una memoria compartida sobre el sistema de paso de mensajes subyacente. Esto hace posible ver el modelo de memoria compartida como un lenguaje de nivel superior para diseñar algoritmos en sistemas de paso de mensajes distribuidos asíncronos.

En particular, este documento [email protected]'95 muestra que

cualquier algoritmo sin esperar basado en atómica, de un solo escritor (y multi-escritor) registros multi-lector se pueden emular de forma automática en los sistemas de paso de mensajes, siempre que al menos la mayoría de los procesadores no estén defectuosos y permanezcan conectados. La sobrecarga introducida por estas emulaciones es polinomial en la cantidad de procesadores en el sistema.

Cuestiones relacionadas