Beanspruchen Downloads den Arbeitsspeicher?

CybMorph

Lt. Junior Grade
Registriert
Jan. 2010
Beiträge
390
Hallo,

ich würde gern mal wissen, ob Downloads den Arbeitsspeicher beanspruchen und wenn ja, in wie weit sie das tun. Ferner interessiert mich einfach aus Neugier, welche software- und hardwaretechnischen Stationen, bzw. Geräte (Modem, Mainboard und Platte ist klar, aber was genau, welche controller oder sonstwas; die genauen Wege eben) die transferierenden Daten durchlaufen.
 
Mal den Browser minimieren und nebenbei n Taskmanager öffnen, dann was downloaden und beobachten welche Prozesse und wie das Ram sich ändert? ;-)
 
Modem -> (Router) -> Netzwerkkarte -> Southbridge -> CPU -> RAM -> Controller -> Festplatte

Und nein, Downloads bleiben nicht im RAM (höchstens beim Puffern, aber dieser liegt allerhöchstens bei ein paar MB meistens aber nur ein paar KB an Pufferspeicher). Wenn überhaupt zwischengepuffert wird und nicht direkt in die Datei geschrieben.
 
Normalerweise beansprucht ein Download den RAM nicht. Es kann aber durch Plugins/Addons oder Virenscanner zur Beanspruchung kommen. Bspw. scannt der AV den Download on-the-fly während und nach dem runterladen, was Arbeitsspeicher verbraucht.

Ich hatte auch mal das Problem, dass Downloads im Firefox komplett im RAM abgelegt wurden. Während ich also eine 1,4-GB-Datei runterludt, blähte sich der Firefox auf. Und da er nur ein 32-Bit-Programm ist, ist er immer gecrasht. Im Internet Explorer hat's dann funktioniert. Das Problem war die Erweiterung Firebug, die in dem Fall nicht ordnungsgemäß funktionierte. Nach dem Deaktivieren liefen Downloads einwandfrei, auch wenn sie temporär doppelt auf der HDD abgelegt werden (einmal im Temp-Ordner und einmal im Ordner, in dem ich die Datei speichere; nach dem Download wird die Temp-Version gelöscht).
 
Im Fall eines Downloads:
Anwendung wartet auf Daten (block)

Datenpaket aus dem Internet -> Netzwerkkarte (OSI Layer 1+2) -> Arbeitsspeicher (DMA) -> Interrupt erzeugen

Windows (Privileged) -> Interrupt bearbeiten -> Daten im Arbeitsspeicher kopieren und in TCP/IP Stack werfen

TCP/IP Stack Prüfung (OSI Layer 3+4) -> Daten an Anwendung weiterreichen (unblock)

Anwendung (unprivileged) -> Daten in temp. Seicher kopieren -> Prüfung (OSI Layer 5-8) -> Buffer

Wenn buffer voll -> Daten in offenes Dateihandle schreiben

Dateihandle -> API Call fwrite (privileged).

Dann wandern die Daten durch das Dateisystem (Rechte, freier Speicher) und werden dann auf die Festplatte (Blockdevice) geschrieben. Hierfür speichert das Betriebssystem idR in 512-4096 Byte weise auf den Datenträger. Wenn die Platte über SATA angeschlossen sind laufen die Daten wie folgt:

RAM -> DMA Zugriff -> Northbridge (SATA Controller) -> Sata-BUS/Protokoll -> Festplatte.

Jede Festplatte hat intern nochmal einen Microchip der sich darum kümmert, dass die Daten geschrieben werden. Wie der jedoch funktioniert weis ich nicht genau.

Das Datenpaket belegt im RAM temporär ein oder zwei Mal den Speicher der Größe des Datenpakets (privileged), diese werden jedoch sofort wieder verworfen, sobald die Daten in die Anwendung übergeben wurden. Die Anwendung speicher die Daten in einem Zwischenspeicher (buffer). Die Größe ist unterschiedlich - ist aber in der Regel weniger als 1 MB oft sogar nur wenige KB und fällt bei heutigen Systemen nicht ins gewicht. Der Buffer wird übrigends für jeden laufenden Download reserviert.

Neben dem Arbeitsspeicher den eine Anwendung verwaltet, nutzt das Betriebssystem den noch freien Arbeitsspeicher als Cache. D.h. wenn du gerade eine Datei gespeichert hast, hat das Betriebssystem meisst noch Teile davon im Arbeitsspeicher. Wenn du dann eine Datei nach dem Download sofort öffnest, muss das Betriebssystem diese Daten nicht mehr von der Platte lesen und ist so um einiges schneller. Da man jedoch nicht so viel RAM wie Festplattenspeicher hat, kann das Betriebssystem nur die "wichtigen" Daten vorhalten. Wie genau das Betriebssystem diesen Cache organsiert, ist von vielen Faktoren abhängig.
 
Ändert sich bei mir so gut wie nicht, ein paar MB, aber das ist "Messungenauigkeit".

Darf man fragen, warum das so wichtig ist? :)
 
Danke für Eure Beiträge; interessant.

@ makiyt
Das ist nicht so mega brennend wichtig; ich hatte gestern Abend nur eine Unterhaltung zu dem Thema, aber es blieb spekulativ, in wie weit der Arbeitsspeicher in Downloadprozesse involviert ist.

Daher meine Frage an dieser Stelle.
 
Ah ok :) NUn ja, die Fragen hier im Forum sind aber eig. immer interessant und ich lerne auch immer sehr gerne dazu.

Kurz OT: der neue FF4 final wird dann auch als x64 da sein, oder?

die beta 10 (läuft super) gibts bisher aber nur als 32er, oder hab ich eine nightly übersehen?
 
FireFox 4 finale Version (=kein beta stadium mehr)
 
Einen Thread entern ist gaaaanz uncool, makiyt. Aber Fx4 wird nicht als 64-Bit-Version erscheinen, weil das bei einem Browser nicht notwendig ist. Der Vorteil von 64 Bit ist, dass man mehr RAM ansprechen kann. Sollte dein Browser in RAM-Bereiche vordrängen, die durch 32 Bit begrenzt sind, hast du eh andere Probleme.

Da Firefox aber Open Source ist, gibt es Custom-64-Bit-Versionen. Hier z.B. Flash und alle anderen Plugins laufen aber nicht, ebenso hast du vielleicht Probleme mit einigen Erweiterungen. 64-Bit-Hostanwendung bedeutet, dass alles 64 Bit ist.
 
Zurück
Oben