Shared Memory

Gast #3429417
Lesenswert?

Hallo!

Wenn man große Mengen von Daten schnell lesen will und diese dann einem 
anderen Programm zur Verfügung stellen möchte, zur Auswertung und 
Speicherung, kann man dies ja mit einem Ringbuffer aus Shared Memory 
machen. Der Vorteil ist so hat man auch gleich einen Buffer wenn 
kurzzeitig die Auswertung und das Schreiben mal länger braucht. Welche 
anderen Konzepte gibt es aber ohne Shared Memory?
Gast #3429449
Lesenswert?

Rufus Τ. Firefly schrieb:
> Solange Du "große Mengen" und "schnell" nicht quantifizierst, lässt sich
> da nicht präziseres zu sagen.

Ca 100MB/s kommen von ADCs. Die Daten sollen aber nicht in einer 
Datenbank oder so gespeichert werden. Das Konzept verschiedener 
Programme soll erhalten bleiben indem ein Programm die Daten zur 
Verfügung stellt und je nach Anforderung ein anderes Programm dann diese 
Daten analysiert und speichert.
Gast #3429459
Lesenswert?

Suchender schrieb:
> Das Konzept verschiedener
> Programme soll erhalten bleiben indem ein Programm die Daten zur
> Verfügung stellt und je nach Anforderung ein anderes Programm dann diese
> Daten analysiert und speichert.

Und warum? Man muss damit immer 2 Programme pflegen wenn man etwas an 
den Datenstrukturen ändert. Beide Programm müssen die Zugriff 
Synchronisieren. Beide Programm können nicht getrennt von einander 
laufen.

Auch die Fehlersuchen in 2 Programmen mit dem Debugger ist aufwendiger.

2 Programm haben nur dann eine Vorteil wenn sie auf verschiedenen 
Rechnern laufen.

Dann würde ich lieber 2 Libs schreiben die von einem Programm geladen 
werden.
Gast #3429471
Lesenswert?

Peter II schrieb:
> Und warum? Man muss damit immer 2 Programme pflegen wenn man etwas an
> den Datenstrukturen ändert. Beide Programm müssen die Zugriff
> Synchronisieren. Beide Programm können nicht getrennt von einander
> laufen.

Kein Warum. So soll es nunmal sein... Mit dem Shared Memory kann aber 
z.b das datenliefernde Programm schon alleine laufen lassen nur durch 
den Ringbuffer gehen die Daten dann eben schnell verloren. Die 
Synchronisierung klappt da auch sehr gut wenn man das Analyseprogramm 
später startet.
Gast #3429481
Lesenswert?

Suchender schrieb:
> Das das datenliefernde Programm schon alleine laufen lassen nur durch
> den Ringbuffer gehen die Daten dann eben schnell verloren.

macht nur wenig sinn. Denn die Daten sind dann eh weg

Aber wenn es eh ein Datenstrom ist, dann würde ich Pipes nehmen. Dann 
kann man das zur not auch auf 2 PC laufen lassen.
#3429491
Lesenswert?

Dir Frage ist auch ob es wirklich 100MB/s sein müssen. Wenn das 2. 
Programm eh erst mal den Mittelwert berechnet bevor es die 
Datenweiterverarbeitet, dann mönnte auch das 1. Programm erst mal die 
datenreduzierenden Dinge erledigen.

Wär nicht die erste Frage hier wie man 100MB/s vom ADC übertragen kann 
und danach stellt sich heraus, daß die Daten als erstes nach dem 
Übertragen auf 1/100 durch Mittelwertbildung eingedampft werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren