O gerenciamento de memória do Windows é uma coisa complexa. Como você vê, tem um comportamento diferente com dispositivos diferentes.
Os diferentes sistemas operacionais têm gerenciamento de memória diferente.
Sua pergunta foi muito interessante. Estou compartilhando uma página do MSDN que explica uma parte do gerenciamento de memória no Windows e, mais especificamente, < strong> "Arquivos mapeados"
É uma documentação para desenvolvedores de software, mas o Windows também é um software.
One advantage to using MMF I/O is that the system performs all data transfers for it in 4K pages of data. Internally all pages of memory are managed by the virtual-memory manager (VMM). It decides when a page should be paged to disk, which pages are to be freed for use by other applications, and how many pages each application can have out of the entire allotment of physical memory. Since the VMM performs all disk I/O in the same manner—reading or writing memory one page at a time—it has been optimized to make it as fast as possible. Limiting the disk read and write instructions to sequences of 4K pages means that several smaller reads or writes are effectively cached into one larger operation, reducing the number of times the hard disk read/write head moves. Reading and writing pages of memory at a time is sometimes referred to as paging and is common to virtual-memory management operating systems.
Infelizmente, não é fácil descobrir como a Microsoft implementa o Read / Write - não é um código aberto.
Mas sabemos que tem situações muito diferentes:
From To
==================
SSD HDD
HDD Busy SSD ??
NTFS FAT
NTFS ext4
Network HDD
IDE0slave IDE0master // IDE cable support disk to disk transfer.
IDE SATA // in this case you have separated device controllers.
Você começa o ponto ... Um disco rígido pode ser bussy, os sistemas de arquivos podem ser diferentes (ou pode ser o mesmo) ...
Por exemplo: dd
comando no linux copiando dados "byte by byte" - É extremamente rápido (porque os chefes de ambos os HDDs movem a sincronização), mas se os sistemas de arquivos são diferentes (com diferentes tamanhos de bloco, por exemplo) - os dados copiados não serão legíveis porque o sistema de arquivos tem uma estrutura diferente.
Sabemos que a RAM é muito mais rápida que o HDD. Então, se tivermos que fazer alguma análise de dados (para ajustar o sistema de arquivos de saída), será melhor ter esses dados na RAM.
Imagine também que você copia o arquivo diretamente de para.
O que está acontecendo se você sobrecarregar a fonte com outros fluxos de dados? E o destino?
E se você quase não tem RAM livre neste momento?
...
Apenas engenheiros da Microsoft sabem.