Frage

  1. Welche IPC unter Message Queues, Shared Memory und Semaphore ist am einfachsten IPC zu konvertieren zu vernetzen und das ist die härteste.

  2. Wäre es leichter, System V Shared Memory zu konvertieren IPC oder Posix Shared Memory zum Netzwerk IPC zum Netzwerk

War es hilfreich?

Lösung

Als Henrik Gustafsson sagte:

  1. Nachrichtenwarteschlangen sind bei weitem die einfachste IPC-Mechanismus, um Netzwerk zu konvertieren. Semaphoren sind nicht Daten zu vermitteln, ausgelegt und gemeinsam genutzten Speicher benötigt typischerweise Semaphor gesteuerten Zugriff (oder einen gleichwertigen Mechanismus) geeignete Steuerung auch auf einer einzigen Maschine zu schaffen, geschweige denn über ein Netzwerk. Das sei gesagt, System V Message Queues sind wahrscheinlich der am wenigsten weit verbreitete IPC-Mechanismus.

  2. Die Umwandlung von jedem gemeinsam genutzten Speichermechanismus ist in etwa gleich hart. Der entscheidende Punkt ist zu beachten, dass in der Tat Sie selten jemals, wenn ‚Speicher nur geteilt‘ zu verwenden; es gibt auch andere Synchronisierungstools im Einsatz zu.

Andere Tipps

  1. Ich würde sagen, Nachrichtenwarteschlangen mit Abstand auf der Grundlage, dass die Operationen, die Sie in einer Nachrichtenwarteschlange ausführen fast identische Mappings auf Socket-Operationen haben.
  2. Wahrscheinlich genauso hart, ich würde vorschlagen, dass Sie einige etwas mehr Netzwerk freundliche Abstraktion auf dem shm implementieren ... wie eine Nachrichtenwarteschlange. Shared Memory nicht sehr geeignet für die Vernetzung, obwohl es gibt einige netzwerkfähige Implementierungen davon, aber die, die mir begegnet ist, sind undichte Abstraktionen in der Tat.
  1. Semaphore sind nicht wirklich ein Kommunikationsmechanismus, sind sie für die Synchronisation. Gemeinsam genutzter Speicher kann über ein Netzwerk verwendet werden ( Distributed Shared Memory ), aber das ist ziemlich schwer zu implementieren. Nachrichtenwarteschlangen sind einfach, da sie direkt auf Netzwerk-Sockets zugeordnet werden.

  2. Es wäre wahrscheinlich ziemlich ähnlich schwer sein; beide APIs sind ähnlich, sie einfach eine andere Schnittstelle haben.

(1). Am einfachsten ist es Nachrichtenwarteschlangen und das härteste ist Shared Memory.

Ich denke, es ist so, weil Nachrichtenwarteschlangen nur einen Zeiger auf die Nachrichtenwarteschlangendatenstruktur erfordern, wo als gemeinsam genutzte Speicher erfordern, um den Prozessadressraum der beiden Prozesse, die den gemeinsam genutzten Speichers Anbringen und gemeinsam genutzten Speichers Zuteilen ist schwierig, wenn die beiden Prozesse sind verschiedene Maschinen.

(2). Es ist einfacher, Posix Shared Memory als System V Shared Memory zum Netzwerk IPC zu konvertieren.

Ich denke, es liegt daran, dass Posix beide Speicher basiert und benannte Semaphore unterstützt und erfordert keine Kernel-Intervention während System V OS Eingreifen erfordert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top