Re: Unterschied zwischen "SIZE" und "RES"

From: Martin Cracauer <cracauer(at)cons.org>
Date: Fri, 20 Jul 2001 10:28:28 -0400

Felix Schlesinger wrote on Wed, Jul 04, 2001 at 07:33:38PM +0200:
> Oliver Fromme writes:
> > Felix Schlesinger <Fam_Schlesinger(at)t-online.de> wrote:
> > > Die Unterschiede können auch noch wesentlich grösser werden:
> > >
> > > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
> > > 389 felix 2 0 1282M 5208K select 0:00 0.00% 0.00% lisp
> > >
> > > Wobei ich auch nicht genau weiss was da eingetlich alles in den 1282M
> > > mit drin ist.
> >
> > Theoretisch muß man nur eine entsprechend große Datei oder
> > ein Rawdevice mit mmap(..., PROT_READ, MAP_SHARED, ...)
> > mappen. Speicher wird dadurch nicht verbraucht. Ebenso,
> > wenn man entsprechend viel Speicher mit MAP_ANON oder ein-
> > fach per malloc() anfordert. Das ist durchaus nichts Unge-
> > wöhnliches.
>
> Das war mir schon klar. Soviel RAM habe ich auch nicht ;-)
> Allerdings weiss ich halt nicht, was CMUCL (lisp) da angefordert
> hat. Das ist eine leere Session, direkt nach dem Start.
> Vermutlich sind das die ganzen Libs und die Runtimeumgebung.

CMU Common Lisp allociert direkt nach dem Starten allen Speicher, den
es jemals verwenden kann.

Der Grund ist, dass fuer das Runtimesystem mit dem generational GC
mehr Speicherbereiche gebraucht werden als man mit den ueblichen
zweien hinkriegt.

In C-Programmen (ohne Threads) hat man auf der einen Seite den Stack
und auf der anderen den Heap und die wachsen halt gegeneinander.

In CMUCL braucht man zusaetzlich zu dem ueblichen C-Krams noch static
space, dynamic space, readonly space und binding stack und control
stack.

Die Groessen und Orte dieser Bereiche werden vorher ermittelt und dann
einfach als annonymous space gemmapt, damit man hinterher keine
Ueberraschungen erlebt.

Man kann das ein bisschen mit der Situation eine C-Programms mit
Threads vergleichen. Da muss man die Stacks auch proallocieren und
kann sie spaeter nicht bewegen. Wie gesagt, sobald es mehr als zwei
Speicherbereiche werden, kann man den Simplen Trick mit "einer von
oben nach unter und der andere von unten nach oben" nicht mehr
verwenden.

Martin

P.S. ja das schema ist ein bisschen primitiv, es kommt aus Zeiten, wo
das ganze auf PC/RT unter AIX und MIPS unter Mach laufen sollte.

-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@cons.org>            http://www.cons.org/cracauer/
 As far as I'm concerned,  if something is so complicated that you can't ex-
 plain it in 10 seconds, then it's probably not worth knowing anyway -Calvin
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 20 Jul 2001 - 16:28:32 CEST

search this site