Là tất cả dữ liệu mà tôi sao chép đi qua nó hoặc có một cách khác trực tiếp hơn?
Là tất cả dữ liệu mà tôi sao chép đi qua nó hoặc có một cách khác trực tiếp hơn?
Câu trả lời:
Mánh khôn! Dữ liệu không thực sự đi qua CPU mỗi lần.
Dữ liệu và 1 và 0 quan trọng đi qua chipset hoặc chip I / O chuyên dụng và bộ nhớ, tuy nhiên, khi bạn đang sao chép tệp, lệnh thực hiện sao chép sẽ được chạy bởi bộ xử lý.
Hãy tưởng tượng có một vật thể trước mặt bạn (dữ liệu), cánh tay của bạn (chip Chipset / I / O) và bộ não của bạn (CPU). Bạn không thực sự sử dụng bộ não của mình để di chuyển đối tượng, bộ não của bạn chạy "mệnh lệnh" đến cánh tay của bạn để di chuyển đối tượng.
interrupt
bất cứ khi nào lệnh IO đến một block device
, chẳng hạn như thanh USB, đã hoàn thành . CPU sau đó tiếp tục thực hiện sao chép. Trong thực tế, những gì CPU đang làm là chạy ioctl
mã hạt nhân có giao diện với trình điều khiển thiết bị để sao chép chunks
(tên thực tế) DMA
. CPU cũng xử lý asynchronous IO
và sync IO
hơi khác so với phối cảnh thực thi mã-nhân.
Trên một máy tính lớn có các kênh thông minh, cpu sẽ chỉ cho các kênh thực hiện sao chép. Rất hiệu quả và cho phép sao lưu lớn nhanh chóng với ít chi phí CPU.
Thật không may, chúng tôi không có các kênh thông minh để CPU kết thúc trong một vòng lặp tương tự như:
cho mỗi tệp (dev1); làm sinh vật (dev2); copyfilecontent (dev1, dev2); kết thúc;
Chi phí hoạt động của CPU không cao, trừ khi có rất nhiều tệp nhỏ, đặc biệt là rất nhiều tệp trong cùng một thư mục. Các hoạt động tạo tập tin thường có chi phí cao nhất. Sao chép đĩa sang đĩa chỉ coi mỗi đĩa là một tệp có sẵn.