sir.hacks.alot
Aktives Mitglied
- Dabei seit
- 10.03.2005
- Beiträge
- 2.408
- Reaktionspunkte
- 115
Du solltest Dir vielleicht mal die Funktionsweise eines Caches anschauen.Auch hier vergisst Du den Cache völlig. Deine Aussage wäre auch nur dann vollständig richtig, wenn eine festplatte eine einzige Scheibe mit hintereinanderliegenden Sektoren wäre. Da dies nicht der Fall ist, kommen unterbrechungen beim Lesefluss sowieso zustande.
Der Festplattencache enthält meist nur Daten die schoneinmal gelesen wurden zu erneuten Verwendung. Die Festplatte ist ja nicht so schlau als das Sie daß Filesystem analysieren könnte und Daten auf Vorrat in den Cache legen könnte.
Davon ab kann der Cache genau dieses auch nicht bieten. In der Regel liest man Daten von der Festplatte weil man sie braucht. Da die Festplatte bei Lesezugriffen von Daten meist langsamer ist als der Rest des verarbeitenden Systems werden die Daten wenn sie nicht schon im Cache liegen zwar in den Cache geschrieben und von dort wieder gelesen, aber diesen Vorgang kann man nicht wirklich als Caching betrachten, da die Daten ja auch im Cache nur so schnell angeboten werden können wie sie von der Platte geholt werden.
Ergo bringt der Cache bei Ständig wechselnden Daten die von der Platte geholt werden nichts.
Das heißt der Cache wird immer nur dann sinnvoll wenn man häufig auf den gleichen Inhalt der Festplatte zugreifen muss. Für die Startzeit eines Programmes ist der Cache also vollkommen irrelevant, jedoch für den Betrieb des Programms bringt er einiges, da davon auszugehen ist, daß ein Programm häufig auf die gleichen Dateien zugreifen muss.
Der schlaueste Cache den ich mir für eine Festplatte vorstellen könnte wäre einer, der den auf der Platte logisch nächsten block einliest und speichert.
Diese Technik würde natürlich nur bei einem Defragmentierten Datenträger Sinn machen.
Bei Festplatten entspricht der logisch nächte Block schon lange nicht mehr dem physikalisch nächten Block. Der logisch nächte Block ist in der Regel der den die Festplatte nach dem aktuellen Block am schnellsten erreichen kann. Er kann unter Umständen auch auf einem anderen Platter liegen, wenn das Geschwindigkeitsvorteile bringt.
Aus Sicht des Betriebssystems sind die Blöcke natürlich nicht wild über die Platte verstreut, sondern liegen einer nach dem Anderen. Das Betriebssystem braucht sich auch nicht dafür zu interessieren wie die Platte die Daten intern organisiert.
Der Wechsel zwischen zwei Plattern muss sich nicht zwangsläufig negativ auf die Leseperformance auswirken, da dieser sogar schneller sein kann, wenn der Kopf nicht neu positioniert werden muss als wenn man den Kopf innerhalb eines Platters über einen großen Bereich verschieben muss.
Um nochmal auf den Cache zurückzukommen. Ein enormer Vorteil eines Festplattencaches liegt darin, daß er schreibenden Zugriff cached. Das heisst, daß Schreibzugriffe verzögert werden, bis keine anderen Festplattenzugriffe mehr statt finden. Dadurch kann ein Schreibzugriff in sehrhoher Geschwindigkeit erfolgen und wird erst dann auf die Magnetscheibe gebannt wenn die Platte Zeit dafür hat.
Warum der Festplattencache bei lesendem Zugriff oft nichts bringt ist dessen doch eher bescheidene Grösse für dieses Unterfangen. Es gibt kaum Applikationen oder Mediendateien die im Festplattencache komplett platz finden würden.
Die einzige Instanz die hier Sinnvoll Cachen könnte ist das Betriebssystem. Das Betriebssystem wüsste natürlich, welche Dateien logisch zusammengehören, da es die Ordnerstruktur des Filesystems einsehen kann. Allerdings gilt natürlich auch hier, daß die Daten nicht schneller gelesen werden können als die Festplatte sie bietet. Ein Cache bringt also auch hier nur Vorteile bei Mehrfachverwendung der Daten.
Das Mehrfachverwendung von Daten in der Regel häufig vorkommt will ich hiermit ja garnicht bestreiten, aber es gibt durchaus Anwendungsfälle mit ständig wechselnden Daten, bzw. Datenmengen die nicht mehr gecached werden können, da sie die Cachegrösse überschreiten.
gruß Thomas
Zuletzt bearbeitet: