淺談CPU 指令 內存 硬盤間的關係

日常生活中,我們經常會在電腦磁盤之間的複製粘粘文件,是怎麼實現的呢?

  當我們按下 Ctrl + C 時,CPU 執行 “複製指令” 將硬盤文件的起止地址臨時放到內存中,這時內存並沒有讀取磁盤的所有文件數據。

  當我們按下 Ctrl + V 時,CPU 執行 “粘粘指令” 纔會真正去拷貝文件,將文件起止地址取出,讀取硬盤起止地址的數據到內存中,將內存中的數據,寫入到硬盤新的起止地址裏。

  這個過程看似簡單,但是卻有幾個地方需要仔細去思考的,下面是我自己的幾個自問自答。

如果文件有 100GB,而內存只有 8GB,內存會不會爆掉?

  不會,CPU “複製指令”執行時,總是會先將磁盤的文件讀取到內存的緩存區,再從緩存區寫入到硬盤中。因爲內存的讀寫速度,是硬盤的好幾十萬倍(內存讀寫速率毫微秒級別,硬盤讀寫速率毫秒級別)所以不會出現硬盤等待內存讀取數據再寫入硬盤的情況,看到的進度條,也只是反映硬盤的寫入速率。

既然內存讀寫速率這麼快,那硬盤是不是可以被內存替代?

  不會,硬盤讀寫速率慢,但數據寫入到硬盤後,是持久化存在的,不會因爲關機而導致數據丟失,再次開機時硬盤數據還在。 但是,內存是帶電存儲的,雖然讀寫速率快,但是一旦關機失去電荷,內存中所有的數據將會丟失,內存也不會被硬盤所替代。 同時,內存容量的造價,也比硬盤要昂貴的多。單個硬盤容量超過 1TB 的很常見,但是單個內存容量超過 64GB 的,生活中是很少見的。

“複製指令” 和 “拷貝指令” 在 CPU 內部是真實存在的嗎?

  顯然不是,這裏描述的這兩個 “指令”,其實是 CPU 內部多種指令集協同工作完成的,並不存在這樣的單獨指令,指令一般對應着一條或幾條彙編語言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章