Ich sprach aber vom neu entstehenden Bedarf an Speicher (und so hatte ich dich bisher auch verstanden).
neu entstehender bedarf kann problemlos auf einen bereits zugeteilten speicher (auch wenn du es nicht siehst, dass er zugeteilt wurde) erfolgen
nochmal zum schlechten hotelbeispiel: wenn du an der rezeption herumstehst und ein zimmer haben möchtest, ist es dir scheissegal wieviele zimmer vorbereitet sind und wieviele noch nicht - du bekommst eins - wenn nun das zimmer erst gemacht werden muss, musst du halt etwas warten
angenommen es gibt zimmer mit roter bettwäscheu und zimmer mit blauer bettwäsche - die statistik sagt, dass 9 von 10 gästen rote bettwäsche bevorzugen - also sind 18 von 20 freien zimmern mit roter bettwäsche bezogen, 2 mit blauer
jetzt kommen aber 4 gäste die alle blaue bettwäsche wollen - nur läuft schnell jemand rauf und bezieht eines der zimmer neu, ein gast muss warten
würden immer alle zimmer (bzw betten) im bedarfsfall bezogen werden müssten immer alle geäste warten - und genau das vermeidet die speicherverwaltung indem sie speicher mit dingen befüllt, die vielleicht mal gebraucht werden - wenn nicht, kann mans immer noch umkrempeln
fastfood-ketten produzieren auch essen obwohls eigentlich nicht sicher benötigt wird - das ist aber ein anderes thema, da es hier um nahrungsmittel geht die wirklich weggeworfen werden (das finde ich nicht in ordnung) da der arbeitsspeicher durch diesen vorgang aber nicht "schlechter" oder "weniger" wird, ist das egal
Jetzt wird's langsam klar: Ja, du redest von Speicher, der längst zugeteilt und auch schon von der Anwendung benutzt worden ist.
nein
Ich hatte dich so verstanden, als ob das Betriebssystem einfach auf Verdacht entscheiden solle, "ach, hier wird ein Prozess gestartet, dem teile ich gleich mal 256MB Arbeitsspeicher zu, vielleicht braucht er's ja".
doch genau das meine ich und das wird auch so gemacht - eine anwendung erhält immer mehr als sie eigentlich benötigt, da es anders herum äusserst langsam wäre
Offensichtlich meinst du mit "Zuteilung" den Wieder-Abruf von ausgelagerten Speicherbereichen, die dem Programm längst "gehören". Das ist etwas ganz anderes als ich anfangs verstanden habe, und in diesem Fall stimme ich dir sogar zu, was die Sinnhaftigkeit betrifft.
siehe oben
Ich habe wenig Arbeitsspeicher, und muss mir mit einer Auslagerungsdatei helfen. Dann ist es vorteilhaft, die bereits zugeteilten Speicherbereiche so lange wie möglich physikalisch im RAM zu behalten. Fordert eine Anwendung weiteren Speicher an, kann man sich überlegen, was günstiger ist: Sofort "vorausschauend" im RAM Platz zu schaffen, indem man andere Speicherbereiche auslagert, oder das erst dann zu tun, wenn die Anwendung auf ihren versprochenen Speicher zugreifen will.
das ist nur der fall, wenn das speicherlimit bereits erreicht ist (dann ist swapping unumgänglich, egal wie gut die speicehrverwaltung ist) - wenn ich 8 gb ram habe, aber aktuell nur 2 benötige, können die restlichen 6 schonmal pauschal verwendet werden (für etwas, was vielleicht mal benötigt wird)
Ich habe reichlich Speicher und bin nicht auf eine Auslagerungsdatei angewiesen. In dem Fall ist die Zuteilung "auf Verdacht" in jedem Fall unnötig und bringt keinen Vorteil, weil sie bei Bedarf tatsächlich "just in time" in Sekundenbruchteilen zu erfüllen ist.
das lesen der anwendungsdaten in den arbeisspeicher (nicht vom swap-file in den arbeitsspeicher) muss dennoch passieren und das spart man sich dann (und das kostet beim anwendungsstart die meiste zeit)
Unsinn wäre vor allem, für eine Anwendung "auf Verdacht" Speicher zu reservieren, und dafür doch erst andere Speicherinhalte auslagern zu müssen.
das ist in der tat unsinn und wird wohlkaum in der praxis gemacht
Da merkt man erst mal, wie oft Windows unnötig auf die Auslagerungsdatei zugreift, wenn man ihm eine zur Verfügung stellt!
kommt auf die windows-version drauf an - windows 2000 und xp machen das in dertat sehr sehr oft und unsinnig - vista nutzt den arbeisspeicher viel schlauer