基于sendfile實作的零拷貝I/O的大致程序??
uj5u.com熱心網友回復:
發出sendfile系統呼叫,導致用戶空間到內核空間的背景關系切換(第一次背景關系切換)。通過DMA將磁盤檔案中的內容拷貝到內核空間緩沖區中(第一次拷貝: hard driver ——> kernel buffer)。然后再將資料從內核空間緩沖區拷貝到內核中與socket相關的緩沖區中(第二次拷貝: kernel buffer ——> socket buffer)。
sendfile系統呼叫回傳,導致內核空間到用戶空間的背景關系切換(第二次背景關系切換)。通過DMA引擎將內核空間socket緩沖區中的資料傳遞到協議引擎(第三次拷貝: socket buffer ——> protocol engine)。
通過sendfile實作的零拷貝I/O只使用了2次用戶空間與內核空間的背景關系切換,以及3次資料的拷貝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279023.html
標籤:Qualcomm開發
