Est-ce que toutes les données que je copie passent par là ou y a-t-il un autre moyen plus direct?
Est-ce que toutes les données que je copie passent par là ou y a-t-il un autre moyen plus direct?
Réponses:
Tricky one! Les données ne passent pas vraiment par le CPU en soi.
Les données et les 1 et 0 critiques passent par le chipset, ou les puces d'E / S dédiées et la mémoire, cependant, lorsque vous copiez des fichiers, la commande pour effectuer la copie est exécutée par le processeur.
Imaginez avoir un objet devant vous (les données), vos bras (chipset / puce d'E / S) et votre cerveau (le CPU). Vous n'utilisez pas réellement votre cerveau pour déplacer l'objet, votre cerveau exécute la "commande" à vos bras pour déplacer l'objet.
interrupt
fois qu'une commande d'E / S sur block device
, telle qu'une clé USB, est terminée . La CPU continue ensuite d'exécuter la copie. En fait, ce que fait le CPU, c'est d'exécuter du ioctl
code noyau qui s'interface avec les pilotes de périphérique pour copier chunks
(le nom réel) DMA
. Le CPU gère également asynchronous IO
et sync IO
légèrement différent d'une perspective d'exécution du code du noyau.
Sur un ordinateur central avec des canaux intelligents, le processeur indiquerait simplement aux canaux de faire la copie. Très efficace et permet des sauvegardes rapides et volumineuses avec peu de temps processeur.
Malheureusement, nous n'avons pas de canaux intelligents, donc le processeur se retrouve dans une boucle similaire à:
pour chaque fichier (dev1); faire createfile (dev2); copyfilecontent (dev1, dev2); fin;
Le temps système n'est pas si élevé sauf s'il y a beaucoup de petits fichiers, en particulier beaucoup de fichiers dans le même répertoire. L'opération de création de fichier présente généralement la surcharge la plus élevée. La copie de disque à disque traite simplement chaque disque comme un fichier préexistant.