[Help] Semaphoren und Shared Memory?
-
Hallo @ all,
ich habe hier eine Übungsaufgabe mit der ich nicht weiß umzugehen bzw. nicht weiß wie sie aufgebaut werden muss.
***************************************************************************************************
Ein Prozess P1 soll 1000000 int Werte zufällig erzeugen und an einen Prozess P2 via Shared Memory übertragen.
Der Prozess P2 soll diese Werte sortieren und an den Prozess P1 ebenfalls via Shared Memory zurückgeben.Die Freigabe des gefüllten Speicherbreichs an den jeweils anderen Prozess soll mit Semaphoren gelöst werden.
Semaphoren als auch Shared Memory Bereiche bleiben vom System belegt, bis sie wieder freigegeben werden.
***************************************************************************************************
Ich weiß zwar einigermaßen wie Semaphoren funktionieren, aber nicht wie die Kommunikation mit Shared Memory funktioniert.Benötige ich hiefür ein Client-Server-Model? Mit google find ich leider auch nix entsprechendes.
Hoffe hier weiß jemand wie so was funktioniert und kann mir auf die Sprünge helfen damit ich voran komme!
Vielen Dank schonmal!!!
cu
sven
-
Vieleicht hilft dir das weiter (Ist sogar ein kleines Client/Server-Beispiel dabei):http://www.pronix.de/pronix-229.html
-
oder folgender link hilft http://www.ecst.csuchico.edu/~beej/guide/ipc/
-
Hallo nochmal,
war die Tage krank gewesen und bin jetzt erst wieder einigermaßen aufnahmefähig
Danke für die Links...
ich verstehe diese Aufgabenstellung nicht ganz. Was stellen denn diese Prozesse dar?
Sind die in 2 Dateien zu schreiben?
Kann mir das mal jmd anhand des ersten Links bitte erklären. Also welche Änderungen ich vornehmen muss.
Danke nochma1!!!
cu
sven
-
Das wird den Damian aber gar nicht freuen wenn du deine Projektaufgeben nicht selbst machst.
-
Noch nicht mal pipes...
soooo schwer ist das gar nicht.
Eine Datei im shared memory wird unter /dev/shm angelegt, mit open().
Ein Sohnprozess erstellst du mit fork() und mit exec startest du dann sort...
Mit dup2() kannst du die Standardeingabe für sort auf den Filedeskriptor der Datei legen und Standardausgabe auf eine neue Datei im shared memory.So ziemlich alles erklärt findest du hier:
http://ti.fh-bielefeld.de/ti/vorlesung/bs/begleitmaterial/Unix.html
speziell Prozesse:
http://ti.fh-bielefeld.de/ti/vorlesung/bs/begleitmaterial/Unix.html
-
Sorry, hier der 2. Link:
http://ti.fh-bielefeld.de/ti/vorlesung/bs/begleitmaterial/prozesse.html
-
Der Damian hat doch wunderbare Links mit Beispielen auf seine Seite gepackt. So schwer ist das doch wirklich nicht. Hier der Link von Damian:
http://www.galileocomputing.de/openbook/unix_guru/node393.html
Muss man doch nur noch entsprechend anpassen.