Wofür braucht man Shared Memory ? Belegt es RAM oder Platz von der HDD ? Ciao Tobias
Moin,
* Tobias Geis
Wofür braucht man Shared Memory ? Belegt es RAM oder Platz von der HDD ? Mit 'Shared Memory' bezeichnet man einen Speicherbereich (also RAM), der von mehr als einem Prozeß gleichzeitig genutzt wird. Auf diese Weise können Daten zwischen den Prozessen ausgetauscht werden. Das Verzeichnis in /dev/ wird davon ein Abbild sein.
Thorsten -- They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety. Benjamin Franklin
Thorsten Haude wrote:
Moin,
* Tobias Geis
[01-06-25 00:15]: Wofür braucht man Shared Memory ? Belegt es RAM oder Platz von der HDD ? Mit 'Shared Memory' bezeichnet man einen Speicherbereich (also RAM), der von mehr als einem Prozeß gleichzeitig genutzt wird. Auf diese Weise können Daten zwischen den Prozessen ausgetauscht werden. Das Verzeichnis in /dev/ wird davon ein Abbild sein.
Hi, ich habe in der SDB von SUSE mal shm eingegeben und hatte einen Artikel im Zusammenhang mit Adabas !? Werde nicht ganz schlau draus. Und es ist bei mir eigentlich nicht in der fstab eingetragen und wird dennoch geladen. Also in der mtab stehts drin. Ciao Tobias
* Tobias Geis schrieb am 25.Jun.2001:
ich habe in der SDB von SUSE mal shm eingegeben und hatte einen Artikel im Zusammenhang mit Adabas !? Werde nicht ganz schlau draus.
Hat ja wohl nichts damit zu tun. Die sdb dient zur Fehlerbehebung, nicht aber um allgemeine Fragen zu klären.
Und es ist bei mir eigentlich nicht in der fstab eingetragen und wird dennoch geladen. Also in der mtab stehts drin.
Die /etc/fstab ist nur dazu da, den mount-Befehl zu vereinfachen. Ein Beispiel hierzu: Meist hat man das Gerät, auf der die CD-Rom liegt nach /dev/cdrom verlinkt. Die CD-Rom will man neuerdings nach /media/cdrom mounten. Um dies zu bewerkstellingen müßte man mount -o ro /dev/cdrom /media/cdrom eingeben. Dank der /etc/fstab reicht es mount /media/cdrom einzugeben, und schon wird die CD-Rom gemountet. Alle anderen Angaben, entnimmt mount aus der /etc/fstab. Außerdem darf, dank der user Option in der /etc/fstab jeder User die CD-Rom mounten, was sonst nur root dürfte. Eine weitere Vereinfachung des mount-Befehls besteht in die Möglichkeit der Option -a. Mit mount -a werden alle Einträge der /etc/fstab, die kein noauto Option haben gemountet, soweit sie es noch nicht sind. Neben mount gibt es noch andere Befehle, wie fsck oder dump, die auf der /etc/fstab zugreifen. Aber sie alle, einschließlich mount, haben die Eigenschaft, daß sie außschließlich lesend auf /etc/fstab zugreifen. Kein Befehl verändert die /etc/fstab. Das muß der Systemverwalter schon selber machen. Eine Außnahme hiervon bildet natürlich yast oder yast2. Das sind Administrations-Hilfsprogramme. Das System verändert von sich aus die /etc/fstab nicht. Insbesondere zeigt die /etc/fstab *nicht* den aktuellen Stand der gemounteten Geräten an. Du kannst aus der /etc/fstab nicht erkennen, ob die CD-Rom nun gemountet ist oder nicht. Selbst wenn Du einzelne Partition umountest, so erkennst Du es nicht an der /etc/fstab. Dafür ist die /etc/mtab da. Die /etc/mtab stellt, nach Möglichkeit, ein Abbild der gemounteten Partitionen dar. Hier kann man nachsehen, ob die CD-Rom gemountet ist oder nicht. Hierauf greifen die Systembefehle schreibend zu. Allerdings geht dies nur, wenn die /-Partition rw gemountet ist. In einer frühen Phase des Bootens ist die /-Partition ro gemountet. Da kann /etc/mtab nicht stimmen. Wenn der fsck so richtig fehlschlägt, dann kommt man im Singeluser-Modus auf diesen Zustand, in dem die /-Partition ro gemountet ist, und aller anderen Partitionen gar nicht gemountet. Glücklicherweise ist dann aber schon die /proc-Partition gemountet, und weil sie kein Festplattenbedarf hat, ist sie sogar rw gemountet. Somit kann man den aktuellen Mountzustand in /proc/mounts ersehen. So, und nun zur Frage, warum /dev/shm gemountet ist, obwohl sie nicht in der /etc/fstab steht. Ganz einfach, gemountet wird mit Hilfe des /etc/init.d/boot Skripts, daß gemäß der /etc/inittab nach dem Booten von init aufgerufen wird. Dort gibt es unter anderem auch den Befehl mount -a genauer (SuSE 7.2): mount -av -t nonfs,noproc,nodevpts der wie oben beschrieben, alles in der /etc/fstab mountet, aber es steht da an spätere Stelle auch: mount -t shm shmfs /dev/shm || ECHO_RETURN=$rc_failed Hiermit wird shm gemountet. Dies steht, wie obiger Befehl übrigens auch, in einem if-Teil. (allerdings einem anderen.) Das ganze hat folgenden Kommentar als Überschrift: # mount shmfs is necessary (2.4 kernels) Das shm Filesystem hat somit was mit dem 2.4 Kernel zu tun. Genaueres weiß ich leider auch nicht. Schau mal in den Kernelquellen, vielleicht findest Du da was. Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
On Mon, Jun 25, 2001 at 08:02:05 +0200, Bernd Brodesser wrote:
* Tobias Geis schrieb am 25.Jun.2001:
ich habe in der SDB von SUSE mal shm eingegeben und hatte einen Artikel im Zusammenhang mit Adabas !? Werde nicht ganz schlau draus.
Hat ja wohl nichts damit zu tun. Die sdb dient zur Fehlerbehebung, nicht aber um allgemeine Fragen zu klären.
Oh doch - das hat mit Sicherheit was miteinander zu tun. Shared Memory ist ein wichtiges Mittel zur IPC (Interprozesskommunikation) und DBMS nutzen ihn bis zum Exzess: - gemeinsame Daten-Buffer, Logbuffer und Caches; DBMS verwalten in der Regel die Festplattenzugriffe selber und schreiben erstmal alles in den RAM - und beim Lesen von Daten bleiben diese im Buffer für andere Leseprozesse verfügbar. Das geht soweit, dass (z. B. bei Oracle) versucht wird, die gesamte DB in den RAM zu holen. - Verwaltungs-Informationen: Sperren auf Records / Pages, statistische Informationen (Anzahl von Sätzen in Tabellen usw., wird für die Optimierung von Suchanfragen benötigt) ... steht alles im Shared Memory. Es ist also keinesfalls verwunderlich, dass shm im Zusammenhang mit ADABAS genannt wird. Jan
Moin,
* Oliver Kiehl
Mit 'Shared Memory' bezeichnet man einen Speicherbereich (also RAM), der wie ist denn dass moeglich: $ df -h shmfs 313M 0 312M 0% /dev/shm
also 312 MB shared Memory. Ich habe aber nur 256 MB RAM. Entweder wird geswapt oder die meinen mit Shared Memory etwas völlig anderes.
Thorsten -- Don't worry, spiders, I keep house casually. Kobayashi Issa
On Mon, Jun 25, 2001 at 11:11:26 +0200, Thorsten Haude wrote:
* Oliver Kiehl
[01-06-25 07:41]: Mit 'Shared Memory' bezeichnet man einen Speicherbereich (also RAM), der wie ist denn dass moeglich: $ df -h shmfs 313M 0 312M 0% /dev/shm
also 312 MB shared Memory. Ich habe aber nur 256 MB RAM. Entweder wird geswapt oder die meinen mit Shared Memory etwas völlig anderes.
Linux verwaltet (wie andere Unix-Systeme auch) den verfügbaren Speicher nicht über den physikalischen Adressraum des RAM, sondern über virtuelle Adressen. Das Mapping auf die physikalischen Adressen im RAM oder in den SWAP macht der Kernel, die Anwendungen kriegen davon nichts mit. Es ist also ohne weiteres möglich, sich mehr Speicher zu reservieren, als physikalisch vorhanden ist. Bei Notwendigkeit wird eben ausgelagert. Die Grenze des adressierbaren Speichers für eine Anwendung wird IIRC durch Kernelparameter bestimmt. Ich habe gerade mal aus Jux mir in einer kleinen Anwendung 256 MB Hauptspeicher reserviert - bei 64 MB RAM und laufendem X ;-) Die Anzeige von df -h ist also in Ordnung und auch die Erklärung, dass Shared Memory im Hauptspeicher liegt, ist richtig. Man muss nur beachten, dass es der virtuelle Adressraum des Kernels ist. Das war jetzt ziemlich vereinfacht, aber hoffentlich verständlich. Jan
participants (5)
-
B.Brodesser@t-online.de
-
Jan.Trippler@t-online.de
-
Oliver Kiehl
-
Thorsten Haude
-
Tobias Geis