Apa yang dilakukan prosesor ketika saya menyalin sesuatu dari satu disk USB ke yang lain?

21

Apakah semua data yang saya salin akan melalui itu atau ada cara lain yang lebih langsung?

Felix Dombek
sumber
Prosesor aktif dan terkendali dengan USB, tetapi tidak dengan firewire (karena kartu tersebut memiliki cpu sendiri)
tobylane

Jawaban:

31

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.

William Hilsum
sumber
1
Metafora yang bagus, @Wil.
Shinrai
4
@ Shinrai - meskipun, itu tidak berdiri jika mereka paranormal! Saya ingin memindahkan objek dengan otak saya!
William Hilsum
Bukankah DMA atau sesuatu memotong CPU?
o0 '.
2
DMA membantu dengan memberikan CPU interruptkapan saja perintah IO ke block device, seperti USB stick, telah selesai . CPU kemudian melanjutkan eksekusi penyalinan. Faktanya, apa yang dilakukan CPU adalah menjalankan ioctlkode- kernel yang berinteraksi dengan driver perangkat untuk menyalin chunks(nama sebenarnya) DMA. CPU juga menangani asynchronous IOdan sync IOsedikit berbeda dari perspektif kernel-code-executing.
Henrik
1
Saya tidak melakukannya untuk perwakilan, hanya suka situs ini dan membantu orang! Saya tidak berpikir itu lebih baik dari dua kalimat, tapi semoga sekarang lebih baik .... jika Anda tidak menyukainya, saya pikir ada hal baru untuk anggota yang lebih rendah, coba edit sendiri!
William Hilsum
5

CPU harus menjalankan program yang membaca file sumber dan kemudian menulis file tujuan.

Data yang dibaca akan (biasanya) dibaca ke dalam memori utama dalam potongan, tetapi tidak benar-benar melewati CPU.

ChrisF
sumber
4

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.

BillThor
sumber
Apa itu saluran cerdas? Bisakah Anda menampilkan cuplikan kode pseudo untuk itu?
Henrik
Saluran cerdas adalah perangkat perangkat keras yang menangani I / O pada mainframe. Saya berharap mereka fungsionalitas terbatas mikrokomputer dalam hak mereka sendiri. Tidak tahu seperti apa kode mereka. Mereka sangat penting ketika mainframe menangani 100 pengguna online dalam memori 8MB. Saya percaya komputer Commodore dulu memiliki CPU kedua dalam sistem disk mereka. Mereka mungkin memiliki fungsi serupa.
BillThor