PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommunikation zwischen zwei Applikationen: Wie steuern?


pajofego
2006-06-01, 22:16:31
Hallo miteinander,

ich hätte zu folgendem Thema eine Frage:

Wir haben auf der Arbeit eine Simulationsanwendung, dass auf Basis eines Schaltbildes ein Templatefile C-file mit allen notwendigen Routinen erstellt. Dieses C-file wird compiliert und man erhält eine ausführbare Datei (Applikation SimuA). In einigen Fällen ist man daran interessiert eine weitere Applikation (SimuB ist nicht mit o.g. Anwendung erstellt worden) an der Applikation (SimuA) dazu zuschalten. Problem ist, dass man jetzt zwei unabhängige Applikationen hat, die zunächst unabhängig voneinander arbeiten. Mittels einer Kommunikationssoftware (KommC) lassen sich SimuA und SimuB zu so einer genannten Co-Simulation schalten. D.h. wenn SimuA einen Zeitschritt berechnet, dann werden Zwischenergebnisse mittels KommC an SimuB geschickt, das ebenfalls ein Ergebnis für diesen Zeitschritt errechnet. Dieses Ergebnis aus SimuB wird dann wiederum an SimuA mittels KommC zurückgegeben. Und so weiter bis die Simulation fertig ist.

Jetzt meine Frage: Wenn ich zwei Anwendungen schreibe - nehmen wir mal an zwei popelige Hello World Anwendugen - wie schaffe ich dass sie sich gegenseitig die Ergebnisse zuschieben können? Kann mir jemand vielleicht die Technik erläutern, wie soetwas gelöst wird? Ist das vom OS abhängig?

Ich hoffe ich konnte das einigermaßen verständlich erklären :rolleyes:

Danke,

Gruß

pajofego

Demirug
2006-06-01, 22:40:21
Dafür gibt es Lösungen wie Sand am Meer.

Du must schon etwas genauer werden:

- Laufen die Anwendungen auf dem gleichen Rechner oder auf verschiedenen?
- Wie groß ist das Datenvolumen?
- Wie sind die Anforderungen an die Latenz?
usw.

Aqualon
2006-06-01, 22:46:35
Genaueres kann ich dir momentan auch nicht sagen, aber google mal nach inter process communication (ipc). Dazu gehören z.B. pipes und shared memory objects.

Aqua

Edit: mal wieder zu langsam ;)

pajofego
2006-06-01, 23:14:59
Demirug[/POST]']Dafür gibt es Lösungen wie Sand am Meer.

Du must schon etwas genauer werden:

- Laufen die Anwendungen auf dem gleichen Rechner oder auf verschiedenen?
- Wie groß ist das Datenvolumen?
- Wie sind die Anforderungen an die Latenz?
usw.

Das ganze soll zunächst nur auf einen Rechner laufen.
Datenvolumen...mmmh! Pro Zeitschritt (Fruequenz = 1e-5sec bzw. max 5e-6) sind es max. 10 Werte, bei einer Gesamtzeit von ca. 2 sec. Sprich max. 4 Mio. Daten. Die Kommunikation soll aber sequentiell in der o.g. Frequenz ablaufen.

Ablauf sollte dann so laufen:

Zeitschritt: 1e-5: SimuA -> SimuB ->
Zeitschritt: 2e-5: SimuA -> SimuB ->.... usw.

Latenz?!?! Da habe ich jetzt auch keinen Wert. Keine Ahnung ... was man da auch ansetzen soll?

@aqualon: Ich google mal ein bissle rum! Aber falls du ein gutes Beispiel kennst dann wäre ich dir für einen Link dankbar.

Danke,

Gruß

pajofego

P.S.: IPC ist hier dabei das Stichwort für Linux und Windows?

Trap
2006-06-01, 23:22:23
IPC ist der Oberbegriff dazu. Shared memory IPC ist normalerweise die Variante mit der besten Performance. Man kann auch Sockets, Datein oder extra IPC-frameworks wie Corba benutzen, je nach Anforderungen.