# [gelöst] frage zur speicherverwaltung!

## siddy

hi!

ein bekannter  hat mir vor kurzem erzählt das er sich ein prog installiert hat, mit dem er seinen

ram verwalten kann. das soll ungefähr so funktionieren das man verschiedenen andwendungen feste 

speicherbereiche zuteilen kann.

da google aber nichts vernünftiges ausgespuckt hat, dachte ich mir ich frag mal hier nach.

kennt jemand so ein prog!!

greetz siddyLast edited by siddy on Tue Jun 03, 2008 10:35 am; edited 1 time in total

----------

## SkaaliaN

ich halte von sowas nicht wirklich was! Man sollte den Speicher für die notwendige Anwendung schon ausnutzen. Das wird schon seinen Grund haben. Was bringt es dir wenn man was startest, und der Rest nur noch abschmiert, nur weil du eine unnötige Begrenzung drin hast!?

LG

PS: Du könntest eine Priorität zuweisen.Ob dir das wirklich weiterhilft ist fraglich...!

----------

## SinoTech

 *siddy wrote:*   

> hi!
> 
> ein bekannter  hat mir vor kurzem erzählt das er sich ein prog installiert hat, mit dem er seinen
> 
> ram verwalten kann. das soll ungefähr so funktionieren das man verschiedenen andwendungen feste 
> ...

 

Ich möchte jetzt nicht abstreiten das es sowas gibt, aber im Grunde kann ich mir das nur schwer vorstellen. Das Problem ist das ein Programm zur Laufzeit immer wieder Speicher allokieren und wieder freigeben kann. Es ist daher oft nur schwer abzuschätzen wieviel Speicher dein Programm zur Laufzeit braucht.

Einen Ansatz zur Speicherverwaltung hat die JVM (Java Virtuel Machine). Sie allokiert beim Start eines Java-Programms Speicher (bzw. vergrößert diesen zur Laufzeit) und gibt diesen je nach Bedarf an das auszuführende Java-Programm. Das hat aber natürlich den Nachteil das die JVM meist mehr Speicher allokiert hat, als sie eigentlich für das auszuführende Programm braucht.

Im allgemeinen solltest du das Speichermanagement deinem Programm (allokieren/freigeben) bzw. dem Kernel (auslagern von Seiten in den SWAP, ...) überlassen. Ich glaube nicht das es da einen wirklichen Vorteil gibt wenn man das selbst macht bzw. in der ein oder anderen Art steuern lässt. 

 *siddy wrote:*   

> 
> 
> [...]
> 
> da google aber nichts vernünftiges ausgespuckt hat, dachte ich mir ich frag mal hier nach.
> ...

 

Nope, kenne ich nicht.

Cheers,

Sino

----------

## Anarcho

Also wenn ich das richtig verstehe müsste dieses Programm im Kernel-Space laufen da nur dieser Speicherbereich neuen Prozessen zuweisen kann (bitte korrigiert mich wenn es da tatsächlich andere Möglichkeiten gibt). Denn in einem System mit virtuellem Speicher (hat nichts mit SWAP zutun) bekommt jedes Programm einen gleichgrossen virtuellen und leeren Speicher präsentiert (bis auf das obere Gigabyte (bei 32Bit) welches gemappter Kernelspace ist). Der Kernel selber pflegt die Übersetzungstabelle um vom privaten/virtuellen Adressraum in den physikalischen Adressraum inklusive möglichem SWAP zu übersetzen. Hier müsste so ein Programm eingreifen und das sollte nur im Kernelspace möglich sein.

Ich persönlich würde kein Kernel-Modul welches sich in die Speicherverwaltung einklinkt laden, so es denn für Linux ein solches gibt...

----------

## schachti

Vielleicht ließe sich sowas statt als Kernel-Modul auch als Patch für die glibc realisieren - in meinem System würde ich sowas aber nicht haben wollen, und der Sinn ist mir auch nicht so ganz klar.

----------

## blu3bird

Hallo,

ein Programm für die Speicherverwaltung kenne ich zwar auch nicht, aber es gibt in C/C++ die Funktion mlock mit der ein allozierter Speicherbereich als nicht auslagerbar markiert wird.

Den Speicher als nichtauslagerbar zu markieren macht Sinn, da der Arbeitsspeicher nunmal wesentlich schneller ist als Swap, aber den Speicher an eine bestimmte Stelle im Arbeitsspeicher festzunageln macht überhaupt keinen Sinn, im Gegenteil, genau um das nicht machen zu müssen wurde relocation, PIC und der ganze Kram erfunden...

----------

## Anarcho

 *schachti wrote:*   

> Vielleicht ließe sich sowas statt als Kernel-Modul auch als Patch für die glibc realisieren - in meinem System würde ich sowas aber nicht haben wollen, und der Sinn ist mir auch nicht so ganz klar.

 

