What does the processor do when I copy things from one USB disk to another?

Tricky one! Data doesn't really go through the CPU per se.

Data and the critical 1's and 0's go through the chipset, or dedicated I/O chips and memory, however, when you are copying files, the command to do the copy gets run by the processor.

Imagine having an object in front of you (the data), your arms (Chipset/I/O chip), and your brain (the CPU). You do not actually use your brain to move the object, your brain runs the "command" to your arms to move the object.


The CPU has to run the program that reads the source file and then writes the destination file.

The data that's read will (usually) be read into main memory in chunks, but doesn't actually go through the CPU.


On a mainframe with intelligent channels, the cpu would just tell the channels to do the copy. Very efficient and allows for fast large backups with little CPU overhead.

Unfortunately, we don't have intelligent channels so the CPU ends up in a loop similar to:

for each file(dev1); do 
   createfile(dev2);
   copyfilecontent(dev1, dev2);
end;

The CPU overhead is not that high unless there are lots of small files, especially lots of files in the same directory. The create file operation usually has the highest overhead. Disk to disk copy just treat each disk as a pre-existing file.