Was passiert unter der Haube, wenn Sie einen Code zum Abhören von einem Port aus schreiben, z. B. 80? Ist die Methode, mit der das Betriebssystem zuhört, Pull oder Push? Mit anderen Worten, überprüft das Betriebssystem diesen Port beispielsweise alle x Millisekunden?
Ich verstehe es einfach nicht. Je mehr ich darüber nachdenke, desto mehr scheint es mir, dass es nichts anderes als Ziehen sein kann.
Ich meine, selbst wenn das Betriebssystem eine Rückruffunktion eingestellt hat, sollte dennoch etwas verstehen, dass neue Informationen eingetroffen sind, um diese Rückruffunktion aufzurufen. Dass etwas noch Pull verwenden sollte, um das Eintreffen der neuen Daten zu verstehen.
Wie hört ein Port zu?
quelle
OK, ich bin kein Ethernet-Hardware-Ingenieur, aber ich denke, ich kann Ihre Frage beantworten. Wenn Sie Code schreiben, um von einem Port abzuhören, geschieht Folgendes:
Ihre Intuition, dass "Ziehen" auftritt, ist also auf der niedrigsten Hardwareebene vielleicht richtig ... die Ethernet-Schaltung "zieht", was der Spannungspegel in bestimmten Intervallen ist. (Aber der Begriff "Ziehen" kann geradezu falsch sein, wenn man auf Betriebssystemebene spricht.) Wenn Sie über Spannungspegel sprechen und genau wissen, wie Dinge ausgelöst werden, werden natürlich weder die elektrische noch die optische Physik die Begriffe "Push" verwenden "oder" ziehen "zur Beschreibung elektrischer Felder und Potentiale, aber nehmen wir an, wir sind alle Programmierer, hier keine Physiker. :-)
quelle
Der Code, der einen Port abhört, wartet nur auf eine Nachricht vom Netzwerk.
Immer wenn der Ethernet-Chip eine Nachricht empfängt, wird eine Unterbrechung ausgelöst. Der Kernel behandelt diese Unterbrechung und leitet die Nachricht an den Netzwerktreiber weiter. Diese Nachricht durchläuft den TCP / IP-Stapel und wird entweder herausgefiltert oder an den Code übergeben, der den Port abhört.
quelle
Die Ethernet-Hardware ist diejenige, die das physische Kabel (oder das drahtlose Kabel) abfragt. Wenn es einen "guten" Grund gibt, wird der Prozessor unterbrochen. Der Prozessor wird unseren richtigen Treiber ermitteln, der den Interrupt behandelt. Der Interrupt-Handler behandelt das Ereignis (Lese- / Schreibdaten). Der Treiber weist die Os außerdem an, alle wartenden Threads zu aktivieren.
quelle