cbtestarossa schrieb:
Müssen sie nicht. Wenn man eine Datei downloaded schreibt sich die Datei auf Platte und fertig.
Updates werden in der Regel als komprimiertes Archiv gezogen, die Prüfsummen gebildet und geprüft, entpackt, die entpackten Installanweisungen interpretiert und darauf folgend werden die zu aktualisierenden Dateien aufs Dateisystem gebannt.
Lustigerweise ist dieses Vorgehen bei den Linuxpaketmanagern, Linux Paketformaten (flatpack, snap, ..) Windows Update, Windows AppStore, NuGet, winget[1], Android AppStore, Apple AppStore sehr ähnlich[1].
Wenn zwischen dem Download und dem Berechnen der Prüfsumme das gepackte Archiv noch in Teilen oder noch besser vollständig im Ram liegt, spart sich das Betriebssystem sehr viel Warterei auf den lesenden I/O-Zugriff. Wenn es ums Entpacken geht, ist es auch praktisch, wenn das Archiv noch im Ram liegt. Wenn nach dem Entpacken die entpackten Daten komplett im Ram hat, ist das auch extrem praktisch.
Was jedoch problematisch wäre ist, dass wenn das OS Dateien immer voll in den Ram laden müsste um irgendwas mit Daten zu machen. Das erkennst du ja selbst:
cbtestarossa schrieb:
Wenn dem so wäre könntest du keine Datei größer als dein RAM downloaden.
Oder wie hast du dann unter Win98 oder XP mit 500MB-2GB RAM denn eine 8GB Datei downloaden können?
Jaja Ahnung und so.
Das Betriebssystem läd Dateien nur Blockweise und hält sie im Ram vor. Das aber nicht als statisch reservierten Speicher sondern als "best effort" im Cache. Wenn irgend ein Programm Speicherbereiche einer Datei will und einen Treffer auf dem Cache landet, ist das viel gesparte Zeit. Musste der Cache invalidiert werden, weil der Speicher anderweitig benötigt wurde ist das Pech. Sowas lässt sich vergleichsweise simpel implementieren und verringert iowaits EXTREM. Die Mechanismen sind so wirksam und simpel, dass sowas seit den Uhrzeiten der Betriebssysteme so implementiert wurde und schon zu Win95 Zeiten etabliert war[1]:
http://www.putergeek.com/vcache/
Wenn du jetzt irgendwelche Diskrepanzen bei "früher habe ich das so nicht festgestellt" hast, liegt das wahrscheinlich am ehesten dran, dass die Software nicht genau kommuniziert, was sie eigentlich anzeigt. Wird bei "free" der noch nie genutzte Speicher angezeigt? Der unbelegte Speicher + freigebare Caches/Buffer? Oder gar nur ein Schätzwert, weil im Hintergrund noch Speicherkompression läuft?
Irgendwelche Tricks und Optimierungstools, die einen Cacheflush erzwingen sind gefühlt genauso alt, wie das Caching an sich. Das Einzige was noch (viel) älter ist, sind Leute die irgendwas tun ohne zu verstehen was oder wieso und mit Überzeugung ihre "Lösung" unters Volk bringen.
[1]fast so, als wäre das ein grundlegend gut Idee das so zu machen..