Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams

Diskutiere Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams im Java Basics - Anfänger-Themen Forum; Hey, Ich weiß das ein Buffer die Daten erst allesamt sammelt und erst ab einer gewissen Byte zahl auf z.B. die Festplatte überträgt. Jedoch warum...

  1. needInput
    needInput Neues Mitglied
    Hey,
    Ich weiß das ein Buffer die Daten erst allesamt sammelt und erst ab einer gewissen Byte zahl auf z.B. die Festplatte überträgt.
    Jedoch warum ist es so ineffizient den Buffer weg zu lassen?
    Sprich wie sehen die Schritte aus die der Computer macht um etwas aus einem Programm auf die Festplatte zu bringen?
     
  2. Java online lernen
  3. mihe7
    mihe7 Bekanntes Mitglied
    Kurz: der Buffer befindet sich im RAM und ist damit x-fach schneller als ein externer Speicher.
     
  4. needInput
    needInput Neues Mitglied
    Danke für die Antwort aber mich würde auch die lange Version Interessieren:)
     
  5. horstiii2
    horstiii2 Bekanntes Mitglied
    Zudem kommt dass alle Vorgänge genau gleichbleibend sind, bis auf den zusätzlichen (distinktiven) Zwischenspeicher....
     
  6. httpdigest
    httpdigest Bekanntes Mitglied
    Naja, weil eben nicht nur Move-/Kopieroperationen im RAM-Speicher stattfinden müssen, sondern noch viele andere Dinge:
    - Aufruf einer Systemfunktion wie etwa WriteFile (Win32)
    - Diese wiederum benutzt den für den FILE-Descriptor zuständigen Treiber des Laufwerkes, und führt dort auch Funktionen aus
    - Der Treiber wiederum muss mit dem Speicherbus des Systems (z.B. SCSI) reden, um ihn anzuweisen, Daten von einer physischen Arbeitsspeicher-Adresse zum Laufwerk zu senden
    - Das Laufwerk wiederum hat einen Controller, der die Daten entgegennimmt und dann entsprechend die Hardware instruiert, diese zu speichern oder erstmal in einem internen flüchtigen Cache abzulegen. Davor kommt auch noch das Warten auf noch vorher auszuführende I/O Schreibe-/Leseoperationen. Dann das Alloziieren (falls noch nicht alloziiert) eines entsprechenden Bereiches auf der Festplatte und dann das Warten, dass die Hardware bereit ist, diesen Bereich zu schreiben (z.B. bei HDD Warten, dass die Scheibe sich an der entsprechenden Stelle befindet).
    - Dann das physische Schreiben der Daten
    - Dann dem SCSI Controller Bescheid sagen, dass alles geschrieben wurde, oder zumindest, dass die Daten im Cache des Festplattencontrollers angekommen sind
    - Dann muss der SCSI Controller dem auf die I/O Operation wartenden Thread der CPU Bescheid sagen (z.B. per Hardware-Interrupt)

    Es gibt zudem noch mehrere Möglichkeiten, wie eine Datei für ein Programm aussehen kann. Einmal eben als abstrakter FILE Descriptor mit System-Operationen wie fwrite/fread, etc. oder als Memory-Mapped File. In letzterem Fall sieht dann für das Programm die Datei tatsächlich so aus wie virtueller Arbeitsspeicher und man kann mit Speicherschreib-/leseoperationen darauf zugreifen. Für diesen Fall lese z.B. https://ayende.com/blog/162791/on-memory-mapped-files

    Es sind also seeeehr viel mehr Operationen beteiligt, wenn man auf eine externe Festplatte speichern möchte, als wenn du einfach nur Arbeitsspeicher hinundherkopierst.
     
    needInput und mihe7 gefällt das.
  7. horstiii2
    horstiii2 Bekanntes Mitglied
    Von einer externen Festplatte ist aber nicht ausschließlich die Rede gewesen.... (dabei sind die Vorgänge auch fast gleich) :(
     
  8. mihe7
    mihe7 Bekanntes Mitglied
    Sorry, das extern habe ich ins Spiel gebracht. Apropos Spiel: es spielt letztlich keine Rolle. Wenn man alle Buffer wegließe, würde es bei einer rotierenden Platte bedeuten, für jedes zu schreibende/lesende Byte darauf warten zu müssen, bis gerade der richtige Sektor vorbeikommt und das ist weder intern noch extern gut.
     
  9. httpdigest
    httpdigest Bekanntes Mitglied
    Ja, ob nun "extern" (Platte hängt an einem SCSI-Kabel aus dem Gehäuse raus - wie bei mir :) oder Platte hängt an einem USB-Kabel) oder Platte ist halt intern verbaut (woran auch immer), macht ja nun wirklich keinen Unterschied für die Betrachtung.
     
  10. temi
    temi Aktives Mitglied
    Das ist ja voll Retro!:)
     
    mihe7 gefällt das.
  11. horstiii2
    horstiii2 Bekanntes Mitglied
    oder Vintage :oops:
     
  12. Java online lernen
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams - Ähnliche Themen

Was passiert wenn man die App (gewaltsam) schließt
Was passiert wenn man die App (gewaltsam) schließt im Forum Mobile Geräte
ExecutorService.invokeAll -- was passiert wenn einige Tasks schon ausgefuehrt wurden?
ExecutorService.invokeAll -- was passiert wenn einige Tasks schon ausgefuehrt wurden? im Forum Allgemeine Java-Themen
Was passiert, wenn eine konkrete Klasse von generische Klasse erbt?
Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? im Forum Java Basics - Anfänger-Themen
Was passiert, wenn Zähler über Integer Max läuft?
Was passiert, wenn Zähler über Integer Max läuft? im Forum Java Basics - Anfänger-Themen
Was passiert wenn eine Datenbankverbindung unterbricht
Was passiert wenn eine Datenbankverbindung unterbricht im Forum Datenbankprogrammierung
Thema: Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams