[Vienna-pm] hash in shared memory?

LAUN Wolfgang wolfgang.laun at alcatel.at
Fri May 21 01:02:27 CDT 2004


Zu den Hinweisen auf die CPAN-Module, die zum Thema SM gekommen
sind, möchte ich eine grundlegende Frage stellen: Warum soll
überhaupt Shared Memory verwendet werden? Damit handelt man
sich eine ganze Reihe von Problemen ein.

(1) Shared memory segmente müssen angelegt und initialisiert
werden. Damit muss man zwischen einem Cold start (SM
anlegen und initialisieren) und einem Restart (z.B. nach
Ausfall eines oder beider Programme) unterscheiden.

(2) Weiters wird Synchronisation zwischen dem Produzenten
(dem Sammler-Prozess) und dem Konsumenten (der DB-Client)
notwendig.

(3) Ein Hash wächst i.a. dynamisch; SM-Segmente sind dafür
nicht unbedingt gut geeignet.

Ich habe in einer Reihe ähnlicher Fälle immer Sockets für
die Weitergabe von Daten verwendet und bin damit recht gut
gefahren. Neben dem Wegfallen aller Nebenbedingungen für SM
gewinnt man gratis dazu, dass Produzent und Konsument auch
auf verschiedenen Systemen laufen können. Speichern der
Daten ist natürlich nur mehr im Kosument notwendig.

Ich habe für das Socket-Handling das Package Msg.pm
aus dem Buch "Advanced Perl Programming" von Sriram
Srinivasan verwendet. Der Code ist auf 
http://examples.oreilly.com/advperl/
zu finden.

(Zusatzfrage: Warum müssen es überhaupt 2 Prozesse sein?)

Für weitere Auskünfte stehe ich gerne zur Verfügung!

Wolfgang Laun
Transport Solutions Division
Alcatel Austria AG
Phone +43 1 27722 5662
Fax   +43 1 27722 1173








> -----Original Message-----
> From: Josef Bergmann [mailto:joe at bec.at]
> Sent: Wednesday, May 19, 2004 5:54 PM
> To: vienna-pm at mail.pm.org
> Subject: [Vienna-pm] hash in shared memory?
> 
> 
> Hi!
> 
> Ich möchte das zwei Linux-Programme auf gemeinsame Daten 
> zugreifen. Konkret, 
> ein Programm sammelt Informationen aus Netzwerkverbindungen 
> und legt diese 
> (z.Z.) in Hashes ab. Nun soll ein anderer Prozess diese Daten 
> periodisch 
> auslesen und in einer Datenbank ablegt.
> 
> Die beiden Teilproblem habe ich ja gelöst, nur wie/wo lege ich die 
> Daten/Hashes ab damit der zweite Prozess darauf zugreifen 
> kann. Gibt es so 
> eine Art Shared-Memory-Modul?
> 
> bye Josef
> -- 
> BERGMANN engineering & consulting  http://bec.at
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at mail.pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm
> 



More information about the Vienna-pm mailing list