Apakah semua data yang saya salin akan melalui itu atau ada cara lain yang lebih langsung?
Apakah semua data yang saya salin akan melalui itu atau ada cara lain yang lebih langsung?
Jawaban:
Yang rumit! Data tidak benar-benar melalui CPU per se.
Data dan 1's kritis dan 0's pergi melalui chipset, atau chip I / O dan memori khusus, namun, ketika Anda menyalin file, perintah untuk melakukan copy dijalankan oleh prosesor.
Bayangkan memiliki objek di depan Anda (data), lengan Anda (chipset / chip I / O), dan otak Anda (CPU). Anda tidak benar-benar menggunakan otak Anda untuk memindahkan objek, otak Anda menjalankan "perintah" ke lengan Anda untuk memindahkan objek.
interrupt
kapan saja perintah IO ke block device
, seperti USB stick, telah selesai . CPU kemudian melanjutkan eksekusi penyalinan. Faktanya, apa yang dilakukan CPU adalah menjalankan ioctl
kode- kernel yang berinteraksi dengan driver perangkat untuk menyalin chunks
(nama sebenarnya) DMA
. CPU juga menangani asynchronous IO
dan sync IO
sedikit berbeda dari perspektif kernel-code-executing.
Pada mainframe dengan saluran cerdas, cpu hanya akan memberitahu saluran untuk melakukan penyalinan. Sangat efisien dan memungkinkan untuk backup besar cepat dengan sedikit overhead CPU.
Sayangnya, kami tidak memiliki saluran cerdas sehingga CPU berakhir dalam satu lingkaran yang mirip dengan:
untuk setiap file (dev1); melakukan createfile (dev2); copyfilecontent (dev1, dev2); akhir;
Overhead CPU tidak setinggi itu kecuali ada banyak file kecil, terutama banyak file dalam direktori yang sama. Operasi pembuatan file biasanya memiliki overhead tertinggi. Salinan ke disk hanya memperlakukan setiap disk sebagai file yang sudah ada sebelumnya.