Shared Memory

Gast #3429417
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
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
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
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
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.
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.