-
零複製
鎖定
- 中文名
- 零複製
- 外文名
- Zero-copy
- 又 稱
- 零拷貝
- 本 質
- 一種計算機執行操作
零複製原理
操作系統某些組件(例如驅動程序、文件系統和網絡協議棧)若採用零複製技術,則能極大地增強了特定應用程序的性能,並更有效地利用系統資源。通過使CPU得以完成其他而非將機器中的數據複製到另一處的任務,性能也得到了增強。另外,零複製操作減少了在用户空間與內核空間之間切換模式的次數。
舉例來説,如果要讀取一個文件並通過網絡發送它,傳統方式下每個讀/寫週期都需要複製兩次數據和切換兩次上下文,而數據的複製都需要依靠CPU。通過零複製技術完成相同的操作,上下文切換減少到兩次,並且不需要CPU複製數據。
零複製協議對於網絡鏈路容量接近或超過CPU處理能力的高速網絡尤為重要。在這種網絡下,CPU幾乎將所有時間都花在複製要傳送的數據上,因此將成為使通信速率低於鏈路容量的瓶頸。
零複製硬件實現
零複製程序訪問
數種操作系統都通過特定API支持文件的零複製。
Linux內核通過各個系統調用支持零複製,例如sys/socket.h的sendfile、sendfile64以及splice。它們部分在POSIX中指定,因此也存在於BSD內核或IBM AIX中,部分則是Linux內核API中獨有。
Microsoft Windows通過TransmitFile API支持零複製。
Java輸入流可以通過java.nio.channels支持零複製。FileChannel的transferTo()方法也可以支持零複製(如果底層操作系統支持)。
遠程直接內存訪問(RDMA)協議深度依賴零複製技術。
[2]