ネットワーク カードが Windows でどのように機能し、データがどのように中継されているかを理解しようとしています。
私には2つの仮説があります。
1.
- データはネットワーク カードによって受信されます。
- 次に、カードはデータを内部バッファー (おそらくダブル バッファーまたはリング バッファー) に入れます。
- カードは、ある量に達するまでデータを蓄積し、その時点で割り込みを送信します。
- Windows はカードから RAM にデータをコピーし、適切なハンドラーに通知します。
2.
- データが受信されます。
- カードは DMA を使用してデータを RAM に格納します。( DMA はデータが失われないことを保証しますか、それともカードにはまだ独自のバッファが必要ですか? )
- カードは、RAM に十分なデータを入れると割り込みを発生させます。
- Windows は割り込みを受け取り、データを適切なハンドラーにコピーまたは公開します。
私の仮説のどちらかが正しいですか?
バッファがいっぱいの場合、カードまたは Windows から何かメッセージはありますか?
イーサネット コントローラーの Windows システム プロパティで、"Receive buffers" と "Transmit buffers" というプロパティを確認できます。どちらも 256 に設定されて います。これはどういう意味ですか?
このテーマに関する優れた文献はありますか? (私は Tanenbaum の最新のオペレーティング システムを持っていますが、特に Windows とは関係ありません。)