On Fri, Feb 23, 2001 at 01:01:33AM +0100, Reinhard Foerster wrote:
Es ist eben gerade der Witz der Sache, das knapper Speicher in unixoiden Systemen ein Problem ist.
Weiß jemand wie andere Systeme das lösen? (NT, VMS, big iron) Reservespeicher für automatische Heapallok??
Du hast nun zwei Möglichkeiten:
- du schmeisst das komplette Unix-Konzept in die Tonne
indiskutabel, da OT :-)
- du sorgst dafür, dass es zu diesen Speicherengpässen nur sehr, sehr, sehr, ... selten kommt. (das bedeutet: ohne Böswilligkeit eines Nutzers im praktischen Betrieb nie)
Eine Möglichkeit: "Swapspace ist billig" (S.R. 1998) :-)
- funktioniert super, verursacht aber einige Probleme an anderen
Stellen :) 2. machen alle anderen mir bekannten Unixe außer Linux sehr erfolgreich (ich meine hier Linux bis v2.2, zu v2.4 kann ich mich mangels Ahnung nicht äußern)
Wie tun die das? Nur solange Pages ausgeben, wie auch tatsächlich welche das sind? Wenn ja, warum dann "sehr, sehr, sehr selten" und nicht "nie"?
Leider ist auch das nicht so einfach:
- Prozessorlast: Dann kann man kein "make" mehr eingeben.
Muß schon ein tollen Makefile sein, damit make selbst echte Last erzeugt.
- Speicherverbrauch: Dann kann man den gimp keine großen Bilder mehr öffnen
lassen.
So, so, gimp also. Ich glaube, daß sich das Problem am Desktop gar nicht erst stellt, da der Nutzer selbst weiß, was er laufen hat und sich nicht selbst den Speicher unter den Füßen wegziehen lassen wird. Problematisch ist doch eher der Server, auf dem viele, potentiell egoistische, Nutzer drauf rumrödeln.
Quark. Nur weil ein Prozess 99% CPU frisst oder 2 GByte gross ist, ist er noch lange nicht böse und damit potentielles Opfer eines kills.
Wenn auf meiner Kiste ein Prozess 2GB frißt, dann bin ICH böse... ;-)
Wie willst du auf einem solchen System in C programmierte Programe sicher ablaufen lassen? Angenommen du rufst eine Funktion auf (return-Adresse und Parameter landen auf dem Stack) wodurch just in diesem Moment eine neue Seite benötigt wird und der Prozess sein mem-Limit überschreitet. Der Prozess würde in dem Moment gekillt ohne daß der Autor des Programms irgendeine Chance hat, diesen Fall abzufangen. => System völlig unbrauchbar
Noch mal die Frage: Wie machen andere Systeme das? Benutzen die auf den "großen Maschinen" irgendwelche utopischen Programmiersprachen? Ich denke eher, das die nach wie vor Cobol, Fortran und evtl. eben auch C benutzen. Aber wie gehen die damit um?
Wenn das Ziel ein *theoretisch sicheres System* sein soll (ich brauche sowas nicht), ist Unix einfach broken by Design. Unix+C wurden aber nicht mit diesem Ziel entwickelt.
Das Ziel ist eher ein "praktisch sicheres System", welches ich auch nicht brauche. Ich hätte lieber ein "funktionierendes".
Gruß, Eric
p.s. Thomas, kannst Du mich bitte mal anmailen, damit ich Deiner Stimme auch eine eMail-Adresse zuordnen kann?