Kann ein Prozess Cache-Speicher so zuordnen, dass der Kernel ihn bei Bedarf beanspruchen kann?

Kann ein Prozess Cache-Speicher so zuordnen, dass der Kernel ihn bei Bedarf beanspruchen kann?

Ich frage speziell zu Linux, aber eine Antwort, die für Unix im Allgemeinen gilt (also POSIX oder ähnliches), wäre natürlich noch besser.

Linux verwendet freien Speicher (also den Speicher, der noch nicht Prozessen zugewiesen ist) zum Zwischenspeichern von Dateisystemmetadaten (und möglicherweise anderen Dingen). Wenn Prozesse zusätzlichen Speicher anfordern, werden diese Caches verkleinert, um Platz zu schaffen.

Meine Frage: Gibt es eine Methode, mit der eine Anwendung Speicher zuweisen kann, der nur als Cache dient? Das heißt, die Zuweisung erfolgt in dem Wissen, dass der Kernel die Kontrolle über diesen Speicherbereich auf irgendeine Weise übernehmen darf, wenn der verfügbare Speicher knapp wird und die Speicherzuweisungen anderer Prozesse andernfalls nicht bedient werden könnten.

Antwort1

Sie könnten vielleichtmadvise(2)ist MADV_FREEdafür da – es markiert Seiten als zur Wiedergewinnung verfügbar, löscht sie aber nicht unbedingt sofort, und die Daten können zurückgelesen werden. Sie wissen, dass die Seiten weg sind, wenn Sie alle Nullen zurückbekommen (pro Seite).

verwandte Informationen