Unter Linux (und 1980er Jahre Ära Unixes), ein Speichergerät (sehr oft eine Festplattenpartition auf einiger Festplatte , oder auf einem SSD ) ist ein Blockgerät (siehe diese ) , so ist eine [Sub-] Folge von Blöcken (das ist die Grundeinheit der physischen E / A). Die physische Blockgröße hängt von der Hardware ab (alte IDE-Festplatten hatten eine Blockgröße von 512 Byte, neue große SATA- Festplatten haben eine Blockgröße von 4 KB, lesen Sie die Wikipage Advanced Format ) und wann Sie ein Dateisystem erstellen ( mkfs
siehe z. B. mke2fs) (8)) Sie können eine logische Blockgröße angeben, die ein Vielfaches (häufig eine kleine Zweierpotenz, einschließlich 1) dieser physischen Blockgröße ist. Lesen Sie auch über die Adressierung logischer Blöcke .
In der Vergangenheit (denken Sie an Sun3-Workstations der neunziger Jahre) bestand die Platte aus Zylindern mit Köpfen, die in Sektoren organisiert waren ( siehe CHS- Wikipage), wobei ein Sektor einen Block enthielt. Diese bleiben bis heute erhalten, sind jedoch ein künstliches Artefakt, das vom Festplatten-Controller (der Schaltung auf der Festplatte selbst) bereitgestellt wird. In einigen Betriebssystemen hat der Blockgerätetreiber E / A-Anforderungen neu geplant und angeordnet, um die Bewegung des Plattenkopfs und die Latenz bei der Drehung zu minimieren .
Auf diese Weise kann ein Dateisystem mit jedem Typ von Speichergerät (herkömmliche Festplatte, SSD, USB-Flash-Laufwerk usw.) zusammenarbeiten, und nur der Gerätetreiber für das Speichergerät wird geändert.
Ja, aber das Böse liegt im Detail (z. B. Informationen zu TRIM und Write Amplification , speziell für SSDs). Und die Details sind wichtig, so dass die tatsächliche Implementierung weniger einfach als Ihre Figur ist. Lesen Sie mehr über Dateisysteme (und denken Sie an Cluster- und Remote-Dateisysteme, einschließlich SMB und NFS ; lesen Sie auch über Logical Volume Manager ).
Lesen Sie Betriebssysteme: Drei einfache Teile (und sein Persistenzteil ).
Beachten Sie, dass Block-Geräte in FreeBSD nicht mehr vorhanden sind (und tatsächlich eine gemeinsame Abstraktion für Zeichen- und Block-Geräte bieten). Ich vermute, dass auch unter Windows das Betriebssystem über Partitionen, Blockgröße usw. Bescheid weiß (aber Sie sollten dies überprüfen).
Alles, was Basile Starynkevitch sagt, ist richtig. Ich werde ein bisschen mehr hinzufügen. Tatsächlich waren Plattenlaufwerke "Block" -Laufwerke, aber Blockgeräte (und viele andere Geräte) wurden in zwei Formen angeboten: "roh" und "gekocht". Raw-Geräte konnten nur in Blöcken adressiert werden, die ein Vielfaches ihrer nativen Speicherblockgröße aufwiesen. Ein Raw-Disk-Gerät kann also nur einen oder mehrere Blöcke gleichzeitig lesen oder schreiben, nicht nur ein oder zwei Bytes. Gekochte Geräte fügten eine Schicht hinzu, die solche kleineren Operationen sowie verschiedene andere Merkmale ermöglichen würde.
Dateisysteme arbeiteten mit Raw-Geräten und sahen sie daher nicht als großes Array von Bytes, sondern als großes Array von Blöcken, wie BS erklärte.
quelle