2015-11-11 82 views
1

據我所知,CPU通常比I/O設備(如HDD,網絡,RAM等)更快,所以在複製文件時,瓶頸通常是I/O限制的(對嗎? )。文件複製是否受CPU限制?

如果在某些條件下I/O設備比CPU快(如在虛擬機中),是否有可能使CPU忙於移動數據(如從緩衝區到內核空間,從內核空間到用戶空間) ?然後它會變成CPU限制嗎?

+1

IO設備永遠不會比CPU更快,除非它們有自己的CPU,無論哪種方式,它們仍然必須從CPU發出命令。此外,在複製文件時,CPU只會將命令發送到IO設備,但不會執行復制。此外,VM將被存儲在IO設備上並加載到RAM中,並且RAM永遠不會比CPU更快。 –

+0

通常,I/O不是CPU密集型的,因爲數據傳輸是由I/O處理器(例如DMA控制器)執行的。如果您希望文件副本受CPU限制,則使用PIO編程的輸入/輸出執行傳輸。 – sawdust

回答

3

這取決於程序和運行程序的條件。 複製數據的速度不太可能受到CPU速度的限制。但是,例如,如果計算機運行其他使用CPU密集型且優先級高於執行副本的程序的程序,則情況可能如此。

最常見的瓶頸將是持久性存儲介質速度(例如硬盤驅動器) 然後可用的RAM量。 然後CPU beeing不可用。

當且僅當然,一個IO設備如此超快以至於超過了CPU的速度。那麼情況就是這樣。然而,這是一種假設情況,因爲CPU通常不會執行副本本身,而是命令其他硬件執行此操作。 而在實際系統中,可用於IO設備的帶寬遠遠低於CPU和RAM帶寬。

如果高效地完成複製,將RAM數據複製到HDD不應該強調CPU。 來自RAM和北橋的數據可以通過SouthBridge複製到硬盤。 另請參閱here

如果複製效率低下,當然程序可以讀取每一個字節與CPU並複製它。此外,正如人們可以推斷的那樣,答案也取決於系統的硬件和體系結構。

+0

因此,當從RAM寫入某個日期到磁盤(例如:1GB數據)時,這些1GB數據是否會由CPU處理? – Porcelain

+0

上面的問題是相對於你提到的「CPU通常不是硬件來做的」,謝謝。 – Porcelain

+0

還是隻有一個CPU命令讓其他硬件完成1GB複製作業? – Porcelain