Para uma leitura de disco, o fluxo de dados é essencialmente:
- depois que o conjunto de leitura / gravação estiver no cilindro solicitado, a cabeça r / w solicitada é selecionada.
- em cada setor, o ID do setor é lido. Se o número do setor que foi lido corresponder ao número solicitado, os dados do setor serão lidos.
- os dados do setor são lidos como um fluxo de bits serial e convertidos em bytes.
- os bytes do setor são armazenados em um buffer do setor (geralmente SRAM no controlador); esse buffer do setor é distinto do "cache de disco".
- Uma vez lido todo o setor, os dados são validados usando o ECC e, talvez, corrigidos.
- uma vez validados, os dados do setor são transferidos do controlador para o PC host. Nota: a existência desse buffer do setor não é bem conhecida e há informações errôneas generalizadas de que a velocidade de transferência na interface do host (por exemplo, ATA) está vinculada ou limitada pela taxa de bits no cabeçote R / W. Isso é completamente falso, já que essas duas transferências de dados são operações independentes e seqüenciais e não simultâneas.
- Como o PC recebe os dados do controlador de disco através da interface ATA, o PC pode usar E / S programada (a CPU lê repetidamente o registro de dados da porta ATA e copia o valor para a memória de destino) ou DMA (o controlador DMA é configuração para copiar N bytes do registro de dados da porta ATA para um buffer de memória sem intervenção adicional da CPU).
- o "buffer" de memória do PC que recebe os dados pode ser o buffer do aplicativo (ao usar a chamada de sistema de E / S em bloco ) ou pode ser um buffer interno do sistema sob o controle do sistema de arquivos ou até mesmo memória de programa ou de dados se os dados vierem da troca área (ou arquivo de paginação).
Uma gravação no disco é semelhante, exceto que os dados são transferidos do PC para o controlador de disco, o ECC é calculado, o setor solicitado está localizado e os dados são gravados do buffer do setor no prato.
Para crédito extra:
Leia as transferências de " dispersão-coleta ", que usam o encadeamento DMA e uma lista de endereços-memória e comprimentos de buffer. Em vez de um buffer de memória grande e contíguo, uma transferência de "coleta dispersa" permite que o uso de buffers de memória não contíguos seja agregado para a solicitação de E / S do disco.