Nun, die glibc fragt ja auch nur den Kernel nach Speicher ohne die echte Hardwareadresse zu kennen.

So oder so, das ganze macht einfach keinen Sinn.

----------

## siddy

hallo leute!

erstmal danke für die antworten!

ich hab mal nachgefragt für was das gut sein soll, und bekam folgende antwort:

wenn mehrere progger auf einem server eingeloggt sind und dort nicht nur code schreiben sondern

auch kompilieren, und die software auch testen, dann kann es, falls ein progger einen fehler bei der speicheradressierung gemacht hat, passieren das ein speicherbereich in dem ein teil des betriebssystems

läuft überschrieben wird.  :Shocked: 

das soll vorallem bei C und C++ der fall sein!

das sich meine kenntnisse in diesem bereich stark in grenzen halten, weiß ich nicht genau was ich davon

halten soll.

greetz siddy

----------

## manuels

"Normale" Programme (die Laufen im Userspace) können das Betriebssystem nicht überschreiben. Sie stürzen mit einem Segmentation Fault ab.

Denke, da hasst du was missverstanden.

----------

## blu3bird

 *siddy wrote:*   

> falls ein progger einen fehler bei der speicheradressierung gemacht hat

 

Wie bitte? Geben die die Speicheradressen manuell an? Oder wie kriegt man das beim Aufrufen von malloc hin?

Und wie manuels schon geschrieben hat, Linux würde das Programm mit nem SEGFAULT killen...oder benutzen die irgendein Frickel-OS/Frickel-Libc?

----------

## Anarcho

Also das klingt ehrlich gesagt nach völligem Blödsinn, ausser diese Leute arbeiten mit <= Win98. Selbst unter Win ab NT ist es meiner Meinung nach nicht möglich einfach Kernelspace zu überschreiben.

Und da, wie gesagt, jeder Prozess einen virtuellen leeren Adressraum zugeordnet bekommt kann er dort jede erdenkliche Adresse beschreiben ohne das es den Kernel auch nur juckt. Ausser natürlich (unter 32 Bit) das obere Gigabyte welches dem Kernel gehört, dann gibt es eben eine Segfault, wie schon gesagt. Das ist auch bei Programmen welchen von root gestartet werden nicht anders.

Anders natürlich wenn Kernelmodule erstellt werden. Aber mehrere Entwickler an einem Rechner fummeln am Kernel rum? Wenn dem der Fall sein sollte, dann haben die sicher ganz andere Probleme...

----------

## Treborius

das ist auch völliger quatsch, zumindest unter linux

was passieren kann ist folgendes :

ein progger schreibt ein programm, was unendlich speicher anfordert, dann wird

irgendwann swap benutzt ==> server-performance sinkt ins bodenlose

das kann man aber einfach mit limits.conf einschränken, dazu brauchts kein prog

----------

## siddy

hallo!

schönen danke für die antworten.

ich glaub ich kann das hier auf gelöst setzten, da meine beiden fragen ja geklärt sind.

da keiner weiß wofür das gut sein soll, und keiner so ein prog kennt!!

greetz siddy

----------

## hoschi

 *siddy wrote:*   

> hi!
> 
> ein bekannter  hat mir vor kurzem erzählt das er sich ein prog installiert hat, mit dem er seinen
> 
> ram verwalten kann. das soll ungefähr so funktionieren das man verschiedenen andwendungen feste 
> ...

 

Klingt nach einem Windows-Placebotool mit eingebautem Trojaner und Werbung.

Die Speicherverwaltung ist die Hauptaufgabe eines Betriebssystems, Aenderungen greifen direkt in den Kernel ein und sind somit sehr gefaehrlich und mit hoher Wahrscheinlichkeit eher schlecht fuer die Gesamtperformance des Systems. Sollte jemand mit der Speicherverwaltung seines Betriebssystem unzufrieden sein, muss er sich ein neues Betriebssystem suchen.

Die Speicherverwaltung unter GNU/LINUX ist meiner Meinung nach gut.

Gruss Hoschi

<edit /> Ich bin mir relativ sicher vor einigen Jahren von solchen Tools unter Windows gehoert zu haben, zwischen gefaehrlichen Placebos und Trojaner gab es da alles. Einizg erwaehnenswert ist vielleicht, dass XP in fruehen Tagen manchmal tatsaechlich den NT-Kernel in den Swap gepackt haben soll  :Mr. Green: 

----------

## think4urs11

im Zweifelsfall meint der gute Bekannte nichts anderes als VMWare/Virtualbox/Xen und Co.

würden zumindest alle die Anforderungen erfüllen, wenn auch nicht wirklich ressourcenschonend (gilt nur solange nicht gerade an Bluepill's herumprogrammiert wird *g*)

----------

