No Linux (e nos Unixes da década de 1980), um dispositivo de armazenamento (geralmente uma partição de disco em algum disco rígido ou em algum SSD ) é um dispositivo de bloco (veja isso ), assim como uma [sub-] sequência de blocos (que é o unidade básica de E / S física ). O tamanho do bloco físico depende do hardware (discos IDE antigos tinham um tamanho de bloco de 512 bytes, novos discos SATA grandes têm um tamanho de bloco de 4Kbytes, leia a wiki Advanced Format ) e quando você cria um sistema de arquivos (por exemplo mkfs
, consulte mke2fs (8)), você pode especificar um tamanho de bloco lógico que é múltiplo (geralmente uma pequena potência de dois, incluindo 1) desse tamanho de bloco físico. Leia também sobre o endereçamento de bloco lógico .
No passado (pense nas estações de trabalho Sun3 da década de 1990), o disco era feito de cilindros com cabeças organizadas em setores (leia a CHS wikipage), com um setor contendo um bloco. Hoje, eles ainda permanecem, mas são um artefato artificial fornecido pelo controlador do disco rígido (o circuito no próprio disco). Em alguns sistemas operacionais, o driver do dispositivo de bloco reagendou e reordenou as solicitações de E / S para minimizar o movimento da cabeça do disco e a latência rotacional .
Dessa forma, um sistema de arquivos pode funcionar com qualquer tipo de dispositivo de armazenamento (disco rígido tradicional, SSD, unidade flash USB etc.), e apenas o driver do dispositivo de armazenamento é alterado.
Sim, mas o mal está nos detalhes (por exemplo, leia sobre TRIM e Write Amplification , específico para SSDs). E os detalhes são importantes, portanto, a implementação real é menos simples que a sua figura. Leia mais sobre sistemas de arquivos (e pense em sistemas de arquivos remotos e em cluster , incluindo SMB e NFS ; leia também sobre o Logical Volume Manager ).
Leia Sistemas operacionais: três peças fáceis (e sua parte de persistência ).
Notar que dispositivos de bloco foram desativados no FreeBSD (na verdade fornecendo uma abstração comum para os caracteres e os dispositivos de bloco). Eu suspeito que, mesmo no Windows, o sistema operacional saiba sobre partições, tamanho do bloco, etc. (mas você deve verificar).
Tudo o que Basile Starynkevitch diz está correto. Vou adicionar um pouco mais. De fato, as unidades de disco eram unidades de "bloco", mas os dispositivos de bloco (e muitos outros dispositivos) eram apresentados de duas formas: "bruta" e "cozida". Os dispositivos brutos podem ser endereçados apenas em blocos com múltiplos de seu tamanho de bloco de armazenamento nativo. Portanto, um dispositivo de disco bruto pode ser lido ou gravado apenas um ou muitos blocos de cada vez, não apenas um byte ou dois. Os dispositivos cozidos adicionaram uma camada que permitiria operações menores, além de vários outros recursos.
Os sistemas de arquivos funcionavam com dispositivos brutos e, portanto, os viam não como uma grande variedade de bytes, mas como uma grande variedade de blocos, como explicava BS.
fonte