[問題] 請問protocol stack data傳遞

看板Programming作者 (一個人在半夜醒來)時間13年前 (2011/03/31 17:05), 編輯推噓2(2012)
留言14則, 5人參與, 最新討論串1/1
假設有 A->B->C 三層 A最上層 C最下層 在此protocol stack中A產生的data會pass給B B將A的data當作payload再加上自己的header再pass給C pseudo code大概是 A_Send(){ B_Send(a_msg); } B_Send(a_msg){ b_msg = b_hdr + a_msg; C_Send(b_msg); } 一般我看到的實作方式好像都是 收到上層資料後配置一塊記憶體 填入header再把上層傳來的memory copy過去 每一層都要做一次 配置記憶體和複製資料 感覺很沒效率 是不是有其他好的方法來解決這種問題? 希望是C語言可以做得到 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.1.252

03/31 20:10, , 1F
應該不可能 因為 A 不知道 C 的存在
03/31 20:10, 1F

03/31 20:11, , 2F
A 只知道訊息丟給 B 會負責傳過去而已
03/31 20:11, 2F

03/31 20:28, , 3F
什麼叫做效率呢? 分層設計的用意是限定範圍,
03/31 20:28, 3F

03/31 20:28, , 4F
使每一層的實作簡單並可以做到局部最大效能,
03/31 20:28, 4F

03/31 20:29, , 5F
這就已經是一種有效率的方式了.
03/31 20:29, 5F
LPH大可能誤會最後一句 C是指C語言 已修改 效率的意思是 A的資料在B會copy一次 到C時屬於A層的資料又會copy一次 同樣的資料 傳幾層就會copy幾次 ※ 編輯: snh 來自: 175.181.245.217 (03/31 20:51)

04/01 00:21, , 6F
很普通
04/01 00:21, 6F

04/01 01:38, , 7F
並不是空間極端省著用就叫作效率,在記憶體
04/01 01:38, 7F

04/01 01:38, , 8F
方面更重要的是顧到資料一致. 你寫個很大
04/01 01:38, 8F

04/01 01:39, , 9F
很難寫的程式維護同一份記憶體空間資料一致,
04/01 01:39, 9F

04/01 01:39, , 10F
倒不如多幾個資料複本,但程式很好寫.
04/01 01:39, 10F

04/01 12:16, , 11F
我的 C 是指最下層....
04/01 12:16, 11F

04/01 20:39, , 12F
to LPH66 那我不太懂您的意思^^
04/01 20:39, 12F

04/01 20:53, , 13F
每一層可以用 傳址,size,到最後才打包
04/01 20:53, 13F

04/04 01:15, , 14F
很多stack有所謂zero-copy, 可以去看看怎
04/04 01:15, 14F
alumi7大 可以給keyword嗎? 謝謝 ※ 編輯: snh 來自: 175.181.245.217 (04/06 21:06)
文章代碼(AID): #1Db4FJu2 (Programming)