2012-06-19 13 views
0

我想弄清楚網絡卡如何在Windows中工作,以及如何傳輸數據。有關如何在Windows網卡工作的問題

我有兩個假設。

1.

  1. 數據由網卡接收。
  2. 然後卡將數據放入內部緩衝區,可能是雙緩衝區或環形緩衝區。
  3. 該卡會累積數據,直到達到一定數量爲止,然後發送中斷。
  4. Windows將數據從卡複製到RAM並通知適當的處理程序。

2.

  1. 數據被接收。
  2. 該卡使用DMA將數據放入RAM中。 (DMA是否保證數據不會丟失,或者卡是否仍然需要自己的緩衝區?
  3. DMA將足夠的數據放入RAM後觸發中斷。
  4. Windows收到中斷並將數據複製或暴露給適當的處理程序。

我的假設是否正確?

如果緩衝區已滿,是否有任何來自卡或Windows的消息?

在我的以太網控制器,我可以看到的屬性稱爲「接收緩衝區」和「傳輸緩衝區」我的Windows系統性能,都被設置爲256 這是什麼意思?

在這個問題上有沒有好的文獻?(我的Tanenbaum的現代操作系統,但它沒有具體涉及到Windows。)

回答

1

你的問題涵括三個非常,非常廣泛的議題(至少!):

1)如何做一個Layer 2 (Data Link)硬件設備工作?

2)如何?它與操作系統的network stack

......還有......

3)如何?它與操作系統的內核級device driver

下一個鏈接實際上是180度與你原來的問題相反(API是相對較高的水平,你的問題屬於最低的軟件水平),但它不會傷害到看。爲視角 「是如何工作的」 淨API:

「希望幫助......至少一點點......

PS:

Linux是關於實現網絡堆棧的大量信息:所有內核源代碼和所有設備驅動程序都是完全可用的,並且有很好的文檔記錄。