Kopyaladığım tüm veriler mi geçiyor yoksa daha doğrudan bir yol var mı?
Kopyaladığım tüm veriler mi geçiyor yoksa daha doğrudan bir yol var mı?
Yanıtlar:
Zor biri! Veriler gerçekte CPU'dan geçmiyor.
Veriler ve kritik 1'ler ve 0'lar yonga setinden veya özel G / Ç çiplerinden ve belleğinden geçer, ancak dosyaları kopyalarken, kopyalama yapma komutu işlemci tarafından çalıştırılır.
Önünüzde bir veri (veri), kollarınız (Chipset / I / O çipi) ve beyninizin (CPU) olduğunu hayal edin. Aslında nesneyi hareket ettirmek için beyninizi kullanmazsınız, beyniniz nesneyi hareket ettirmek için kollarınıza "komutu" uygular.
interruptbir bir IO komut zaman block deviceböyle bir USB bellek gibi gelmiştir tamamlandı . CPU daha sonra kopyalamayı yürütmeye devam eder. Aslında, CPU'nun yaptığı şey ioctlkopyalanacak aygıt sürücülerine chunks(gerçek ad) arabirim oluşturan çekirdek kodunu çalıştırmaktır DMA. CPU ayrıca bir çekirdek kodu yürütme perspektifinden işler asynchronous IOve sync IObiraz farklıdır.
Akıllı kanallara sahip bir ana bilgisayarda cpu, kanallara sadece kopyayı yapmasını söylerdi. Çok verimlidir ve CPU ek yükü ile hızlı büyük yedeklemeler sağlar.
Ne yazık ki, akıllı kanallarımız yok, bu yüzden CPU aşağıdakine benzer bir döngüye giriyor:
her dosya için (dev1); yapmak CreateFile (dev2); copyfilecontent (dev1, dev2); son;
Çok fazla küçük dosya, özellikle aynı dizinde çok fazla dosya olmadığı sürece CPU yükü o kadar yüksek değildir. Dosya oluşturma işlemi genellikle en yüksek ek yüke sahiptir. Diskten diske kopyalama, her diske önceden var olan bir dosya gibi davranır.