2017-11-23 7 views

Antwort

2

Kurze Antwort: Dies sind die gleichen.

Weitere Details: Zuerst sehen this post die auf Ihre Frage sehr verwandt ist.

In this article heißt es:

Eine Variante des asynchronen Ansatz oft mit Netzwerk Karten zu sehen ist. Diese Karten erwarten häufig, dass ein Ringpuffer (oft als ein DMA-Ringpuffer bezeichnet) in dem mit dem Prozessor gemeinsam genutzten Speicher eingerichtet wird; Jedes eingehende Paket wird in den nächsten verfügbaren Puffer im Ring platziert und ein Interrupt wird signalisiert. Der Treiber übergibt dann die Netzwerk-Pakete an den Rest des Kernels und legt einen neuen DMA-Puffer in den Ring.

Der DMA-Ring ermöglicht der NIC den direkten Zugriff auf den von der Software verwendeten Speicher. Die Software (NIC-Treiber im Kernel-Fall) weist Speicher für die Ringe zu und ordnet sie dann als DMA-Speicher zu, so dass die NIC weiß, dass sie darauf zugreifen kann. TX-Pakete werden in diesem Speicher von der Software erstellt und von der NIC gelesen und übertragen (normalerweise, nachdem die Software der NIC signalisiert, dass sie mit der Übertragung beginnen sollte). RX-Pakete werden von der NIC in diesen Speicher geschrieben und von der Software gelesen und verarbeitet (normalerweise, nachdem ein Interrupt ausgegeben wurde, um die Arbeit zu signalisieren).

Hoffe, das hilft.

+0

so wird der Ringpuffer im Speicher und nicht im NIC-Speicher zugewiesen, und NIC weiß, wo die Ringe sind. Wie ich weiß, ist das Ringformat hardwarespezifisch und es gibt einige Register in der NIC der Ringposition, so dass die NIC nur den Ring findet und ihn gemäß seinem eigenen Format liest, dann wird er die Pakete finden? – 4va1anch3

+0

Ja, das Format der Daten in den Ringen sollte mit der API zur NIC übereinstimmen. Jeder Anbieter verfügt normalerweise über ein PRM (Programmierhandbuch), in dem erläutert wird, wie die Daten verarbeitet werden sollen. – Tgilgul

+0

Bekam es. Es hilft mir sehr. DANKE! – 4va1anch3

Verwandte Themen