從read函式到零拷貝

2021-10-01 23:43:43 字數 392 閱讀 9786

作業系統分為「使用者態」和「核心態」,檔案操作、網路

操作需要涉及這兩種形態的切換,免不了進行資料複製,一台伺服器把本機磁 盤檔案的內容傳送到客戶端 一般分為兩個步驟:

1 ) read(file, tmp buf, len);,讀取本地檔案內容;

2) write(socket, tmp_buf, len);,,將讀取的內容通過網路傳送出去。

tmp_buf是預先申請的記憶體,這兩個看似簡單的操作,實際進行了 4 次數 據複製,分別是:從磁碟複製資料到核心態記憶體,從核心態記憶體複製到使用者 態記憶體(完成了 read(file, tmp_b叫 len));然後從使用者態記憶體複製到網路驅動 的核心態記憶體,最後是從網路驅動的核心態記憶體複製到網絡卡中進行傳輸(完成write(socket, tmp_buf, len)) 。

從巨集函式到內聯函式

巨集函式看起來是乙個函式呼叫,但實際上卻不是,編譯器遇到巨集函式,會進行替換,因此會產生一些難以發現的錯誤。define add x,y x y define max x,y x y x y int add int x,int y void test 在c 中,預處理器不能訪問類的成員,也就是說,預...

sendfile函式 零拷貝

零拷貝 零拷貝技術可以減少資料拷貝和共享匯流排操作的次數,消除通訊資料在儲存器之間不必要的中間拷貝過程,有效地提高通訊效率,是設計高速介面通道 實現高速伺服器和路由器的關鍵技術之一。sendfile include ssize t sendfile int out fd,int in fd,off ...

從傳遞函式到差分方程的轉換

從傳遞函式到差分方程的轉換 我以前提問過 如何把傳遞函式轉換成差分方程 的形式,後來不少人qq問我,我覺得有必要把這些寫出來,其實很簡單的。1 傳遞函式的形式 假設傳遞函式為 g s exp 0.004s 400 s 2 50s 其中 後表示指數,如 2 3 8 4 2 16 在matlab裡面建立...