Memory mapped - teilweise diskbasierte Algorithmen

8

Gibt es gute Ressourcen oder Bücher für auslaufbare Datenstrukturen, also eine Warteschlange?

Wenn Sie große Objekte speichern, kann es zwar den gesamten Speicher füllen, aber Sie können zum Beispiel die am häufigsten verwendeten Elemente dieser Warteschlangenstruktur im Speicher und den Rest auf der Festplatte behalten (ähnlich wie Paging).

Ähnlich gilt diese Frage für andere Strukturen wie verknüpfte Listen, Arrays, Hashtabellen usw.

    
JH. 03.10.2009, 03:07
quelle

3 Antworten

2

Was Sie suchen, könnte das Thema effizienter I / O-Algorithmen sein. Eine Google-Suche hat keine Bücher für mich ergeben, aber diese Kurs-Seite enthält eine Liste von Artikeln was für Sie relevant sein kann oder nicht.

Sie sollten sich auch die WikiPedia-Seite für B-Bäume ansehen , insbesondere den Abschnitt zu B-Bäume in Dateisystemen .

    
Jørgen Fogh 03.10.2009, 04:10
quelle
10

Es gibt den Buffer Tree (PDF, 0.6 MB) :

  

"... entwickelte eine effiziente externe Prioritätswarteschlange und   Batch-dynamische Versionen des (eindimensionalen) Bereichsbaums   und der Segmentbaum. "

und

  

"... erlauben uns, effiziente Algorithmen für den externen Speicher zu entwickeln   von bekannten internen Algorithmen in einer direkten Art und Weise,   so dass alle I / O spezifischen Teile der Algorithmen sind   versteckt in den Datenstrukturen. "

Es ist das Erwähnte als Teil einer breiteren Behandlung der Thema im frei verfügbaren online Buch " Algorithmen und Datenstrukturen für externen Speicher " von Jeffrey Scott Vitter (PDF, 1 MB).

    
Peter Mortensen 03.10.2009 03:53
quelle
0

Meinen Sie, effiziente plattenbasierte Analogien zu den grundlegenden RAM-basierten Datenstrukturen zu finden (zum Beispiel verknüpfte Listen, Stapel, Warteschlangen, Prioritätswarteschlangen usw.)? Wenn dies der Fall ist, kann die folgende Antwort hilfreich sein oder auch nicht.

Ich bin mir nicht ganz sicher, was Sie zu tun versuchen. Mit Queue meinen Sie eine FIFO-Warteschlange (first in first out) oder eine Prioritätswarteschlange?

Zum Umgang mit FIFO-Warteschlangen und Logging könnten Sie vielleicht in Ringpuffer und Log-Rotation schauen.

Wenn Sie mit dem Zwischenspeichern von Daten im RAM arbeiten, um den Zugriff auf die Festplatte zu minimieren, ist es besser oder nicht besser, dies dem Betriebssystem zu überlassen. Wenn Sie nicht gerade eine Windows-Anwendung entwickeln, ist es vielleicht besser, die Dateien einfach zu lesen und von ihnen auf naive Weise zu schreiben, da das Betriebssystem das Lese- und Schreib-Caching gut genug durchführen sollte. Soweit ich das beurteilen kann, hat Windows schreckliches Lese- / Schreib-Caching (ich kann mich irren).

Vielleicht sehen Sie sich das VFS-Subsystem in Linux an und studieren Ссылка Hilfe, da (denke ich) dies der Teil von Linux ist, der Caching behandelt.

Ich bin kein Experte für Warteschlangen und Caching, aber ich weiß ein paar Dinge darüber. Wenn Sie mehr Details zu dem, was Sie tun möchten, angeben, kann Ihnen vielleicht jemand helfen, die richtige Lösung zu finden.

    
Joey Adams 03.10.2009 03:53
quelle