[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian]: Swapspace foll - was dann



On Thu, Nov 05, 1998 at 08:39:46PM +0100, Michael Bramer wrote:
> On Thu, Nov 05, 1998 at 10:37:31AM +0100, Juergen Doser wrote:
> > On Wed, Nov 04, 1998 at 08:06:55PM +0100, Jens Ritter wrote:
> > > martin@internet-treff.uni-koeln.de (Martin Bialasinski) writes:
> > > 
> > > > >> "AM" =3D=3D Andreas Mueller <andrmuel@rz.Uni-Osnabrueck.DE> writes:
> > > > 
> > > > AM> Was macht Linux eigendlich, wenn mal der Swapspace foll ist?
> > > > 
> > > > Nichts besonderes. Die Anwendungen, die Speicher verlangen bekommen
> > > > sowas wie "out of memory" signalisiert.
> > > 
> > > ... und diese werden dann gestorben (äh, gekillt).
> > > 
> > 
> > Nicht so schnell.
> > 
> > Meines Wissens läuft das ungefähr so ab:
> > 
> > 1. Anwendung frägt höflich das BS: 
> >    "kannst du mir N Bytes zusatzlichen Speicherbereich geben?"
> >    ( in C: malloc(N) )
> > 
> > 2. Im Normalfall sagt das BS:
> >    "Natürlich, gerne. Hier ist er:" 
> >    und reserviert dann diesen Speicher für diese Anwendung und 
> >    'malloc(N)' liefert einen Zeiger auf diesen Speicherbereich
> >    zurück.
> >    In unserem Fall sagt das BS:
> >    "Tut mir leid, soviel hab Ich nicht mehr",
> >    es wird kein speicher reserviert und 'malloc(N)' liefert NULL
> >    zurück.
> > 
> 
> das ist nicht ganz richtig. 
> 
> Bei Linux bekommt man in der Regel immer einen gueltigen Zeiger zurueck. Auch
> wenn der Speicher nicht da ist.
> 
> Daher kann es zu den Problem kommen, das init nicht sehr lange lebt...
> 
> 
> Gruss
> Grisu
> -- 

Hi,

Ich dachte bisher immer, das ist nur bei 'fork()' der Fall. Dort ist es auch
einigermaßen sinnvoll (Der Speicher wird ja im Moment noch gar nicht
gebraucht).

Ich sehe allerdings keinen Sinn darin, daß 'malloc()' einen gültigen Zeiger
zurückgeben soll, auch wenn kein Speicher mehr da ist. Auf was soll denn der
Zeiger zeigen? Er kann auf keinen für diesen Prozess gültige Adresse zeigen
(Es ist ja eben kein Speicher mehr da). Und wenn er auf eine ungültige Adresse
zeigt, gibt es beim ersten Zugriff ein SIGSEGV, ohne daß der Prozess dies
vermeiden könnte (indem er den Zeiger auf NULL prüft).

Über das Chaos, das entstünde wenn der Zeiger auf eine schon benutzte Adresse
zeigt, will Ich mir erst gar keine Gedanken machen.

Tschö
        Jürgen


-- 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Jürgen Doser          doser@uni-freiburg.de
http://www.informatik.uni-freiburg.de/~doser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <your_email_address>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     633


Reply to: