Porque parece que seria mais eficaz para o sistema
para transferir os dados gravados para a memória e, em seguida, quando é completamente
escrito para transferir as coisas de volta para o disco.
Nos sistemas operacionais modernos, o acesso a arquivos é armazenado em buffer. Seu programa grava em uma parte da memória que é mantida pelo sistema operacional e, quando essa área fica cheia, ou quando você fecha o arquivo, o buffer é gravado no disco. Dessa forma, você pode escrever vários gigabytes de dados aleatórios em um arquivo se quiser, mas não consome muita memória enquanto o faz. Ao mesmo tempo, o subsistema de disco é livre para fazer outras coisas enquanto seu programa está escrevendo alguns bytes de cada vez.
Em qualquer caso, como o disco recupera dados se o seu programa
grava diretamente no disco, ou se o arquivo finalizado está no
processo de ser copiado pelo sistema para vários locais no
disco?
Depende do sistema operacional e do sistema de arquivos específico. Frequentemente, os dados são gravados em um novo arquivo no disco. Quando o programa fecha o arquivo, o buffer é liberado e o diretório é atualizado para apontar para o novo arquivo, em vez do antigo, que pode ser excluído posteriormente. Isso evita corrupção de dados se o sistema falhar durante a gravação - a alteração do diretório no último momento cria a ilusão de gravações "atômicas".
Você pode querer ler sobre sistemas de arquivos registrados e sistemas de arquivos transacionais .
Outras estratégias também são possíveis. Livros inteiros estão disponíveis em sistemas de arquivos e tolerância a falhas.
Finalmente, às vezes o sistema de arquivos não pode recuperar seu arquivo. Às vezes não pode se recuperar de jeito nenhum. As estratégias que mencionei acima são respostas aos tipos de problemas que você está perguntando e, até onde eu sei, elas são muito eficazes em manter o disco em um estado consistente. Os sistemas de arquivos mais antigos não eram tão bons, e se você perdesse energia apenas quando o disco estivesse sendo gravado, o arquivo ou o disco inteiro poderia ficar comprometido. Costumava haver um grande mercado para utilitários de reparo de disco, como o Norton Disk Doctor. Esse mercado parece ter diminuído com implementações de sistema operacional mais confiáveis, mas alguns desses produtos ainda estão disponíveis.